定義
リンター(Linter)とは、プログラマーが書いたソースコードを実行することなく、文法エラーや好ましくない書き方、コーディング規約のズレを事前に見つけ出してくれる検査ツールのことです。プログラムを本格的に動かす前にミスを正せるため、不具合を未然に防ぐことができます。
文章の校正ツールのようにコードをチェックします
ワープロソフトで文章を書いているとき、誤字や文法の誤りがあると単語の下に赤の波線が引かれますよね。リンターもそれとよく似ています。コードエディタにリンターを組み込んでおくと、開発者が文字を1つ書き忘れたり、決められたルールから外れた書き方をしたりした部分に、タイピングしている最中でも下線を引いて警告してくれます。
コンピュータプログラムは、記号が1つ抜けているだけでもシステム全体が止まってしまうことがあります。特に、変数(データを一時的に入れておく名前付きの箱)の名前を打ち間違えるようなミスは、プログラムが特定の状況で実行されて初めて発覚することもあり、後から原因を探すには多くの時間と手間がかかります。
エディタと連携したリンターは、開発者が文字を打ち込んでいる間も、まるでコードを目で追うように隅々まで見渡します。そのおかげで、わざわざプログラムを実行してみなくても、タイピングの途中でちょっとしたタイプミスや文法ミスにすぐ気付いて直すことができます。コマンドでまとめて実行したり、コードを共有リポジトリに保存する前に自動で検査するように設定して使われることも一般的です。
チームのコーディング規約をひとつに揃えます
もし複数の人で1冊の小説を分担して執筆したらどうなるでしょうか。句読点の使い方にとてもこだわる人がいる一方で、改行を勝手気ままにする人が混ざっていると、本全体がちぐはぐで読みにくくなってしまいますよね。
ソフトウェア開発もまったく同じです。行の先頭の字下げ(インデント)をスペース2マスにするか4マスにするか、名前の付け方に大文字を混ぜるかどうかなど、開発者によって好む書き方の癖は異なります。こうした細かなスタイルがバラバラだと、チームメイトが書いたコードを読んで修正する際に余計なエネルギーを奪われてしまいます。
リンターは、あらかじめ決めておいた開発チームのルールに従い、誰もが同じルールを守れるように手助けしてくれます。規約から外れている箇所を見つけると教えてくれ、一部の指摘は自動修正機能で整えてくれます。なお、行の揃えや余白をきれいに整頓する役割は、「フォーマッター(コード整形ツール)」と呼ばれるツールと併用して任せるのが一般的です。
もう少し詳しく:静的解析の第一歩
もう少し専門的に説明すると、リンターはプログラムを起動して実際に動かすことなく、コードのテキスト構造だけを分析します。ソフトウェア工学では、こうした手法を静的コード解析(プログラムを実行せずにコードそのものを検査する手法)と呼びます。
リンターは目に見える誤字だけでなく、宣言したのに一度も使われていない無駄な変数や、将来的にバグを引き起こしたりコードを読みにくくしたりする好ましくない書き方(アンチパターン)まで幅広く検知します。コードの文脈を読み解き、後で起こりうるトラブルを未然に防ぐスマートな案内役と言えます。
ただし、リンターを使えばあらゆるバグを完璧に防げるわけではありません。コードの文法やインデントが完璧であっても、商品の合計額を計算するときに足し算と引き算の記号を間違えてしまうような「論理的なミス」までは、リンターには判断できません。そのため、計算結果などが正しいかを確かめるテストツールと組み合わせて使うことで、より強固な安全網を築くことができます。
よくある誤解
リンターを使えば、プログラム内のあらゆるバグや計算ミスを完全に防ぐことができる。
リンターはコードの文法、コーディング規約、危険な記述パターンを事前に見直すためのツールです。足し算と引き算を書き間違えたような計算ロジックやアルゴリズムの誤りは、実際にプログラムを実行してテストするなど別の方法で確認する必要があります。
日常で出会う場面
コードの末尾で閉じ括弧を書き忘れたとき、すぐに赤い下線を引いて文法ミスを教えてくれます。
宣言したもののプログラム内のどこでも使われていない無駄な変数を見つけ出し、文字を薄いグレーにして知らせてくれます。
チームで決めた書き方のルールに違反しているコードを検出し、設定によっては自動修正機能で瞬時に直してくれます。
つまり ひとことで
リンターは、コードを実行することなく文法エラーや好ましくない書き方を先回りして指摘し、チームのコーディング規約を統一してくれる検査ツールです。