コンテンツにスキップ

Linter

Biomeのリンタはあなたのコードを静的に分析し、典型的なエラーを検出して、より自然なコードを書く手助けをします。 複数の言語をサポートし、全部で316 個のルールを提供しています。

以下のコマンドはプロジェクトのルートからすべてのファイルに対してリンタを実行します:

Terminal window
npx @biomejs/biome lint

または、フォルダを指定できます。例えば ./src を指定します:

Terminal window
npx @biomejs/biome lint ./src

コマンドはファイルとディレクトリのリストを受け入れます。

利用可能なすべてのオプションについて、詳しくはCLIリファレンスを参照してください。

リンタはルールに整理されています。 ルールはその要求に満たないコードを検知すると診断結果を出力します。 例えば、noDebugger ルールはJavaScriptコードでの debugger 命令の利用を報告します。

ルールは診断結果を infowarnerror の重大度で出力します。 error 重大度の診断結果はコマンドを非ゼロのステータスコードで終了させます。 info または warn 重大度の診断結果はコマンドを失敗させません。

--error-on-warnings オプションを使うことで、 warn の診断結果にコマンドを失敗させることができます:

Terminal window
biome lint --error-on-warnings ./src

デフォルトでは、Biomeのリンタは推奨されたルールのみを実行します。 _すべてのルール_を無効化するには、Biomeの設定ファイルで推奨されたルールを無効化します。 これはいくつかのルールのみを有効化したいときに有用です。 推奨されたルールは error 重大度で診断結果を出力します。

ルールはグループに分割されています。 例えば、noDebugger ルールは suspicious グループ の一部です。 このグループのルールは、間違っている可能性があるか不要であるコードを検出します。 各グループの説明はルールページで確認できます。

他のリンタとは違い、コードのフォーマットをチェックするルールを提供していません。 こうしたチェックはコードフォーマッタが行います。

多くのルールは自動的に適用できるコード修正を提供しています。 Biomeでは、安全な修正と安全ではない修正を区別しています。

安全な修正は、コードのセマンティクスを変更しないことが保証されています。明示的なレビューなしに適用できます。

安全な修正 を適用するには、--writeを使用します:

Terminal window
npx @biomejs/biome lint --write ./src

安全ではない修正(Unsafe fixes)

Section titled “安全ではない修正(Unsafe fixes)”

安全ではない修正は、プログラムのセマンティクスを変更する可能性があります。そのため、変更を手動でレビューすることをおすすめします。

安全ではない修正 を適用するには、--write --unsafeを使用します:

Terminal window
npx @biomejs/biome lint --write --unsafe ./src

私たちは、ただルールを指示的に指摘するのではなく、なぜそのルールがトリガーされた理由をユーザーに説明し、エラーを修正する方法をユーザーに伝えることが大切だと考えています。 ルールは以下のような重要な要素に沿って選定されています:

  1. ユーザーに対してエラーの説明を行います。これは基本的に診断のメッセージです。
  2. 次に、ユーザーに対してエラーがトリガーされた理由を説明します。これは基本的に追加のノードで実装されます。
  3. 最後にユーザーに何をすべきかを伝えます。これは基本的にコードアクションを使用して実装されます。 コードアクションが適用できない場合は、ノートでユーザーに何をすべきかを伝えます。

もしルールがこれらの要素に従っていないと感じたのであれば、イシューを作成してください。

ルールまたはグループをスキップする

Section titled “ルールまたはグループをスキップする”

バージョン v1.8.0 から、biome lint コマンドはルールまたはルールの属するグループを無効化する --skip オプションを受け入れるようになりました。

例えば、以下のコマンドは style グループに属するすべてのルールと suspicious/noExplicitAny ルールをスキップします:

Terminal window
biome lint --skip=style --skip=suspicious/noExplicitAny

ルールまたはスキップを実行する

Section titled “ルールまたはスキップを実行する”

バージョン v1.8.0 から、biome lint コマンドは特定のルールまたはルールの属するグループのみを実行する --only オプションを受け入れるようになりました。

例えば、以下のコマンドは style/useNamingConvension ルール、style/noInferrableTypes ルール、そして a11y グループに属するすべてのルールのみを実行します。 ルールが設定によって無効化されている場合、推奨されるルールの重大度は error に設定され、それ以外のルールの重大度は warn に設定されます。

Terminal window
biome lint --only=style/useNamingConvention --only=style/noInferrableTypes --only=a11y

ルールはニーズに応じて設定できます。

重大度 errorwarninfo のいずれかを指定するとルールは有効化され、off を指定すると無効化されます。

以下の設定では、推奨された noDebugger ルールを無効化し、noShoutyConstantsuseNamingConvention ルールを有効化します。

重大度 warn はリファクタリングの最中にCIをパスさせる必要がある場合に便利です。 診断結果のメッセージは黄色です。 --error-on-warnings を使うことで、 warn が指定されたルールが検知された場合にエラーコードで終了させられます。

重大度 info--error-on-warnings が渡されたとしても、CLIの終了ステータスコードに影響しません。 診断結果のメッセージは青色です。

biome.json
{
"linter": {
"rules": {
"suspicious": {
"noDebugger": "off",
"noConsoleLog": "info"
},
"style": {
"noShoutyConstants": "warn",
"useNamingConvention": "error"
}
}
}
}

バージョン v1.8.0 から、 fix オプションによって修正方法を設定できるようになりました。 次の3つのオプションがあります:

biome.json
{
"linter": {
"rules": {
"correctness": {
"noUnusedVariables": {
"level": "error",
"fix": "none"
}
},
"style": {
"useConst": {
"level": "warn",
"fix": "unsafe"
},
"useTemplate": {
"level": "warn",
"fix": "safe"
}
}
}
}
}

いくつかのルールには、より詳細な設定があります。
ルールに詳細な設定がある場合、ルールの値を変更することで指定できます。

  • level は診断の重大度を示します
  • options はルールによって異なります
biome.json
{
"linter": {
"enabled": true,
"rules": {
"correctness": {
"noCommentText": {
"level": "warn",
"options": {}
}
}
}
}
}

特定のコード行に対するリントを無視したい場合があります。 これは、リンタが指摘している行の上に抑制コメントを追加することで実現できます。

抑制コメントは、以下の形式で記述します:

// biome-ignore lint: <explanation>
// biome-ignore lint/suspicious/noDebugger: <explanation>

ここで

  • biome-ignore:抑制コメントの開始を表します;
  • lint:はリンタを抑制することを表します;
  • /suspicious/noDebugger任意 抑制したいルールのグループと名前を表します;
  • <explanation>:ルールが無効になっている理由を表します;

例:

// biome-ignore lint: reason
debugger;
// biome-ignore lint/suspicious/noDebugger: reason
debugger;

Biomeはファイル全体を無視するためのコメントを提供していません。 しかし、Biomeの設定ファイルでファイルを無視できます。 VCSで無視されるファイルを無視することもできます。

Biomeの多くのリントルールは他のリンタを参考にしています。 ESLintや typescript-eslint などの他のリンタから移行する場合は、ルールのソース ページを確認してください。 ESLintから移行する場合は、専用の移行ガイドがあります。