跳转到内容

禁用检查

Biome 分析器是 linterassist 的基础;事实上,这两个工具有很多相似之处。

其中,它们共享同一个禁用检查引擎,这意味着你可以用同样的方式禁用 lint 规则和 assist 操作。

通过禁用检查,可以为特定代码行、代码范围或整个文件关闭检查或操作。

禁用检查可以通过 禁用检查注释 来实现。

禁用检查注释具有以下格式:

// biome-ignore lint: <说明>
// biome-ignore assist: <说明>
// biome-ignore syntax: <说明>
// biome-ignore lint/suspicious: <说明>
// biome-ignore lint/suspicious/noDebugger: <说明>
// biome-ignore lint/suspicious/noDebugger(foo): <说明>
// biome-ignore-all lint: <说明>
// biome-ignore-start lint: <说明>
// biome-ignore-end lint: <说明>

让我们分解一下:

  • biome-ignorebiome-ignore-allbiome-ignore-startbiome-ignore-end 都是禁用检查注释的起始部分。
  • 空格后面是禁用检查注释的 类别。可以是 lintassistsyntax
  • 类别后面可以跟可选的组,或组和名称,用斜杠分隔。例如,/suspicious/suspicious/noDebugger。指定得越详细,你的禁用检查就越具体(即有针对性)。
  • 有些规则甚至允许你在禁用检查时指定值。这些值可以在括号中指定,例如:(foo)。请参考规则文档以查看规则是否支持带值的禁用检查。
  • <说明> 说明禁用该规则的原因。

如果你不确定规则/操作的确切类别,可以参考它们的文档页面并使用它们的 诊断类别

它们为代码的 下一行 禁用 lint 规则。

在下面的示例中,禁用检查注释 biome-ignore lint/suspicious/noDebugger: <说明> 将禁用第 2 行的 debugger; 语句,但第 3 行的 debugger 仍会触发诊断:

file.js
// biome-ignore lint/suspicious/noDebugger: <说明>
debugger;
debugger;

它们为整个文件禁用 lint 规则。它们必须放在 文件顶部,并且必须以 biome-ignore-all 开头。

当你想要为 特定文件 禁用某些 lint 规则,而又不想依赖单一的配置覆盖来实现时,这些禁用检查注释非常有用。

在下面的示例中,禁用检查注释 biome-ignore-all lint/suspicious/noDebugger: <说明> 将为 generated.js 中的所有行禁用 lint 规则:

generated.js
// biome-ignore-all lint/suspicious/noDebugger: <说明>
debugger;
debugger;

当顶层禁用检查注释不在文件顶部时,它被视为 未使用,Biome 将发出类别为 suppression/unused 的诊断。

它们在文件的特定 范围内 禁用 lint 规则,从开始注释所在的行开始,直到结束注释所在的行结束。

要标记范围禁用检查的开始,禁用检查注释必须以 // biome-ignore-start 开头。要标记结束,禁用检查注释必须以 // biome-ignore-end 开头。

下面的示例将为第 2 行和第 3 行禁用规则 lint/suspicious/noDoubleEquals,但第 5 行将触发诊断:

// biome-ignore-start lint/suspicious/noDoubleEquals: <说明>
a == b;
c == d;
// biome-ignore-end lint/suspicious/noDoubleEquals: <说明>
f == g;

范围禁用检查也可以重叠。请看下面的示例:

debugger;
// biome-ignore-start lint/suspicious/noDebugger: <说明>
debugger;
// biome-ignore-start lint/suspicious/noDoubleEquals: <说明>
a == b;
c == d;
// biome-ignore-end lint/suspicious/noDoubleEquals: <说明>
debugger;
f == g;
// biome-ignore-end lint/suspicious/noDebugger: <说明>

在以上代码中:

  • 第 1 行的 debugger 语句将触发诊断,因为没有禁用检查注释禁用它。
  • 第 2 行的 // biome-ignore-start lint/suspicious/noDebugger: <说明> 从第 3 行开始禁用 noDebugger
  • 第 4 行的 // biome-ignore-start lint/suspicious/noDoubleEquals: <说明> 从第 5 行开始禁用 noDoubleEquals
  • 第 7 行的 // biome-ignore-end lint/suspicious/noDoubleEquals: <说明> 终止了第 4 行注释开始的 noDoubleEquals 禁用。
  • 第 8 行的 debugger 语句由于第 2 行的禁用检查注释 不会 触发诊断。
  • 第 9 行的 f == g 语句触发诊断,因为 noDoubleEquals 规则不再被禁用。
  • 第 10 行的 // biome-ignore-end lint/suspicious/noDebugger: <说明> 终止了第 2 行注释开始的 noDebugger 禁用。