Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ lint(1) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

cc(1)

LINT(1)  —  UNIX Programmer’s Manual

名称

lint − Cプログラムのチェック

形式

lint [ −abchnpuvx ] file ... 

解説

lint は、 Cプログラムファイル file から、 バグ、 移植性がない、 無駄と思われる記述を検出します。 また、 コンパイラよりも厳しくプログラムの型の使用法のチェックを行います。 現在検出できるものとしては、 制御が及ばない文、 先頭から入らないループ、 宣言しているのに使用されていない auto 変数、 値が一定の論理式などがあります。 さらに関数の使用をチェックして、 あるときは値を返すが他の場合には値を返さない関数、 呼ばれる際の引数の数が一定していない関数、 あるいはリターン値が使用されていない関数を検出します。

引数を省略した場合には、 すべての file が一緒に呼び込まれたと想定されます。 これらのファイルは、 相互の互換性がチェックされます。 いくつかのライブラリに対する関数定義も lint で使用できます。 これらのライブラリは、 ld(1) の‘−lm’のような慣習的な名前で参照されます。 .ln で終わる引数も、 ライブラリとして扱われます。 lint 用のライブラリを作成する場合には、 −C オプションを使用します。

lint −Cfoo files ... 

files はライブラリ foo の Cソースファイルです。 この結果は、 ファイル llib-lfoo.ln になり、 このファイルは foo を使用するプログラムを lint するのに適した正しいライブラリ フォーマットです。

以下のリストに掲げたオプションは、 任意の個数使用できます。 cc(1) の −D、 −U、 −I オプションも引数として認識されます。

P IBM および GCOS の C言語への移植性をチェックします。

h バグの検出、 スタイルの改良、 冗長な記述の削減の発見に役立つテストを行います。

b 制御が達しない break 文を報告します (これはデフォルトではありません。 残念ながら、 大部分の lex や yacc では、 この種のメッセージが大量に出力されることになります)。

v 関数で未使用の引数に関する報告を抑止します。

x 外部宣言されているが、 使用されていない変数を報告します。

a int 型の変数への long 型の値の代入を報告します。

c 移植性に問題のある型変換を指摘します。

u 定義なしで使用されている、 または定義されているのに使用されていない 関数および変数を報告しません (このオプションは、 大きなプログラムの一部のファイルに lint を実行する場合に適しています)。

n 標準ライブラリとの互換性をチェックしません。

z 定義されていない構造体は指摘しません (たとえば、 内容を知らないで構造体へのポインタを使用する場合)。

exit(2) とその他のリターンのない関数は理解されません。 そのために間違った報告がされることがあります。

Cソースに、 以下のコメントを挿入することによって、 lint の動作を変更することができます。

/∗NOTREACHED∗/
適当な位置で、 到達不可能なコードに対する注意を中止します。

/∗VARARGSn∗/
次の関数宣言で、 引数の変数の数のチェックを抑止します。 n が指定された場合には、 最初の n 個の引数のデータタイプが チェックされます。 n を省略すると、 0 となります。

/∗NOSTRICT∗/
次の式に対して、 厳しい型チェックを行いません。

/∗ARGSUSED∗/
次の関数に対して、 −v オプションを有効とします。

/∗LINTLIBRARY∗/
ファイルの先頭で使用し、 そのファイルで使用していない関数についての報告を抑止します。

著者

S. C. Johnson. Lint library construction implemented by Edward Wang

関連ファイル

/usr/lib/lint/lint[12]プログラム
/usr/lib/lint/llib−lc.ln標準関数の宣言
/usr/lib/lint/llib−lc上記ファイルの、人が読める形のバージョン
/usr/lib/lint/llib−port.ln移植性のある関数の宣言
/usr/lib/lint/llib−port上記ファイルの、人が読める形のバージョン
llib−l∗.ln−C で作成されたライブラリ

関連事項

cc(1)
S. C. Johnson, Lint,a C Program Checker

バグ

lint の報告のうち、 抑制 できない ものがいくつかあります。

/∗NOSTRICT∗/は、 現在のバージョン(alas)ではインプリメントされていません。

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026