| Lint | |
|---|---|
| 原著者 | スティーブン・C・ジョンソン |
| 開発者 | AT&Tベル研究所 |
| 初回リリース | 1978年7月26日[1] (1978年7月26日) |
| 言語 | C |
| オペレーティングシステム | クロスプラットフォーム |
| 利用可能な言語 | 英語 |
| タイプ | 静的プログラム解析ツール |
| ライセンス | 元々はプロプライエタリな 商用ソフトウェアでしたが、現在はBSDライクなライセンスに基づくフリーソフトウェアとなっています[2] [3] |
リントとは、プログラミングエラー、バグ、文体上の誤り、疑わしい構造をフラグ付けするために使用される静的コード分析ツールを指すコンピュータサイエンス用語です。 [4]この用語は、 C言語のソースコードを検査するUnixユーティリティに由来しています。[1]この機能を実行するプログラムは、「リンター」または「リンティングツール」 とも呼ばれます。
歴史
ベル研究所のコンピュータ科学者、スティーブン・C・ジョンソンは、1978年にC言語用に作成していたyacc文法のデバッグと、 Unixを32ビットマシンに移植することに起因する移植性の問題に対処している際に、「lint」という用語を思いつきました。 [5] [1]この用語は、衣類から抜け落ちる繊維や毛羽の小さな破片を意味する「lint」という言葉から借用されました。彼が書いたコマンドは、衣類乾燥機の糸くずフィルターのように機能し、布地全体を傷つけずに不要な繊維を捕らえるからです。1979年、lintプログラミングはベル研究所の外で初めて、Unixの第7バージョン(V7) で使用されました
長年にわたり、多くのCおよびC++ コンパイラ向けに様々なバージョンのlintが開発されてきました。現代のコンパイラはlintのような機能を備えている一方で、lintのようなツールもその機能を進化させています。例えば、1985年に導入されC++ソースコードの解析に使用されていたGimpelのPC-Lintは、現在も販売されています。[5]
概要
ジョンソンは1978年の論文で、分析対象とは別にエラー検出用のプログラムを作成した理由を次のように述べています。「…2つのプログラムを持つという一般的な考え方は良いものです。なぜなら、それらは異なることに集中するため、プログラマーはプログラミングプロセスのある段階でアルゴリズム、データ構造、そしてプログラムの正確性にのみ集中し、その後、lintの助けを借りて、普遍性と移植性という望ましい特性を後から修正できるからです。」[1]
後継リンター
lintのようなツールによる解析は、より高速なコード生成を目的とした最適化コンパイラによっても実行できます。現代のコンパイラはlintの歴史的な機能の多くを組み込むように進化していますが、lintのようなツールは、さらに多様な疑わしい構造を検出するように進化しています。これには、「構文エラー、宣言されていない変数の使用、非推奨関数の呼び出し、スペースとフォーマットの規則、スコープの誤用、switch文における暗黙的なフォールスルー、ライセンスヘッダーの欠落、そして…危険な言語機能に関する警告」が含まれます。[6]
Lintのようなツールは、 JavaScriptやPythonのような動的型付け言語で特に有用です。これらの言語のインタープリタは通常、実行時にそれほど多くの厳格なルールを強制しないため、Linterツールは、一般的なエラー(例:構文の矛盾)だけでなく、ハイゼンバグ(疑わしいコードを「可能性のあるエラー」として警告する)などの見つけにくいエラーを見つけるための簡易デバッガーとしても使用できます。 [7] Lintのようなツールは、一般的にソースコードの静的解析を行います。 [8]
Lintのようなツールは、ソフトウェア開発の他の側面、例えば特定の言語のソースコードに文法やスタイルガイドを適用するといった用途にも開発されています。[9]一部のツール( ESLintなど)では、ルールを自動修正することも可能です。ルール定義には、警告を解決する変換定義も含まれる場合があります。特にスタイルに関するルールは自動修正機能を備えている可能性が高くなります。フォーマットに関するルールのみをトリガーするファイルに対して、リンターを「すべて修正」モードで実行すると、リンターはフォーマッタのように動作します。
参照
参考文献
- ^ abcd Johnson, Stephen C. (1978年10月25日). 「Lint, a C Program Checker」. Comp. Sci. Tech. Rep . ベル研究所: 78–1273 . CiteSeerX 10.1.1.56.1841 . 2022年1月23日時点のオリジナルよりアーカイブ
- ^ 「UNIXは無料です!」lemis.com. 2002年1月24日。
- ^ Broderick, Bill (2002年1月23日). 「Dear Unix enthusiasts」(PDF) . Caldera International . 2009年2月19日時点のオリジナル(PDF)よりアーカイブ。
- ^ 「SublimeLinterについて」。SublimeLinterコミュニティ、リビジョン1cecc79c。2023年6月6日時点のオリジナルよりアーカイブ。2020年3月29日閲覧。
- ^ ab Morris, Richard (2009年10月1日). 「Stephen Curtis Johnson: Geek of the Week」. Red Gate Software . 2018年1月19日閲覧。
- ^ 「Arcanistユーザーガイド:Lint」Phabricator . 2018年1月19日閲覧。
- ^ 「ESLint - カスタマイズ可能なJavaScriptリンティングツール(1)」theCodeCampus . 2015年6月9日. 2019年4月21日閲覧。
- ^ Jones, Nigel (2002年5月1日). 「静的コード解析のためのLintの使用方法」Barr Group .
- ^ rust-lang/rustfmt, The Rust Programming Language, 2025-01-20 , 2025-01-21取得
さらに詳しい参考文献
- ダーウィン、イアン・F. (1991). 『LintによるCプログラムのチェック:Cプログラミングユーティリティ(改訂版)』 米国:オライリーメディアISBN 978-0937175309.
- 「LINT(1)」NetBSD 一般コマンドマニュアル2024年1月24日