【りんたー】

リンター とは?

最終更新:
💡 コードを読み、決めたルールで問題を指摘

コードを実行せず、設定したルールに照らして問題を指摘するツール。フォーマッターとの違い、自動修正の範囲、警告の扱い、テストと併用する理由を解説します。

📌 このページのポイント
リンター:コードを解析して指摘ソースコードconst unused = 1;リンター+ルール実行せず解析設定したルールで検出指摘の例unusedが使われていないテスト・レビューと併用して確認検出・自動修正の範囲はツールとルール次第
未使用変数を指摘するルールを有効にした例です。コードの実行順ではなく解析の流れを示します。すべてのバグや仕様の正しさは分からず、自動修正も一部の問題に限られます。
ひよこ ひよこ
リンターは、コードを動かして調べる?
ペンギン先生 ペンギン先生
基本は実行せずにコードを解析するよ。設定したルールに照らし、未使用の変数や危険な書き方、形式の違反などを指摘する。JavaScriptのESLint、PythonのRuff等が例だよ。
ひよこ ひよこ
バグは全部見つかる?
ペンギン先生 ペンギン先生
検出できる範囲は、言語やルール、設定によるよ。問題なしでも、計算結果や利用者の要望が正しいとは限らない。実際に動かすテストや、人が設計と内容を確認するレビューも必要なんだ。
ひよこ ひよこ
フォーマッターとは、何が違う?
ペンギン先生 ペンギン先生
フォーマッターはコードの見た目を整える役割だよ。Prettierなら、一定の形式に書き出す。リンターにも形式のルールはあるけれど、コードの問題を検出する役割がある。設定して役割の重なりを減らすと使いやすい。
ひよこ ひよこ
指摘されたら、全部自動で直せる?
ペンギン先生 ペンギン先生
ルールが対応しているものは自動修正できるよ。ESLintにもその機能がある。ただ、提案を自分で選ぶものや、コードの意味が変わり得る修正もある。差分とテストを見て確認しよう。
ひよこ ひよこ
警告を全部無視してもよい?
ペンギン先生 ペンギン先生
エラーか警告かは設定上の強さで、問題の重大さと常に同じではないよ。導入時はルールの目的や既存コードへの影響を確認し、段階的に対応できる。抑制するなら、必要な範囲と理由を残し、重要な指摘を隠していないか見よう。
もっと詳しく知りたい人へ

リンターで問題がなければ、セキュリティ検査も完了?

検出できるルールや解析範囲に限界があります。外部ライブラリの脆弱性、実行環境、権限、処理の仕様等を網羅する検査ではありません。用途に合う別の検査と併用します。

自動修正なら、動作は必ず変わらない?

ツールとルールによります。Ruffはsafeとunsafeを区別し、unsafeでは実行時の挙動等が変わる場合を説明しています。修正の種類を確認し、変更後の差分とテストで確かめます。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「リンター」って出てきたら「コードを読んで、設定したルールに合わない箇所を指摘するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「Linter / Lint」 = コードを点検するツール / 点検する処理
💬 プログラムを解析して問題を指摘する処理をlint、そのためのツールをlinterと呼びます。

参考資料

← 用語集にもどる