lint(1) FreeBSD 一般コマンドマニュアル

lint

前のページ 上に戻る 次のページ

lint


          [-Idirectory] [-Ldirectory] [-llibrary] [-ooutputfile] file ...
     lint [-abceghprvzHFV] [-s|-t] -Clibrary [-Dname[=def]] [-Idirectory]
          [-Uname] file ...


解説

     lint は指定された C のプログラムファイルを解析し、バグの可能性がある部
     分、移植性がないと考えられる部分、あるいは無駄なコードと考えられる部分の
     検出を試みます。加えて、 lint は C コンパイラより厳密な型チェックを行いま
     す。 lint は最初のフェーズでシンボル lint を定義して C プリプロセッサを起
     動します。これにより、ある疑わしいコード部分を lint に変更あるいはスキッ
     プさせることができます。それゆえ、 lint がチェックする全てのコードにおい
     ては、シンボル lint は予約語とみなすべきです。

     現在 lint が指摘する問題点は以下のものです。到達しない文、先頭から入らな
     いループ、宣言したものの使用しない変数、定数値となる論理式。関数呼び出し
     に関しては以下のような矛盾点が指摘されます。あるところでは値を返すが別の
     場所では値を返さない関数の呼び出し、引数の個数が変化する関数の呼び出し、
     関数側で想定していない型の引数を渡す関数呼び出し、返値を使用しない関数呼
     び出し、返値のない関数の存在しない返値を使用している関数呼び出し。

     ファイル名引数のうち、末尾が .c で終わるものは C のソースファイルとみなさ
     れます。ファイル名が .ln で終わるものは、以前 lint-i, -o あるいは -C
     オプション付きで起動した際の結果を格納したファイルとみなされます。 .ln
     ファイルは、 cc(1).c から生成するオブジェクトファイル .o に相当しま
     す。 lint はまた、 -l オプションによって指定された特別なライブラリを受け
     付けます。これは、ライブラリ関数と変数の定義を含むものです。

     lint は全ての .c, .ln ファイルと llib-llibrary.ln (lint ライブラリ)ファイ
     ルを受け取り、それらをコマンドラインで指定した順に処理します。デフォルト
     では、 lint は標準 C lint ライブラリ (llib-lc.ln) をファイルリストの最後
     に付け加えます。 -i オプションが指定されていれば、 .ln ファイルは無視され
     ます。また、 -o オプションあるいは -i オプションが指定されていれば、
     llib-llibrary.ln ファイルは無視されます。 -i オプションが指定されて いな
     ければ、 lint の 2番目のパスでこのファイルリストが相互一貫性チェックに用
     いられます。このとき、もし問題箇所が与えられたソースファイルからではなく
     インクルードファイルのひとつに端を発するものならば、表示されるソースファ
     イル名の後ろに疑問符が付けられます。

     B>オB>プB>シB>ョB>ン

     -a          long 型以外の変数に対する long 値の代入を報告します。

     -aa         -a に加え、小さい型への暗黙の型変換を引き起こす あらゆる整数
                 値代入を報告します。

     -b          到達し得ない break 文を報告します。このオプションはデフォルト
                 では有効ではありません。なぜなら、ほとんどの lex(1) および多
                 くの yacc(1) 出力はこのような break を数多く含むからです。

     -c          移植性に問題のあるキャストについて報告します。

     -e          enum型に対する不正操作や enum 型と B>整B>数型間の組み合わせについ
     -i          コマンドラインの各 .c ファイルに対して .ln ファイルを生成しま
                 す。これらの .ln ファイルは lint の最初のパスの結果に過ぎず、
                 関数間の一貫性チェックは行われません。

     -n          標準ライブラリに対する一貫性チェックを行いません。

     -p          他の C 方言への移植性に関するチェックを試みます。

     -r          重複した宣言が見つかった場合、前回の宣言の位置を報告します。

     -s          厳密な ANSI C モードでチェックします。 ANSI C で必要とされる
                 警告およびエラーを出力します。従来の C と ANSI C とで異なる振
                 る舞いをする構造に対しての警告は行いません。 -s オプション指
                 定時は、プリプロセッサマクロとして __STRICT_ANSI__ が定義され
                 ます。

     -t          従来の C モードでチェックします。このモードでは __STDC__ は定
                 義されません。従来の C で許可されない構造に対して警告が出力さ
                 れます。従来の C と ANSI C とで異なる振る舞いをする構造に対し
                 ての警告は抑制されます。マシンタイプ(例: sun3) およびマシンア
                 ーキテクチャ(例: m68k) を記述したプリプロセッサマクロは、先頭
                 および末尾のアンダースコア無しで定義されます。キーワード
                 const, volatile および signed は従来の C モードでは利用できま
                 せん(しかし、先頭にアンダースコアを付したもう一方のキーワード
                 は依然利用可能です)。

     -u          使用されているが定義されていない、あるいは定義されているが使
                 用されていない関数および外部変数についての報告を行いません (
                 この機能は、大規模プログラムを構成する一部のファイルに対して
                 lint を走らせる場合に向いています)。

     -v          関数中の未使用引数に関する報告を抑制します。

     -x          extern 宣言で参照されているが一度も使用されていない変数につい
                 て報告します。

     -z          定義されていない構造体に関する報告を抑制します (例えば、中身
                 を関知せずに構造体へのポインタを用いる場合など)。

     -Clibrary   llib-llibrary.ln という名前の lint ライブラリを作成します。こ
                 のライブラリは、全ての入力ファイル .c および .ln から作られま
                 す。これらのファイルに含まれる全ての大域関数および大域変数の
                 宣言が新しく作られるライブラリに書き出された後、 lint-l
                 オプションで指定されたライブラリを含めた全ての入力ファイルに
                 対して相互一貫性のチェックを行います。

     -Dname[=def]
                 cpp(1) のために #define ディレクティブと同様にしてマクロ name
                 を定義します。右辺値が指定されない場合、マクロ name は 1 と定
                 義されます。

     -Idirectory
                 ドファイル名を表示します。

     -ooutputfile
                 出力ファイル名を outputfile とします。出力ファイルは lint の2
                 番目のパスの入力ファイルとなるものです。 -o オプションは単
                 に、このファイルを指定された名前でファイルに保存します。同時
                 に -i オプションも指定されていれば、これらのファイルは一貫性
                 をチェックされません。 llib-llibrary.ln ファイルを作成する際
                 には、余分なメッセージを抑制するため、 -u オプションの使用を
                 推奨します。 lint ライブラリのソースファイルが単に外部インタ
                 フェースに過ぎない場合は、 -v オプションを用いると便利です。

     -Uname      プリプロセッサが定義する全てのマクロ name を取り除きます。

     -V          制御プログラムが C プリプロセッサおよび lint の第1 および第2
                 パスを実行する際のコマンドラインを表示します。

     B>入B>力B>文B>法

     lint の第1 パスは標準的な C ソースファイルを読み込みます。 lint は以下の
     ような C のコメントをコマンドとして認識します。

     /* ARGSUSEDn */
                 最初の n 個の引数に対してのみ使用チェックを行います。 n を省
                 略すると 0 と解釈されます (このオプションは、次の関数に対して
                 -v オプションと同様の働きをします)。

     /* CONSTCOND */ 又は /* CONSTANTCOND */ 又は /* CONSTANTCONDITION */
                 次の式に対する定数オペランドに関する報告を抑制します。

     /* FALLTHRU */ 又は /* FALLTHROUGH */
                 case あるいは default ラベルのついた文への fall through に関
                 する報告を抑制します。このディレクティブはそれらのラベルの直
                 前に置く必要があります。

     /* LINTLIBRARY */
                 ファイル先頭で、このファイル中で定義される全ての関数および変
                 数が 使用されているとマークします。また、未使用の関数引数に関
                 する報告も行いません。

     /* LINTED [comment] */ 又は /* NOSTRICT [comment] */
                 未使用の変数あるいは関数に関するものを除き、ファイル内に閉じ
                 た問題点に関する警告を抑制します。このディレクティブは、lint
                 警告が発生する場所の直前の行に置く必要があります。

     /* LONGLONG */
                 long long 整数型の使用に関する報告を抑制します。

     /* NOTREACHED */
                 しかるべき場所において、未到達コードに関する報告を抑制します
                 (このコメントは通常、 exit(3) のような関数の呼び出しの直後に
                 置きます)。
                 引数は scanf のフォーマット文字列と同様に解釈され、残りの引数
                 をチェックするために用いられます。

     /* VARARGSn */
                 後続する関数宣言において、引数個数に関する通常のチェックを抑
                 制します。最初の n 個の引数のデータ型がチェックされます。 n
                 が指定されない場合は 0 と解釈されます。

     -i オプションおよび -o オプションを用いると、ひと組の C ソースファイルに
     対してインクリメンタルに lint を適用することが可能です。一般に、各ソース
     ファイルに対して -i オプション付きで lint を一度起動します。このとき、 .c
     に対応して .ln ファイルが作成され、それらのソースファイルに関する全ての
     メッセージが表示されます。全てのソースファイルに対して個別の lint 処理が
     済んだ後、全ての .ln ファイルと必要な -llibrary オプションを付け、( -i オ
     プション無しで)もう一度 lint を起動します。ここでファイル間の一貫性に関す
     る問題点が表示されます。この方式は make(1) を用いるとうまくいきます。
     make(1) を用いると、前回ソースファイルの組が lint された後、修正のあった
     ファイルに対してのみ lint を起動することができます。


