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 錯誤完全相同。