跳到主要內容

Linting 概述

Flow 包含一個 Linting 架構,它可以告訴您不只是類型錯誤。此架構高度可配置,以便向您顯示您想要的資訊並隱藏您不需要的資訊。

.flowconfig 中設定 Lints

Lint 設定可以在 .flowconfig[lints] 區段中指定為 rule=severity 配對的清單。這些設定會全域套用於整個專案。

[lints]
all=warn
untyped-type-import=error
sketchy-null-bool=off

從 CLI 設定 Lints

Lint 設定可以使用 Flow 伺服器指令的 --lints 旗標指定,作為 rule=severity 配對的逗號分隔清單。這些設定會全域套用於整個專案。

flow start --lints "all=warn, untyped-type-import=error, sketchy-null-bool=off"

使用註解設定 Lints

可以使用 flowlint 註解在檔案內指定 Lint 設定。這些設定會套用至檔案中的區域、單一行或部分行。如需更多詳細資料,請參閱 Flowlint 註解

1// flowlint sketchy-null:error2const x: ?number = 0;3
4if (x) {} // Error
5 6// flowlint-next-line sketchy-null:off7if (x) {} // No Error8 9if (x) {} /* flowlint-line sketchy-null:off */ // No Error10 11// flowlint sketchy-null:off12if (x) {} // No Error13if (x) {} // No Error
4:5-4:5: Sketchy null check on number [1] which is potentially 0. Perhaps you meant to check for null or undefined [2]? [sketchy-null-number]

Lint 設定優先順序

flowlint 註解中的 Lint 設定優先順序最高,其次是 --lints 旗標中的 Lint 規則,最後是 .flowconfig。此順序讓您可以使用 flowlint 註解進行細緻的 linting 控制,使用 --lints 旗標嘗試新的 lint 設定,並使用 .flowconfig 進行穩定的專案範圍設定。

--lints 旗標和 .flowconfig 中,較下方的規則會覆寫較上方的規則,讓您可以撰寫類似下列內容

[lints]
# warn on all sketchy-null checks
sketchy-null=warn
# ... except for booleans
sketchy-null-bool=off

lint 設定剖析器相當智慧,如果撰寫了多餘的規則、會被完全覆寫的規則或未使用的 flowlint 抑制,剖析器會阻止您。這應該可以防止意外錯誤設定 lint 規則。

嚴重性等級和意義

off:忽略 lint。將 lint 設定為 off 類似於使用抑制註解抑制型別錯誤,但更細緻。

warn:警告是 linting 架構引入的新嚴重性等級。它們在某些方面與錯誤不同

  • 警告不會影響 Flow 的結束代碼。如果 Flow 找到警告但沒有錯誤,它仍會傳回 0。
  • 預設情況下,不會在 CLI 上顯示警告,以避免過多訊息。可以透過將 --include-warnings 旗標傳遞至 Flow 伺服器或 Flow 客戶端,或在 .flowconfig 中設定 include_warnings=true 來啟用 CLI 警告。這對於想要一次查看所有專案警告的小型專案來說很好。

error:嚴重性為 error 的 Lints 會與任何其他 Flow 錯誤完全相同。