LINT(1) — NEWS-OS Programmer’s Manual
名称
lint − C プログラムのチェック
形式
lint [ −abchnpuvx ] file ...
解説
lint は、 C プログラムファイル file から、 バグ、 移植性がない、 無駄と思われる記述を検出します。 また、 コンパイラよりも厳しくプログラムの型の使用法のチェックを行います。 現在検出できるものとしては、 制御が及ばない文、 先頭から入らないループ、 宣言しているのに使用されていない auto 変数、値が一定の論理式などがあります。 さらに関数の使用をチェックして、 あるときは値を返すが他の場合には値を返さない関数、 呼ばれる際の引数の数が一定していない関数、 あるいはリターン値が使用されていない関数を検出します。
ファイル名が .c で終わる引数は C のソースファイルとみなされます。また .ln で終わる引数は、 lint の −c もしくは −o オプションによって作成された結果とみなされます。 .ln で終わるファイルは、 .c ファイルが入力として与えられた場合 cc(1) コマンドによって作成される .o (オブジェクト)と似ています。その他のサフィッ クスの付いたファイルに対しては、警告を表示して無視します。
lint は引数のすべての .c、.ln、および lib-lx.ln (-lx オプションで指定する)ファイル を取り込み、引数に指定された順序で処理を行います。 デフォルトでは、標準 C lint ライブラリ (llib-lc.ln) がファイルのリストの最後に追加されます。もし、 −p オプションが指定されると、ポータブル C lint ライブラリ (llib-port.ln) が代わりに追加されます。また、 −c オプションが指定されない場合には、 ファイル全ての相互互換性のチェックも行います。 −c オプションが指定されている場合には、 .ln と llib-lx.ln ファイルは無視されます。
オプション
オプションに関して数、順序の制限はなく、ファイル名との混在も許されます。 以下のオプションは、各種の情報の出力を制御するために使用されます。
−a int 型の変数への long 型の値の代入を報告しません。
−b 制御が達しない break 文を報告しません。(大部分の lex や yacc では、この種のメッセージが大量に出力されることになります)。
−h バグの検出、スタイルの改良、冗長な記述の削減の発見に役立つテストを行い ません。
−u 定義なしで使用されている、 または定義されているのに使用されていない 関数および変数を報告しません (このオプションは、 大きなプログラムの一部のファイルに lint を実行する場合に適しています)。
−v 関数で未使用の引数に関する報告を抑止します。
−x 外部宣言されているが、 使用されていない変数を報告しません。
以下のオプションは lint の作用を変更します。
−lx 補助 lint ライブラリ llib-lx.ln をインクルードします。 例えば、算術ライブラリの lint 版 llib-lm.ln をコマンドライン中に −lm と指定することによってインクルードすることができます。 この引数がデフォルトの llib-lc.ln を除去することはありません。 これらの lint ライブラリは定められたディレクトリになければなりません。 このオプションは、ローカルな lint ライブラリを参照することを可能とし複 数のファイルからなるプロジェクトの開発を行う場合に便利です。
−n 標準またはポータブル lint ライブラリとの互換性のチェックを行いません。
−p IBM および GCOS の C 言語への移植性をチェックします。 厳密なチェックの他にこのオプションは全ての非外部変数の名前を 8 文字に、 外部変数の名前は 6 文字に切り捨て、大文字か小文字のどちらかにまとめます。
−systype sys
インクルードファイルや lint ライブラリを指定されたシステムの物を利用す るようにする。(例えば、 −systype bsd43)
−c lint にコマンド行全ての .c ファイルに対して .ln ファイルを作成します。 これらの .ln ファイルは lint の最初のパスしかチェックしていませんので、内部関数の互換性まではチェッ クしていません。
−o lib
lint は、lint ライブラリを llib-llib.ln という名前で作成します。 −c オプションを指定すると、 −o オプションは無効となります。 作成された lint ライブラリは lint の 2 番目のパスの入力として使用されます。 −o オプションはただ単にこのファイルを名前の付いた lint ライブラリとして保 存するだけです。 よけいなメッセージを出力せずに llib-llib.ln を生成するには、 −x オプションを設定することを勧めます。 −v オプションは、lint ライブラリへのソースファイルが単なる外部インターフェー ス(例えば、 llib-lc を呼び出す方法のみが書かれている場合)に有効です。 また、これらのオプションの設定は「lint コメント」を用いて行うことも可能 です。(下記参照)
cpp(1) のオプション −D、−U、−I および cc(1) のオプション −g と −O は独立した引数として認識されます。 −g と −O オプションは無視されますが、これらのオプションを認識することによって lint はより cc(1) の動作に近づきます。 それ以外のオプションに対しては警告を表示して無視します。 プリプロセッサのシンボル ‘lint’ は、 lint に因って変更されたり取り除かれたりするある種のまぎらわしいコードを許す ように定義されています。 したがって、シンボル ‘lint’ は、 lint によってチェックされるであろう全てのコードにおいて予約語であるとみなさ れなければなりません。
C のソースコードに以下の慣用的なコメントを挿入することにより lint の振舞を変更することが可能です。
/∗NOTREACHED∗/
適当な位置で、 到達不可能なコードに対する注意を中止します。 (このコメントは通常 exit(2) のような関数の後ろに記述します。)
/∗VARARGSn∗/
次の関数宣言で、 引数の変数の数のチェックを抑止します。 n が指定された場合には、 最初の n 個の引数のデータタイプが チェックされます。 n を省略すると、 0 となります。
/∗ARGSUSED∗/
次の関数に対して、 −v オプションを有効とします。
/∗LINTLIBRARY∗/
ファイルの先頭で使用し、 そのファイルで使用していない関数についての報告を抑止します。
lint は、まずソースファイルごとに出力を行います。インクルードされているファ イルに関するメッセージは集められ、全てのソースファイルが処理された後に 出力されます。最後に、 −c オプションが使われていなければ、全ての入力ファイルから集めた情報をまと めて、整合性がチェックされます。この時点で、情報がソースファイルあるい はインクルードファイルのいずれかに由来するかがはっきりしない場合には、 ソースファイル名に疑問符 (?) が付いたものが出力されます。
−c オプションと −o オプションの働きによって、1 つの C のソースファイルに対して lint を繰り返して利用することが可能となります。通常、 オプションを付けた各ファイルに対して 1 回だけ lint を呼び出します。この呼び出しにさいして .c ファイルに対応する .ln ファイルが生成され、そのソースファイルが別々に lint を通った後で、 (−c オプションを付けずに) lint が呼び出され、必要となる −l x オプションによって全ての .ln ファイルをリストとします。これは、ファイル間の不一致を全て出力します。 この方法は、 make(1) と共に用いる場合に、うまく働きます。 make は、ソースファイルの集まりが最後に lint されてから後で変更されたソースファイルだけを lint するようにすることができます。
関連ファイル
/usr/lib −lx オプションによって指定された lint ライブラリが存在するディレクトリ
/usr/lib/lint[12] 第 1 および第 2 番目のパス
/usr/lib/llib-lc.ln C ライブラリ関数の宣言 (バイナリ形式: ソースは /usr/lib/llib-lc にあります。)
/usr/lib/llib-port.ln
ポータブル C ライブラリの宣言 (バイナリ形式:ソースは /usr/lib/llib-port にあります。)
/usr/lib/llib-lm.ln 算術ライブラリの宣言 (バイナリ形式:ソースは /usr/lib/llib-lm にあります。)
/usr/tmp/∗lint∗ 一時ファイル
関連事項
バグ
exit(2)、 longjmp(3C) などの制御を帰さない関数の判断はできません。 これらについては間違った情報を報告します。
NEWS-OSRelease 4.2.1R