lintツールに関する世界観です。
lintツールとは、静的解析ツールとも言われ、コンパイラよりも厳密にコードの問題点を報告してくれる、いわば「駄目出しツール」。
コンパイラでコンパイルできるコードであっても、コードにはさまざまな問題点があることがある。
lintツールを使うことで、そのような問題点に駄目出し、あるいは「こうした方が良いよ」というアドバイスを得られる。
実際の開発の現場ではほぼ必須。とても便利なツールだ。
ESLintは、JavaScript界で有名なlintツールのひとつ。
JavaScriptのツールを参照のこと。
RuboCopは、Ruby界でよく使われているlintツール。
Rubyを参照のこと。
Pylintとflake8はPython界で使われているlinter。
Pythonを参照のこと。
RomeはJavaScriptのビルドまわりの何でも屋ツールチェイン。以下の記事が参考になる。
linterを使うと、原因がよく分からないバグの多くを検出できる。
たとえば、C言語のプログラミングの書籍であるエキスパートCプログラミング―知られざるCの深層 (Ascii books)では、関数の戻り値として配列のポインタを返した際に起きる、考えれば考えるほど分からなくなるようなバグについて記述されている。
このようなバグは、linterを使うことで多くが検出できる。
そもそも、かつてのUNIXの初期段階のCコンパイラは、linterの機能がまだコンパイラの中に含まれていた。それが、コンパイラを軽量化するにあたって、linterの機能を削除し、linterだけを分離・独立して、コンパイラだけを専門とするようになった。
そして、この本では、そのようなコンパイラからlinterの機能を削除することを批判する。バグのあるプログラムを高速にコンパイルできるよりも、バグがあればそれを提示したほうがいいとこの本の著者は言う。
わたしたちがコンパイラを使う際にも、コンパイラだけを単独で使うことが多い。その中に見つかりにくいバグが含まれている可能性もある。なので、きちんとlinterを実行するようにしよう。
2023.01.19