Lintとは?
Lintは、一連のルールに従ってスタイル違反、潜在的なバグ、非推奨のパターンを検出するために、コードに対してツールを実行します。
linterはコードを読み、コンパイラでは報告されない問題を報告します - 一貫性のないスタイル、未使用のimport、疑わしい比較、アンチパターンなどです。CIで実行することで、コードベースの一貫性を保ち、小さなバグの一群を安価かつ早期に捕捉できます。
linterが検査する内容
linterは設定可能なルールを適用します。スタイル系(命名、スペーシング)、正しさ系(未使用の変数、到達不能なコード)、ベストプラクティス系などです。ルールセットはチームの規約に合わせて調整します。
linter対formatter
formatter(Prettierやgofmtなどのようなもの)はコードを固定スタイルへ自動的に書き換えます。linterは解析して報告し、時には自動修正も行います。多くのチームはレイアウトにformatterを、ロジックレベルの問題にlinterを実行します。
簡単な例
ESLintはconst x = 1; x = 2;をconstへの代入として、未使用のimportをno-unused-varsとして検出します。CIではeslint . --max-warnings=0により、そうした検出があればビルドを失敗させ、問題をmainから締め出します。
CIでの利用
LintはゲートとしてCIで早く高速に実行されます。lintの失敗はテストの前にビルドを止めるため、スタイルや明白なバグのリグレッションがマージされることはありません。pre-commit hookと組み合わせれば、そもそもCIに到達する前にほとんどの問題を捕捉できます。
ルールセットを健全に保つ
過度に厳格またはノイズの多い設定は、人々がlintの出力を無視するように仕向けます。まず妥当な共有presetから始め、実際の問題を捕捉するルールを有効にし、機械的なものは自動修正して、残る失敗が読む価値のあるものになるようにしましょう。
重要なポイント
- Lintは、ルールに基づいてスタイル問題、潜在的なバグ、非推奨パターンを検出します。
- formatterはレイアウトを書き換え、linterは解析して報告します。
- 対応するpre-commit hookとともに、高速な早期ゲートとして実行しましょう。