lint プログラムは、静的なアナライザです。そのため、検出した依存性に関する実行時の結果を評価できません。たとえば、特定のプログラム内に到達不可能な break 文が数百個含まれており、それらは重要度が低いにもかかわらず、lint によってフラグが付けられるものとします。たとえば、lint のコマンド行オプションやソーステキスト内にコメントとして埋め込まれる特殊な指令を、次のように使用できます。
柑-b オプションを指定して lint を呼び出すと、到達不可能な break 文に関するすべてのエラーメッセージが抑制されます。
到達不可能な文に対する診断を抑制するには、コメント /*NOT REACHED*/ をその文の前に付けます。
lint のオプションを次にアルファベット順に説明します。いくつかの lint オプションは、lint 診断メッセージの抑制に関連しています。これらのオプションはまた、表 15でも、アルファベット順のオプションのあとに、それらが抑制する特定のメッセージとともに一覧表示されています。拡張 lint を呼び出すオプションは -N で始まります。
lint は、-A、-D、-E、-g、-H、-O、-P、-U、-ansi、-std=value、-pedantic、-Xa、-Xc、-Xs、-Xt、-Y などの多くの cc コマンド行オプションを認識しますが、-g と -O は無視されます。認識されないオプションがあると警告が出され、そのオプションは無視されます。
冗長モードを有効にし、呼び出されるときに各コンポーネントを表示します。
呼び出すごとに各コンポーネントを表示しますが、実際には実行しません。
一定のメッセージを抑制します。 表 15を参照してください。
一定のメッセージを抑制します。 表 15を参照してください。
指定されたファイル名を持つ .ln ファイルを作成します。これらの .ln ファイルは lint の最初のパスだけで作成されます。filename は絶対パス名でもかまいません。
コマンド行で指定された .c ファイルごとに、lint の第 2 パスに関連する情報からなる .ln ファイルを作成します。第 2 パスは実行されません。
lint 出力ファイル (.ln ファイル) を入れるディレクトリを指定します。このオプションは -c オプションに影響を与えます。
-err=warn は、-errwarn=%all 用のマクロです。-errwarn=tを参照してください。
l で指定した追加の検査を実行します。デフォルトは、-errchk=%none です。-errchk を指定することは、-errchk=%all を指定することと同等です。l は、次の表にあるフラグ (-errchk=longptr64,structarg など) のうちの 1 つまたは複数で構成される検査のコンマ区切りリストです。
|
lint 出力の書式を指定します。f には、macro、simple、src、tab のいずれか 1 つを指定できます。
|
デフォルトは -errfmt=tab です。-errfmt を指定することは、-errfmt=tab を指定することと同等です。
複数の書式を指定すると最後に指定した書式が使用され、lint は使用されない書式について警告を出します。
-Ncheck も指定した場合に、lint でヘッダーファイルの特定のメッセージを報告できるようにします。h は、dir、no%dir、%all、%none、%user のうちの 1 つまたは複数で構成されるコンマ区切りリストです。
|
例:
% lint -errhdr=inc1 -errhdr=../inc2
ディレクトリ inc1 と ../inc2 内で使用されているヘッダーファイルを検査します。
% lint -errhdr=%all,no%../inc
ディレクトリ ../inc 内のものを除き、使用されているすべてのヘッダーファイルを検査します。
lint エラーメッセージを抑制するか、または有効にします。
t には、次の 1 つまたは複数の項目をコンマで区切って指定します。tag、no%tag、%all、%none。
|
デフォルトは -erroff=%none です。-erroff と指定すると、-erroff=%all を指定した場合と同等の結果が得られます
例:
% lint -erroff=%all,no%E_ENUM_NEVER_DEF,no%E_STATIC_UNUSED
「列挙型が定義されていません」と「静的シンボルが使用されていません」のメッセージだけを出力し、その他のメッセージは抑制します。
% lint -erroff=E_ENUM_NEVER_DEF,E_STATIC_UNUSED
「列挙型が定義されていません」と「静的シンボルが使用されていません」のメッセージだけを抑制します。
-errsecurity オプションを使用して、コードのセキュリティーに問題がないか検査することができます。
level は、次の表に示す値のいずれかでなければいけません。
|
-errsecurity の値が指定されていない場合は、-errsecurity=%none に設定されます。-errsecurity は指定されているが、引数が指定されていない場合は、-errsecurity=standard に設定されます。
各エラーメッセージのメッセージタグを表示します。a には、yes または no のどちらかを指定できます。デフォルトは -errtags=no です。-errtags を指定することは、-errtags=yes を指定することと同等です。
すべての -errfmt オプションとともに使用できます。
指定された警告メッセージが表示された場合、lint はエラーステータスを返して終了します。t は、tag、no%tag、%all、%none の 1 つまたは複数をコンマで区切って指定したリストです。タグの順番が重要です。たとえば %all,no%tag では、tag 以外の警告が発行されると、lint が致命的なステータスで終了します。次の表は、-errwarn 値の一覧を示しています。
|
デフォルトは -errwarn=%none です。-errwarn のみを指定することは、-errwarn=%all と同義です。
コマンド行で指定された .c ファイルを参照するとき、そのベース名ではなくコマンド行に指定されたパス名を出力します。
ファイル file に含まれているオプションを使用して lint を実行します。ファイルには、1 行に 1 つずつ、複数のオプションを指定できます。
一定のメッセージを抑制します。 表 15を参照してください。
インクルード用ヘッダーファイルをディレクトリ dir から検索します。
/* LINTED [メッセージ] */ 指令または注釈 NOTE(LINTED(message)) の動作を変更します。通常 lint は、前述のような指令のあとにコードが続く場合、警告メッセージを抑制します。lint は、メッセージを抑制する代わりに、指令または注釈の中のコメントを含むメッセージを出力します。
-l とともに使用された場合は、ディレクトリ dir 内の lint ライブラリを検索します。
lint ライブラリ llib-lx.ln にアクセスします。
一定のメッセージを抑制します。 表 15を参照してください。
分析されるプログラムのデータ型モデルを指定します。また、選択されたデータ型モデル (32 ビットまたは 64 ビット) に対応する lint ライブラリを検索します。
32 ビット C プログラムの確認には –m32 を使用し、64 ビット C プログラムの確認には –m64 を使用します。
ILP32 データ型モデル (32 ビット int、long、ポインタデータ型) は、すべての Oracle Solaris プラットフォームと、64 ビットに対応していない Oracle Linux プラットフォームでのデフォルトです。LP64 データ型モデル (64 ビット long、ポインタデータ型) は、64 ビットに対応している Oracle Linux プラットフォームでのデフォルトです。–m64 は、LP64 モデルに対応しているプラットフォームでのみ許可されます。
ヘッダーファイル内で対応する宣言を検査し、マクロを検査します。 c は、macro、extern、%all、%none、no%macro、no%extern の 1 つまたは複数をコンマで区切って指定したリストです。
|
デフォルトは -Ncheck=%none です。-Ncheck を指定することは、-Ncheck=%all を指定することと同等です。
各値をコンマで結合できます (-Ncheck=extern,macro など)。
次の例は、マクロ検査以外のすべての検査を実行します。
% lint -Ncheck=%all,no%macro
(廃止) -Nlevel オプションは、将来のリリースで削除される予定です。
拡張 lint 解析のレベルを指定することによって、問題報告の拡張 lint モードを有効にします。このオプションは、検出されるエラーの量の制御を提供します。レベルが高いほど検証にかかる時間は長くなります。n は数値で、1、2、3、4 のいずれかです。デフォルトはありません。-Nlevel が指定されなかった場合は、lint の基本解析モードが使用されます。引数なしで -Nlevel が指定された場合は、-Nlevel=4 に設定されます。
基本および拡張 lint 使用方法 モードについては、Using lintを参照してください。
個々の手続きを解析します。いくつかのプログラムの実行パスで発生する無条件エラーを報告します。大域的なデータおよび制御のフロー解析は行いません。
大域的なデータおよびフローを含め、プログラム全体を解析します。いくつかのプログラムの実行パスで発生する無条件エラーを報告します。
-Nlevel=2 の下で実行される解析に加えて、定数の伝播 (定数が実引数として使用されている場合) を含め、プログラム全体を解析します。
この解析レベルでの C プログラムの検査は、前述のレベルより 2 倍から 4 倍長い時間がかかります。これは、lint がプログラムの変数に対して取り得る値の集合を作成し、プログラムの部分解釈を行うためです。これらの変数値の集合は、定数と、プログラムで使用可能な定数オペランドを含む条件文に基づいて作成され、ほかの集合 (定数伝播の形式) を作成するときの基準になります。
そのあと、解析の結果として受け取った集合は、次のアルゴリズムに従って誤りがないか評価されます。
オブジェクトが取り得る値の集合の中に正しい値が存在する場合は、その値が次の伝搬の基準として使用されます。正しい値が存在しない場合は、エラーと診断されます。
-Nlevel=3 の下で実行される解析に加えて、プログラム全体を解析し、特定のプログラム実行パスが使用された場合に発生する可能性のある条件付きエラーを報告します。
この解析レベルでは、さらに多くの診断メッセージが出力されます。一般的に、この解析アルゴリズムは、不正な値に対してエラーメッセージが生成されることを除けば、-Nlevel=3 の解析アルゴリズムと同じです。このレベルでの解析に要する時間は、2 桁ほど増加する可能性があります (約 20 倍から 100 倍遅い)。この場合、余分な所要時間は、再帰や条件文などで特徴づけられるプログラムの複雑さに直接比例します。結果として、100,000 行を超えるプログラムでこのレベルの解析を使用するのは困難である可能性があります。
デフォルトの lint 標準ライブラリとの互換性検査を抑制します。
lint は llib-lx.ln という名前の lint ライブラリを作成します。このライブラリは、lint が第 2 パスで使用する .ln ファイルから作成されます。-c オプションを使用すると、すべての -o オプションが無効になります。不要なメッセージを表示しないで llib-lx.ln を作成するには、-x オプションを使用します。lint ライブラリのソースファイルが外部インタフェースのみの場合は、-v オプションが役立ちます。生成された lint ライブラリは、あとで lint が -lx を指定して呼び出された場合に使用できます。
デフォルトでは、ライブラリは lint の基本形式で作成されます。拡張 lint モードを使用した場合は、ライブラリは拡張モードで作成されるため、それ以外のモードでは使用できなくなります。
cxref(1) で使用する .ln ファイルを file に書き込みます。拡張モードがオンに切り替えられている場合、このオプションは無効にします。
"警告:" または "エラー:" で始まる単一の診断メッセージを生成します。デフォルトでは、lint は複合的な出力を生成するためにいくつかのメッセージをバッファリングします。
一定のメッセージを抑制します。 表 15を参照してください。このオプションは、大型プログラムのファイルの一部分に対して lint を実行する場合に適しています。
一定のメッセージを抑制します。 表 15を参照してください。
cflow(1) で使用する .ln ファイルを file に書き込みます。拡張モードがオンに切り替えられている場合、このオプションは無効にします。
C++ 形式のコメントを受け入れます。このオプションを使用すると、// を使用してコメントの始まりを示すことができます。a には yes または no のいずれかを指定します。デフォルトは -XCC=no です。-XCC を指定することは、-XCC=yes を指定することと同等です。
このオプションでは、l は any、basic、weak、layout、strict、std、strong のいずれかです。さまざまなレベルの明確化の詳細な説明については、表 49を参照してください。
-Xalias_level を指定しない場合、このフラグのデフォルトは -Xalias_level=any です。これは、型に基づく別名の解析が実行されないことを示します。-Xalias_level を指定してもレベルを設定しない場合、デフォルトは -Xalias_level=layout になります。
lint を実行するときの明確化のレベルは、コンパイラを実行するときのレベルよりも緩やかにしてください。明確化のレベルをコンパイルするときのレベルより厳しくして lint を実行すると、結果は解釈するのが困難になり、誤解を招く恐れがあります。
明確化の詳細と、明確化を支援するために作成されたプラグマのリストについては、lint フィルタを参照してください。
(Oracle Solaris) 非推奨。使用しないでください。-m32|-m64を参照してください。
-Xc99 フラグは、C99 規格 (『Programming Language - C (ISO/IEC 9899:1999)』) からの実装機能に対するコンパイラの認識状況を制御します。
o には、all、none のいずれかを指定します。
-Xc99=none は、C99 機能の認識を無効にします。-Xc99=all は、サポートされている C99 機能の認識を有効にします。
引数を付けずに -Xc99 を指定すると、-Xc99=all と同等の結果になります。
-std または -xlang フラグが指定されている場合、-Xc99 フラグは使用できません。
lint の実行中、一時ファイルを自動的に削除せず、作成した状態のままにします。a には yes または no のいずれかを指定します。デフォルトは -Xkeeptmp=no です。-Xkeeptmp を指定することは、-Xkeeptmp=yes を指定することと同等です。
一時ファイルのディレクトリを dir に設定します。このオプションを指定しないと、一時ファイルは /tmp に格納されます。
各 lint パスの実行時間を報告します。a には yes または no のいずれかを指定します。デフォルトは -Xtime=no です。-Xtime を指定することは、-Xtime=yes を指定することと同等です。
K&R C と Oracle Developer Studio ISO C の違いに関する警告を発行します。a には、yes または no のどちらかを指定できます。デフォルトは -Xtransition=no です。-Xtransition を指定することは、-Xtransition=yes を指定することと同等です。
このオプションは、U"ASCII 文字列" 書式の文字列リテラルの認識を unsigned short int の配列として有効にします。デフォルトは -Xustr=no で、U"ASCII 文字列" 文字列リテラルのコンパイラ認識を無効にします。-Xustr=ascii_utf16_ushort は、U"ASCII 文字列" 文字列リテラルのコンパイラ認識を有効にします。
一定のメッセージを抑制します。 表 15を参照してください。
コマンド行で指定されたすべての .c ファイルを、/* LINTLIBRARY */ 指令で開始した場合または注釈 NOTE(LINTLIBRARY) が付いている場合と同じように扱います。lint ライブラリは通常、/* LINTLIBRARY */ 指令または注釈 NOTE(LINTLIBRARY) を使用して作成します。