リンター
ソースコードを静的解析し、バグの可能性やスタイル違反を検出するツール
リンターとは
リンター (Linter) は、ソースコードを実行せずに静的解析し、バグの可能性、スタイル違反、セキュリティ上の問題を検出するツールである。名前は 1978 年に Stephen C. Johnson が作った C 言語の lint ツールに由来する。
リンターとフォーマッターの違い
リンターとフォーマッターの主な違いを以下に整理する。
| ツール | 目的 | 例 |
|---|---|---|
| リンター | バグ検出、品質チェック | ESLint, Biome |
| フォーマッター | コードスタイルの統一 | Prettier, Biome |
// リンターが検出する問題
const x = 10; // ❌ 未使用変数 (no-unused-vars)
if (x = 10) {} // ❌ 代入と比較の混同 (no-cond-assign)
eval('code'); // ❌ eval の使用 (no-eval)
console.log('debug'); // ❌ console の使用 (no-console)
// フォーマッターが修正する問題
const y=1+2; // → const y = 1 + 2;
if(true){return} // → if (true) { return; }
言語ごとのリンター
言語ごとのリンターを以下にまとめる。
| 言語 | リンター | 特徴 |
|---|---|---|
| TypeScript/JS | ESLint | プラグインエコシステムが豊富 |
| TypeScript/JS | Biome | Rust 製、ESLint + Prettier の統合 |
| Python | Ruff | Rust 製、高速 |
| Rust | Clippy | 公式リンター |
| Go | golangci-lint | 複数リンターの統合 |
| CSS | Stylelint | CSS/SCSS のリンター |
ESLint の設定
ESLint の設定のコード例を示す。
// eslint.config.js (Flat Config)
import tseslint from 'typescript-eslint';
export default tseslint.config(
...tseslint.configs.recommended,
{
rules: {
'@typescript-eslint/no-unused-vars': 'error',
'@typescript-eslint/no-explicit-any': 'error',
'no-console': 'warn',
},
},
);
Biome (ESLint + Prettier の代替)
Biome (ESLint + Prettier の代替) の例を示す。
// biome.json
{
"linter": { "enabled": true },
"formatter": { "enabled": true, "indentStyle": "space" }
}
Biome は Rust 製で ESLint + Prettier の 10〜100 倍高速。リントとフォーマットを 1 つのツールで行える。
CI での実行
CI での実行の例を示す。
# GitHub Actions
- run: npx eslint . --max-warnings 0
- run: npx prettier --check .
--max-warnings 0 で警告も CI を失敗させる。
Git フックとの連携
Git フックとの連携の例を示す。
# .husky/pre-commit
npx lint-staged
{ "lint-staged": { "*.{ts,tsx}": ["eslint --fix", "prettier --write"] } }
コミット時に変更ファイルだけリント + フォーマットする。
詳しくは関連書籍を参照。
この記事は役に立ちましたか?
関連用語
ESLint
JavaScript/TypeScript のコード品質と一貫性を自動検証する静的解析ツール
Prettier
コードのフォーマットを自動的に統一するオピニオネイテッドなコードフォーマッター
フォーマッター
ソースコードのスタイル (インデント、改行、スペース) を自動的に統一するツール
Rust
メモリ安全性とパフォーマンスを両立する、GC なしのシステムプログラミング言語
CSS-in-JS
JavaScript 内で CSS を記述し、コンポーネントスコープのスタイルを実現する手法
Null 安全性
null 参照エラーを型システムで防止し、null の可能性がある値を明示的に扱うプログラミング言語の機能
関連する記事
あの有名 OSS のコードは、この本の影響を受けている
広く使われているオープンソースソフトウェアの設計には、特定の技術書の影響が色濃く反映されています。OSS のコードと技術書の関係を知ると、両方の理解が深まります。
月曜朝イチのコードが金曜夕方より美しい理由
週の始まりに書くコードと終わりに書くコードでは、品質に明確な差があります。この現象の原因と、コード品質を週を通じて維持するための読書習慣を考えます。
コードレビューが上手い人は何を読んでいるのか
的確なコードレビューができる人は、共通して特定のジャンルの本を読んでいます。レビュー力を支える読書の傾向と、レビューに直結する知識の身につけ方を解説します。