フォーマッターとリンターの役割と使い方
フォーマッターの役割と使い方
フォーマッターはコードの見た目を自動的に整えるツールです。
フォーマッターの例
- Prettier (JavaScript, TypeScript, Markdown など)
- Biome (JavaScript, TypeScript, JSX, TSX など)
- Black (Python)
- gofmt (Go)
- rustfmt (Rust)
例えば、以下のようにフォーマットされていないコードも、
function add(a,b){return a + b}
Prettier でフォーマットすれば、
npx prettier main.mjs --write
以下のようにとても読みやすくなります。フォーマッターを実行するコマンドの詳細は、各フォーマッターのドキュメントを参照するようにしてください。
function add(a, b) { return a + b;}
フォーマッターを実行するコマンドは、開発中に頻繫に使用するので、Makefile や justfile、package.json で定義され、より短いコマンドで実行できるようにすることがしばしばあります。後述するリンターについても同様です。
リンターの役割と使い方
リンターはコードの品質や潜在的なバグをチェックするツールです。
リンターの例
- ESLint (JavaScript, TypeScript)
- Biome (JavaScript, TypeScript)
- Clippy (Rust)
例えば、以下のコードの何が問題でしょうか?
function add(a, b, c) { const diff = a - b; return a + b}
console.log(add(1, 2));
適当な設定をした後に、EsLint に何が問題か聞いてみましょう。
npx eslint main.mjs
そうすると、
1:20 error 'c' is defined but never used no-unused-vars 2:9 error 'diff' is assigned a value but never used no-unused-vars
✖ 2 problems (2 errors, 0 warnings)
このように何行何文字目にどういった問題があるのか教えてくれます。
フォーマッターやリンターの設定
フォーマッターやリンターの中には、JSON 形式や YAML 形式で設定を行えるものがあります。
例えば Biome では、init
コマンドを実行すると、JSON ファイルが生成され、インデントやクオート等について設定できます。
確認テスト
Q1. フォーマッターとは何ですか?
Q2. ESLint はどの言語のリンターでしょうか?
補足
フォーマッターやリンターは、Git コマンドの実行の前後に pre-commit や CI (Continuous Integration)を用いて実行することがしばしばありますが、その詳細は別の章に譲ります。