環境変数

     LIBDIR      -llibrary オプションで指定されたライブラリが存在するディレク
                 トリ。この環境変数が定義されていない場合は、ライブラリ検索の
                 ためにデフォルトパスとして /usr/libdata/lint が用いられます。

     TMPDIR      一時ファイル用のパスは通常、この環境変数をセットすることで変
                 更できます。


関連ファイル

     /usr/libexec/lint[12]         プログラム
     /usr/libdata/lint/llib-l*.ln  前もって作成されている様々な lint ライブラ
                                   リ
     /tmp/lint*                    一時ファイル


関連項目

     cc(1), cpp(1), make(1)


作者

     Jochen Pohl


バグ

     exit(3)longjmp(3) および戻って来ない他の関数は正しく理解されません。
     これらは様々な不正診断の原因となります。

     最初の extern 宣言の前でのみ用いられる static 関数は、未使用であると報告
     されます。

     -o オプションによって作られたライブラリは、のちの lint 実行で用いた場合、
     ライブラリ作成時に報告されたある種のエラーが再度報告され、ライブラリ作成
     時に用いたオリジナルのソースファイルの行番号およびファイル名がエラーメッ
     セージ中に表示されることがあります。そのため、lint ライブラリ作成には -C
     オプションを用いることを推奨します。


ABELNET VPSサービス