コンテンツにスキップ

抑制

Biomeのアナライザーは、リンターアシストの基盤であり、これらの2つには多くの類似点があります。

例えば、どちらも同じ抑制エンジンを使用しており、リントルールを抑制するのと同じ方法でアシストアクションを抑制できます。

抑制を使うと、コードの特定の行、範囲、またはファイル全体に対してリントルール(またはアクション)を無効にすることができます。

抑制には、抑制コメントを使用します。

抑制コメントは以下の形式を持ちます。

// 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))で指定します。ルールが値による抑制をサポートしているかどうかは、ルールのドキュメントを参照します。
  • <説明>には、ルールを無効にした理由の説明を含めます。

ルールまたはアクションの正確なカテゴリがわからない場合は、ドキュメントを参照してその診断カテゴリを指定します。

インライン抑制は、コードの次の行に対してリントルールを無効にします。

以下の例では、抑制コメントbiome-ignore lint/suspicious/noDebugger: 理由は2行目のdebuggerステートメントの診断を抑制しますが、3行目のdebuggerはこれまでと同様に診断が出力されます。

file.js
// biome-ignore lint/suspicious/noDebugger: 理由
debugger;
debugger;

トップレベル抑制は、ファイル全体に対してリントルールを無効にします。トップレベル抑制はファイルの先頭に配置され、biome-ignore-allで始まります。

トップレベル抑制は、特定のファイルに対してあるリントルールを抑制したいが、単一の設定による上書きを使いたくない場合に有用です。

以下の例では、抑制コメントbiome-ignore-all lint/suspicious/noDebugger: 理由は、generated.js内のすべての行でリントルールを無効にします。

generated.js
// biome-ignore-all lint/suspicious/noDebugger: 理由
debugger;
debugger;

トップレベル抑制のコメントがファイルの先頭にない場合、それは未使用とみなされ、Biomeはカテゴリsuppression/unusedの診断を出力します。

範囲抑制は、開始コメントのある行から、終了コメントのある行まで、ファイルの特定の範囲でリントルールを無効にします。

範囲抑制の開始を示すには、抑制コメントをbiome-ignore-startで始めます。終了を示すには、抑制コメントをbiome-ignore-endで始めます。

次の例では、ルールlint/suspicious/noDoubleEqualsは2行目と3行目では無効になりますが、5行目では診断が出力されます。

file.js
// biome-ignore-start lint/suspicious/noDoubleEquals: 理由
a == b;
c == d;
// biome-ignore-end lint/suspicious/noDoubleEquals: 理由
f == g;

範囲抑制は重複することもできます。以下にその例を示します。

file.js
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行目の抑制コメントにより診断が出力されません
  • f == gステートメントは、ルールnoDoubleEqualsの抑制が以前の行で終了したため、診断が出力されます。
  • 10行目のコメント// biome-ignore-end lint/suspicious/noDebugger: 理由は、2行目の抑制コメントによって開始されたnoDebuggerの抑制を終了します。