Skip to content

リンター

新しいルールを足す

リンタールールの追加 に、Oxlint へルールを追加する手順がまとまっています。

開発

ルートに ./test.ts を用意したうえで、例えば次を実行します。

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

あるいはルール名でフィルタしてテストします。

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

実在の大きなコードベースで oxlint を試す

大規模な JavaScript / TypeScript プロジェクト上で変更を試したいときは、oxlint CLI をビルドしてそのリポジトリで実行します。

bash
# oxc リポジトリ内で oxlint CLI をビルド
just oxlint-node
# 試したいプロジェクトのディレクトリで node 経由で実行:
node <path-to-oxc-repo>/apps/oxlint/dist/cli.js
# 特定ルールを `-D` で有効化したり、デフォルトプラグインを `--disable-*-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 — かなり厳しめ、場合によっては誤検知もあるコード
  • perf — 書き換えれば速くなり得るコード
  • style — より慣用的な書き方にそろえたいコード
  • restriction — 有効にする前にケースバイケースで検討したいルール
  • nursery — まだ改善途上の新しいルール