Skip to content

Linter

ルールの追加

Oxlint に新しいルールを追加する方法については、ルールの追加ガイドをご覧ください。

開発

./test.ts を作成し、次のように実行します。

bash
just watch "cargo run --bin oxlint -- test.ts"

または、特定のルールに対してテストとフィルタリングを行う場合:

bash
just watch "cargo test -p oxc_linter -- rule-name"

完全なコードベースに対する oxlint のテスト

完全なコードベース上で oxlint をテストしたい場合(たとえば、大規模な JavaScript/TypeScript プロジェクトで変更内容を検証する場合)、oxlint CLI をビルドしてそのコードベースに対して実行できます。

bash
# oxc リポジトリ内で `oxlint` CLI をビルド
just oxlint-node
# その後、テスト対象のコードベースが含まれるディレクトリで、node で oxlint を実行:
node <path-to-oxc-repo>/apps/oxlint/dist/cli.js
# また、フラグも渡すことができます。たとえば `-D` で特定のルールを有効化したり、`--disable-x-plugin` でデフォルトのプラグインを無効化できます:
node <path-to-oxc-repo>/apps/oxlint/dist/cli.js -D rulename --disable-unicorn-plugin --disable-oxc-plugin --disable-typescript-plugin

サンプルスナップショットテスト

cargo insta がサンプルスナップショットテストに使用されています。

cargo test -p oxc_linter を実行後、Tester::new(RULE::NAME, pass, fail).test_and_snapshot() が呼び出されると、新しい rule.snap.new ファイルが生成されます。

すべてのスナップショット変更を承認するには cargo insta accept を使用します。

ルールカテゴリ

  • correctness - 絶対に誤っているか無意味なコード
  • suspicious - 多くの場合、誤っているか無意味なコード
  • pedantic - 極めて厳格であるか、まれに誤検出を起こす可能性のある lint
  • perf - より高速に実行できるように書き直せるコード
  • style - より自然な記述スタイルにすべきコード
  • restriction - 有効化する前に個別に検討すべきルール
  • nursery - まだ開発中の新しいルール