Lint 概述
Flow 包含一个 Lint 框架,可以告诉你更多信息,不仅仅是类型错误。此框架高度可配置,以便向你展示你想要的信息并隐藏你不需要的信息。
在 .flowconfig
中配置 Lint
Lint 设置可以在 .flowconfig
的 [lints]
部分中指定,作为 rule=severity
对的列表。这些设置全局应用于整个项目。
[lints]
all=warn
untyped-type-import=error
sketchy-null-bool=off
从 CLI 配置 Lint
Lint 设置可以使用 Flow 服务器命令的 --lints
标志指定,作为 rule=severity
对的逗号分隔列表。这些设置全局应用于整个项目。
flow start --lints "all=warn, untyped-type-import=error, sketchy-null-bool=off"
使用注释配置 Lint
Lint 设置可以在文件中使用 flowlint
注释指定。这些设置应用于文件的某个区域、单行或部分行。有关更多详细信息,请参阅 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
注释进行细粒度的 Lint 控制,使用 --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: 警告是 Lint 框架引入的一个新的严重性级别。它们在几个方面与错误不同
- 警告不会影响 Flow 的退出代码。如果 Flow 发现警告但没有错误,它仍然返回 0。
- 默认情况下,警告不会在 CLI 上显示,以避免出现大量输出。可以通过将
--include-warnings
标志传递给 Flow 服务器或 Flow 客户端,或在.flowconfig
中设置include_warnings=true
来启用 CLI 警告。这对于想要一次查看所有项目警告的较小项目来说很好。
error: 严重性为 error
的 Lint 与任何其他 Flow 错误的处理方式完全相同。