Lint は、プログラミングエラー、バグ、文体エラー、疑わしい構造をフラグ付けするために使用される静的コード分析ツールを指すコンピュータサイエンス用語です。 [1]この用語は、 C 言語のソースコードを検査するUnixユーティリティに由来しています。[2] この機能を実行するプログラムは、「リンター」とも呼ばれます。
歴史
| 原作者 | スティーブン・C・ジョンソン |
|---|---|
| 開発者 | AT&T ベル研究所 |
| 初回リリース | 1978年7月26日[2] |
| 書かれた | C |
| オペレーティング·システム | クロスプラットフォーム |
| 利用可能 | 英語 |
| タイプ | 静的プログラム解析ツール |
| ライセンス | 元々は商用ソフトウェアで あったが、現在はBSDライセンスのようなフリーソフトウェアとなっている[3] [4] |
ベル研究所のコンピュータ科学者であったスティーブン・C・ジョンソンは、1978年にC言語用に書いていたyacc文法をデバッグし、 Unixを32ビットマシンに移植することから生じる移植性の問題に対処しているときに、 「lint」という用語を思いつきました。[5] [2]この用語は、衣類から抜け落ちる繊維や毛羽の小さなかけらを意味する「lint」という単語から借用されたものです。ジョンソンが書いたコマンドは、衣類乾燥機の糸くずトラップのように機能し、布地全体をそのまま残しながら無駄な繊維を捕らえるものでした。1979年、lintプログラミングはベル研究所の外で初めて、Unixのバージョン7 ( V7 ) で使用されました。
長年にわたり、多くのCおよびC++ コンパイラ向けにさまざまなバージョンのlintが開発されてきました。現代のコンパイラにはlintのような機能があり、lintのようなツールも機能が進化しています。たとえば、1985年に導入され、C++ソースコードの解析に使用されていたGimpelのPC-Lintは、現在でも販売されています。[5]
概要
ジョンソンは1978年の論文で、分析対象とは別にエラー検出用のプログラムを作成した理由を次のように述べている。「...2つのプログラムを持つという一般的な考え方は良いものです」[それらは異なることに集中するため、プログラマーは]「プログラミングプロセスの1つの段階でアルゴリズム、データ構造、プログラムの正確性のみに集中し、その後、lintの助けを借りて、普遍性と移植性という望ましい特性を後から修正することができます」。[2]
後継リンター
lint のようなツールによって実行される分析は、より高速なコードを生成することを目的とした最適化コンパイラによっても実行される。現代のコンパイラはlint の歴史的な機能の多くを組み込むように進化しているが、lint のようなツールもさらに幅広い疑わしい構造を検出するように進化している。これには、「構文エラー、宣言されていない変数の使用、非推奨の関数の呼び出し、スペースと書式の規則、スコープの誤用、switch ステートメントの暗黙的なフォールスルー、ライセンス ヘッダーの欠落、[および]...危険な言語機能に関する警告」が含まれる。[6]
リントのようなツールは、 JavaScriptやPythonのような動的型付け言語に特に役立ちます。これらの言語のインタープリタは通常、実行中にそれほど多くの厳格なルールを適用しないため、リントツールは、一般的なエラー(構文の矛盾など)だけでなく、ハイゼンバグ(疑わしいコードを「可能性のあるエラー」として注意を引く)などの見つけにくいエラーを見つけるための簡単なデバッガーとしても使用できます。 [7]リントのようなツールは、通常、ソースコードの静的分析を実行します。[8]
Lint のようなツールは、ソフトウェア開発の他の側面でも開発されています。特定の言語のソースコードに文法やスタイル ガイドを適用します。[引用が必要]一部のツール ( ESLintなど) では、ルールを自動修正することもできます。ルール定義には、ルールがトリガーされないようにする変換の定義も付属しています。スタイルに関するルールには、特に自動修正が付属している可能性があります。書式設定に関するルールのみをトリガーするファイルに対して、リンターを「すべて修正」モードで実行すると、リンターはフォーマッターのように動作します。
参照
参考文献
- ^ 「SublimeLinterについて」。SublimeLinterコミュニティ、リビジョン1cecc79c。2023年6月6日時点のオリジナルよりアーカイブ。2020年3月29日閲覧。
- ^ abcd Johnson, Stephen C. (1978年10月25日). 「Lint, a C Program Checker」. Comp. Sci. Tech. Rep . Bell Labs: 78– 1273. CiteSeerX 10.1.1.56.1841 . 2022年1月23日時点のオリジナルよりアーカイブ。
- ^ 「UNIX は無料です!」 lemis.com. 2002-01-24.
- ^ Broderick, Bill (2002 年 1 月 23 日). 「Dear Unix 愛好家の皆様へ」(PDF) . Caldera International . 2009 年 2 月 19 日時点のオリジナル(PDF)からアーカイブ。
- ^ 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-06-09 . 2019-04-21閲覧。
- ^ Jones, Nigel (2002 年 5 月 1 日)。「静的コード分析に Lint を使用する方法」Barr Group。
さらに読む
- Darwin, Ian F. (1991)。Lint による C プログラムのチェック: C プログラミング ユーティリティ (改訂版)。米国: O'Reilly Media。ISBN 978-0937175309。
- 「LINT(1)」。NetBSD 一般コマンドマニュアル。2024-01-24。
