# マニュアルページ lint.1

## 名前

         lint - C プログラムの検査

## 形式

         lint [-#] [-###] [-a] [-b] [-Cfilename]  [-c]  [-dirout=dir]
              [-err=warn]    [-errchk=l]    [-errfmt=f]   [-errhdr=h]
              [-erroff=t]  [-errtags=a]   [-errwarn=t]   [-F]   [-fd]
              [-flagsrc=file]  [-h]  [-Idir]  [-k] [-Ldir] [-lx] [-m]
              [-Ncheck=c] [-Nlevel=n] [-n] [-ox] [-p]  [-Rfile]  [-s]
              [-u] [-V] [-v] [-Wfile] [-Xarch=v9] [-Xalias_level[=l]]
              [-XCC=a]  [-Xc99[=o]]  [-Xexplicitpar=a]  [-Xkeeptmp=a]
              [-Xtemp=dir]         [-Xtime=a]        [-Xtransition=a]
              [-Xustr={ascii_utf16_ushort|no}] [-x] [-y] files

## 機能説明

         lint は、C プログラムファイルの機能で、バグ、移植性のない 部
         分、無駄な部分などを検出します。

         lint は、型の使用をコンパイラより厳密に検査します。lint は、
         エ ラー メッセージや警告メッセージを出します。検出する項目に
         は、次のものがあります。
           o 到達できない文
           o 先頭から入っていないループ
           o 宣言されながら使用されない自動変数
           o 値が一定している論理式

         lint は、ある場所では値を返しある場所では値を返さない関 数、
         引 数 の数や型が一定しない関数、引数の値が使用されていない関
         数、値が使用されても何も返さない関数を検査します。

         lint は 2 つのモードで動作します。基本モードは lint プログラ
         ム のデフォルトです。拡張モードは基本 lintモードで行うすべて
         の操作を含み、加えて詳細なプログラムコードの解析を行います。

         拡張モードにおいては、次の解析を行います。
           o ソースプログラムの構造とフロー解析
           o 定数伝播と定数式の評価
           o 制御フローとデータフロー解析
           o データ型の使われ方の解析

         以上により、拡張モードで lint は次の問題を検出できます。
           o 使用されない #include 指令、変数、手続き
           o メモリー解放後のメモリーの使われ方
           o 参照されない代入文
           o 初期化する前に参照される変数
           o メモリーが割り当てられていない領域の解放
           o 定数データセグメントに書き込みをするポインタ
           o 違う値で再定義されるマクロ
           o 制御が到達しないコード
           o 使われ方が一致しない共用体内のメンバー型
           o 実引数の暗黙的キャスト

         拡張モードは -Nlevel または -Ncheck オプションにより有効にな
         ります (次の機能説明を参照してください)。

         名前が .c で終わっている引数は C のソースファイル、 .i で 終
         わっている引数は前処理からの出力ファイル (コンパイラの -P オ
         プションで作成されたもの) と見なします。

         名前が .ln で終わっている引数は、 -C、 -c、 -o のいずれか の
         オプションを使用して実行した lint の結果のファイルであると見
         なします。 .ln ファイルは、 cc(1) に .c ファイルを指定して実
         行 し た 結果作成される .o (オブジェクト) ファイルに似ていま
         す。他の接尾辞が付いたファイルが渡されると、 lint は警告を出
         し、そのファイルを処理しません。

         拡張モードでは、lint は基本モードで作成される.ln ファイル よ
         り 多 く の追加情報を格納する .ln ファイルを作成します。拡張
         モードでは、lint は基本モードまたは拡張 lint モードの両方 で
         作 成 さ れる .ln ファイルを読み、解釈できます。基本モードで
         は、基本 lint モードで作成された .ln ファイルのみを読み、 解
         釈できます。

         lint は、( -lx によって指定されたもの) を接尾辞に持つすべ て
         のファイルを受け付け、それらをコマンド行で指定された順序で処
         理します。デフォルトでは、lint は標準の C lint ライ ブ ラ リ
         (llib-lc.ln) をファイルの並びの最後に自動的に追加します。 -C
         オプションまたは -c オプションが使用されると、 .ln ファイ ル
         や llib-lx.ln ファイルは無視します。 -C オプションも -c オプ
         ションも使用されない場合、lint の第 2 段階として、 .ln  ファ
         イルと llib-lx.ln ファイルの互換性を検査します。

         lint には任意の数のオプションを任意の順で指定できます。そ の
         中 には、ファイル名を示す引数を含むことができます。次の lint
         オプションにより、いくつかのエラーメッセージまたは警 告 メッ
         セージを抑止できます。

         -#   起動される各構成要素を出力します (冗長モード)。

         -### 起動される各構成要素を出力します。ただし、 -# オプ ショ
              ンの場合とは異なり、実際には実行しません。

         -a   long 型でない変数に long 型の値が代入された場合の報告を
              抑止します。

         -b   到達できない break 文についての報告を抑止します。

         -Cfilename
              ファイル名 filename で指定された名前で .ln ファイルを作
              成します。これらの .ln ファイルは、lint の第 1 段階でし
              か作成されません。 filename には、絶対パス名を指定で き
              ます。

         -c   は、コマンド行に指定された個々の .c ファイルに対して  1
              つ の .ln を作成します。 .ln ファイルは、lint の第 1 段
              階でしか作成されず、その時点で関数相互間の互換性は検 査
              されません。

         -dirout=dir
              lint 出力ファイルが置かれるディレクトリ名を設定します。
              このオプションは -c オプションに影響を及ぼします。

         -err=warn
              このオプションはマクロであり、 -errwarn=%all と同 じ で
              す。

         -errchk=l
              値から渡される構造的な引数を検査します。長整数のサイ ズ
              や ポ イ ンタが 64 ビットである環境への移植性を検査しま
              す。

              値は、-errchk=longptr64,structarg などのようにコンマ で
              区切られたリストにすることが可能です。

              デフォルトは -errchk=%none です。-errchk を指定すること
              は、 -errchk=%all を指定することと同様です。

              l は以下のうち 1 つ以上を含む、コンマで区切られたチェッ
              クのリストです。

              [no%]locfmtchk
                      lint の最初のパスで print に似た書式の文字列 を
                      検 査します。二度目のパスでは -errchk=locfmtchk
                      を指定するかどうかに関係なく、必ず print に似た
                      書式の文字列の有無が確認されます。

              [no%]parentheses
                      コードのメンテナンス性を向上させるために使用 し
                      ま す。-errchk=parentheses が警告を返す場合、括
                      弧を追加して、コード中の演算の優先順位を明確 に
                      することを検討してください。

              [no%]signext
                      通常の ANSI/ISO C 値保持規則で、符号なし整数 型
                      の 表現で符号付き整数値の符号の拡張が許可される
                      場合に、エラーメッセージを生成します。このオ プ
                      ションは、 -errchk=longptr64 が同時に指定された
                      場合にのみエラーを生成します。

              [no%]sizematch
                      大きな整数を小さな整数に割り当てるときに警告 し
                      ま す。これらの警告は、同じサイズでも符合が異な
                      る整数を割り当てるときにも発行されます (たと え
                      ば、unsigned int = signed int)。

              [no%]structarg
                      値から渡される構造的な引数を検査し、仮引数型 が
                      不明である場合は報告します。

              [no%]longptr64
                      長整数のサイズやポインタが 64 ビットであり、 普
                      通 の整数のサイズが 32 ビットである環境への移植
                      性を検査します。明示的なキャストが使用された 場
                      合 であっても、ポインタ式と長整数式の普通の整数
                      への代入を検査します。

              %all    errchk が行う検査をすべて実行します。

              %none   errchk が行う検査を何も実行しません。これ が デ
                      フォルトです。

         -errfmt=f
              lint の出力形式を指定します。f は次のいずれか 1 つに な
              ります。 macro, simple, src または tab。

              macro   マクロを展開してソースコード、行番号、エラー の
                      起こった場所を表示します。

              simple  行番号及びエラーの場所を括弧で囲み、1 行の単 純
                      な 診断メッセージとして表示します。 -s オプショ
                      ンと同じですが、エラー位置の情報を含ん で い ま
                      す。

              src     マクロを展開せず、ソースコード、行番号、エ ラー
                      の場所を表示します。

              tab     テーブル形式で表示します。

              デフォルトは -errfmt = tab です。 -errfmt を指定する と
              -errfmt = tab を指定した場合と同じになります。

              2 つ以上のフォーマットが指定された場合は、最後に指定 さ
              れたフォーマットが使用されます。lint は使用しない形式に
              対して警告メッセージを出します。

         -errhdr=h
              -Ncheck と使用した場合、ヘッダーファイルに対してある 種
              の メッセージを出すようにします。h は次のいずれかからな
              るコンマで区切られる一覧になります。 dir, no%dir, %all,
              %none, %user。

              [no%]dir
                      ディレクトリ dir で使用されるヘッダーファイルを
                      検査します。

              %all    使用されるすべてのヘッダーファイルを検 査 し ま
                      す。

              %none   ヘッダーファイルを検査しません。これがデフォ ル
                      トです。

              %user   使用されるすべてのユーザーヘッダーファイル、 つ
                      ま りコンパイラにより提供されるヘッダーファイル
                      を含む  /usr/include  およびそのサブディレク ト
                      リのヘッダーファイルを検査します。

              デフォルトは -errhdr=%none です。 -errhdr を指定する と
              -errhdr=%user を指定した場合と同じになります。

         -erroff=t
              lint エラーメッセージを抑止したり、有効にしたりします。
              t  はコンマで区切られる一覧で次のいずれかの組み合わせで
              す。tag, no%tag, %all, %none。

              [no%]tag
                      tag で指定されるメッセージを抑止します。

              %all    すべてのメッセージを抑止します。

              %none   すべてのメッセージを有効にします。これがデ フォ
                      ルトです。

              デフォルトは -erroff=%none です。 -erroff を指定する と
              -erroff=%all を指定した場合と同じになります。

         -errtags=a
              各エラーメッセージに対してメッセージタグを表示します。a
              は  yes  ま た は no のいずれかになります。デフォルトは
              -errtags=no です。 -errtags  を指定すると  -errtags=yes
              を指定した場合と同じになります。

              あらゆる -errfmt オプションと共に動作します。

         -errwarn=t
              指定した警告メッセージが発行されると、 lint はエラー ス
              テー タスを返して終了します。t はコンマで区切ったリスト
              で、次の 1 つまたは複数から構成されます。

              tag      tag で指定したメッセージが警告メッセージとして
                       発行されると、 lint は致命的なエラーステータス
                       で終了します。tag が発行されない場合は影響しま
                       せん。

              no%tag   tag で指定したメッセージが警告メッセージとして
                       だ け 発行された場合に lint が致命的なエラース
                       テータスで終了しないようにします。tag が発行さ
                       れない場合は影響しません。このオプションを使用
                       すると、このオプションの tag または %all を 使
                       用して以前に指定したメッセージが警告メッセージ
                       として発行されても、 lint は致命的なエ ラー ス
                       テータスで終了しません。

              %all     どのような警告メッセージが発行されても、  lint
                       は 致 命的なエラーステータスで終了します。%all
                       の後に no%tag を指定すると、特定の警告メッセー
                       ジだけをこの動作から除外できます。

              %none    どのような警告メッセージが発行されても、  lint
                       が致命的なエラーステータスで終了することがない
                       ようにします。これはデフォルトです。

         -F   ファイルのパス名を出力します。通常、lint はファイル名だ
              けを表示し、各ファイルのパスは表示しません。

         -fd  旧式の関数定義と関数宣言について報告します。

         -flagsrc=file
              ファイル file に含まれるオプションと共に lint を実行 し
              ます。file には 1 行に 1 つ複数のオプションが指定できま
              す。

         -h   バグの発見、スタイルの改善、無駄な部分の削減を試みる 試
              行錯誤のテストを適用しません。

         -Idir
              カレントディレクトリや標準の場所で検索する前に、イン ク
              ルードファイルをディレクトリ dir で検索します。

         -k   /*LINTED [message]*/ 指令また は  NOTE(LINTED(message))
              注釈の動作を変更します。通常、lint はこの指令があると、
              それ以降のコードについて警告メッセージを出力しませ ん。
              一方、このオプションが指定されると、lint は該当する場所
              で、コメントまたは注釈に指定されているメッセージを出 力
              します。

         -Ldir
              標準の場所で検索する前に、lint ライブラリをディレクトリ
              dir で検索します。

         -lx  lint ライブラリ llib-lx.ln を取り込みます。たとえば、コ
              マ ン ド 行に -lm を挿入すれば、lint 版の数学ライブラリ
              llib-lm.ln を取り込むことができます。この引数を使用して
              も、llib-lc.ln のデフォルトの使用法が抑止されることはあ
              りません。lint ライブラリは想定されるディレクトリに存在
              し なければなりません。このオプションを使用するとローカ
              ルの lint ライブラリを参照できるため、複数のファイル か
              ら構成されるプロジェクトを開発しているときに便利です。

         -m   静的に宣言すべき外部シンボルに関するメッセージを抑止 し
              ます。

         -Ncheck=c
              対応する宣言があるかどうかヘッダファイルを検査しま す。
              マ クロも検査します。c はコンマで区切られた次のいずれか
              からなる検査項目の一覧です。

              macro   ファイル間のマクロ定義に一貫性があるかどうか 検
                      査します。

              extern  ソース間および関連するヘッダーファイルにおけ る
                      宣言(たとえば、file1.c および file1.hにおける宣
                      言)が 1 対 1 に対応しているかどうか検査します。

                      ヘッダーファイルにふさわしくない宣言あるいは 不
                      足 し て いる extern 宣言がないかどうか確認しま
                      す。

              %all    Ncheck 検査のすべての項目を実行します。

              %none   Ncheck 検査のいずれの項目も実行しません。これが
                      デフォルトです。

              no%macro  は
                      Ncheck のマクロ検査を実行しません。

              no%extern
                      Ncheck の extern 検査を実行しません。

              コンマを使用 し て 値 を 結 合 し ま す。 た と え ば、
              -Ncheck=extern,macro となります。

              デフォルトは -Ncheck=%none です。 -Ncheck を指定する と
              -Ncheck=%all を指定した場合と同じになります。

         -Nlevel=n
              問題を報告する際の解析レベルを指定します。このオプ ショ
              ン を使用すると検出するエラーの量を制御できます。レベル
              が高くなると、検査時間も長くなります。n は数字です。1、
              2、3、または 4 を指定します。

              -Nlevel=1 1 つの手続きを解析します。プログラムの実行 パ
              ス 上で起きる無条件エラーを報告します。大域データおよび
              制御フロー解析を行いません。

              -Nlevel=2 デフォルトです。大域データ、制御フローを含 む
              プ ログラム全体を解析します。プログラムの実行パス上で起
              きる無条件エラーを報告します。

              -Nlevel=3 -Nlevel=2 で行われる解析に加えて、定数伝 播、
              実 引数に定数が使用された場合のプログラム全体の解析を行
              います。

              この解析レベルで C プログラムの検証を行うと、前述のレベ
              ルより 2 倍から 4 倍多く時間がかかります。lint は、プロ
              グラム変数用に可能な値のセットを作成して、プログラム の
              部 分的な解釈を仮定するので、時間が必要になります。これ
              らの変数セットは、プログラムで使用できる定数オペラン ド
              を 含む定数と条件文に基づいて作成されます。セットは、そ
              の他のセットを作成するための基礎を形成します (定数伝 播
              の形成)。解析結果として受け取ったセットは、以下のアルゴ
              リズムに従って、誤りがないかどうかチェックされます。

              オブジェクトのすべての可能な値の中に正しい値が存在す る
              場 合は、その値が今後の伝播の基礎として使用されます。正
              しい値が存在しない場合は、エラーと診断されます。

              -Nlevel=4 -Nlevel=3 で行われる解析に加えて、プログラ ム
              全 体 の 解析を行い、プログラム実行パス上で起こる条件エ
              ラーを報告します。

              このレベルでは、付加的な診断メッセージが出力されま す。
              解析アルゴリズムは -Nlevel=3 での解析アルゴリズムとほぼ
              同じですが、すべての無効な値に対してエラーメッセージ を
              生 成する点が異なります。このレベルでの解析に必要な時間
              は、最大２桁ほど増加する可能性があります (だいた い  20
              倍 から 100 倍遅くなります)。この場合、解析に必要とされ
              る時間は、再帰や条件文などによるプログラムの複雑さに 比
              例 します。このため、100,000 行以上のプログラムでこのレ
              ベルの解析行うのは困難です。

         -n   標準の C lint ライブラリとの互換性を検査しません。

         -ox  llib-lx.ln という lint ライブラリを作成します。このライ
              ブ ラ リは第 2 段階のパスで lint が使用するすべての .ln
              ファイルをもとに作成されます。 -c オプションを使用す る
              と、  -o  オ プションはすべて無効になります。エラーメッ
              セージが表示されないようにして llib-lx.ln を作成する た
              めには、 -x オプションが使用できます。lint ライブラリの
              ソースファイルが外部インタフェースだけで構成されてい る
              場 合は、 -v オプションが便利です。作成した lint ライブ
              ラリは lint が -lx オプションで起動された場合に使用でき
              ます。

              デフォルトでは lint の基本形式のライブラリを作成でき ま
              す。lint の拡張モードを使用する場合は、作成されるライブ
              ラリは拡張形式になり、拡張モードでのみ使用できます。

         -p   C の他の方言に移植できるかどうかの検査を試みます。よ り
              厳密な検査を行うだけでなく、すべての非外部名を 8 文字に
              します。また、すべての外部名を 6 文字にし、構成する文字
              を大文字または小文字のいずれかに統一します。

         -Rfile
              cxref(1) で使用できるようにファイルを file に出力 し ま
              す。 拡張モードにいる場合には、このオプションは拡張モー
              ドを無効にします。

         -s   1 行づつに対して診断メッセージを出力します。lint はメッ
              セー ジをバッファに入れ、複数の項目に関するメッセージを
              出力する場合があります。

         -u   使用されながら定義されていない関数および外部変数に関 す
              る メッセージと、定義されながら使用されていない関数およ
              び外部変数に関するメッセージを抑止します (このオプ ショ
              ン は、大型のプログラムを検査するとき、そのプログラムを
              構成するファイルの一部に対して lint を実行する場合に 適
              しています)。

         -V   標準エラー出力に製品名とリリース番号書き込みます。

         -v   関数内で使用されない引数に関するメッセージを抑 止 し ま
              す。

         -Wfile
              cflow(1) で使用できるように a .ln ファイルを file に 出
              力 します拡張モードにいる場合には、このオプションは拡張
              モードを無効にします。

         -Xalias_level[=l]
              l が any, basic, weak, layout,strict, std, or strong の
              一つである場合。詳細は、 C ユーザーズガイドを参照してく
              ださい。 -Xalias_level を指定しない場合、デフォルトのフ
              ラグは -Xalias_level=any になります。これは、型に基づい
              た別名解析が行われないことを意味します。レベルを与え ず
              に  -Xalias_level  を 指 定 し た 場 合、 デ フォルトは
              -Xalias_level=layout になります。

              コンパイラを実行したレベルほど厳密でない、明確なレベ ル
              で  lint を実行してください。コンパイルしたレベルより厳
              密で、明確なレベルで lint を実行した場合、結果の解釈 は
              困難です。

         -Xarch=v9
              __sparcv9 マクロを事前定義し、lint ライブラリの v9 バー
              ジョンを検索します。

         -XCC=a
              C++ 型のコメントを受け付けます。a は yes または  no  で
              す。// は特別に、コメントの始まりを指定するのに使用され
              ます。デフォルトは、 -XCC=no です。 -XCC は、  -XCC=yes
              と同じ意味になります。

              注:
              -xc99=%none を使用する場合は、このオプションを使用し て
              く ださい。 -xc99=%all (デフォルト) の下では、// によっ
              て指定されたコメントを lint が受け入れます。

         -Xc99=o
              -Xc99  フ ラ グ は、 C99  規 格   (ISO/IEC   9899:1999,
              Programming  Language - C) から実装された機能に対するコ
              ンパイラの認識を制御します。

              o には次のうちの一つを指定できます: %all, %none。

              -Xc99=%none を指定すると C99 機能を 認 識 し ま せ ん。
              -Xc99=%all  を指定するとサポートされた C99 機能を認識し
              ます。 -Xc99 を引数なしで指定することは、-Xc99=%all  を
              指定した場合と同じです。

              注意事項:
              コンパイラのサポートレベルは、C ユーザーズガイドの付 録
              D  に 一覧表示された C99 の機能をデフォルトにしますが、
              Solaris(TM) ソフトウェアにより提供され る  /usr/include
              の 標準ヘッダーは、まだ 1999 ISO/IEC C 規格に準拠してい
              ません。エラーメッセージが表示された場合は、-Xc99=%none
              を 使用して、これらのヘッダーの 1990 ISO/IEC C 規格の動
              作を取得してください。

         -Xexplicitpar=a
              (SPARC) lint に対して #pragma MP 指令を認識するように指
              示 し ます。a は yes または no のいずれかになります。デ
              フォルトは -Xexplicitpar=no  で す。  -Xexplicitpar  は
              -Xexplicitpar=yes と同じ意味になります。

         -Xkeeptmp=a
              lint 実行時に使用した一時ファイルを自動的に削除するかわ
              り に 保 存します。a は yesまたは no のいずれかになりま
              す。デフォルト は  -Xkeeptmp=no  で す。  -Xkeeptmp  は
              -Xkeeptmp=yes と同じ意味になります。

         -Xtemp=dir
              一時ファイルのディレクトリを dir に設定します。このオプ
              ショ ンを指定しない場合は、一時ファイルは /tmp に置かれ
              ます。

         -Xtime=a
              各 lint パスに対して実行時間を表示します。a は yes また
              は  no  のいずれかになります。デフォルトは -Xtime=no で
              す。 -Xtime は -Xtime=yes と同じ意味になります。

         -Xtransition=a
              K&R C と Sun ANSI C の相違に対する警告メッセージを出 し
              ます。a は yes または no のいずれかになります。デフォル
              ト  は   -Xtransition=no   で  す。   -Xtransition   は
              -Xtransition=yes と同じ意味になります。

         -Xustr={ascii_utf16_ushort|no}
              このオプションを指定すると、形式 U"ASCII_string" の文字
              列 リテラルを符号なし短整数の配列として認識できます。こ
              のような文字列はまだ規格に含まれていないので、このオ プ
              ションにより非標準 C の認識ができるようになります。
              -Xustr=no を指定すると、U"ASCII_string" 文字列リテラ ル
              を  lint が認識しません。コマンド行のこのオプションの最
              も右にあるインスタンスは以前のインスタンスをすべて上 書
              きします。

              デフォルトは -Xustr=no です。引数を指定しないで  -Xustr
              を 指定すると、コンパイラはそれを受け付けず、警告が発せ
              られます。C または C++ 標準が構文の意味を定義する 場 合
              は、デフォルトは変更できます。

              同様に U"ASCII_string" 文字列リテラルを指定 し な い で
              -Xustr=ascii_utf16_ushort  を指定できます。これはエラー
              にはなりません。

              次の例は、付加された引用符で囲まれた文字列リテラルを 示
              し ています。 -Xustr を指定するコマンド行も同様に示して
              います。

              example% cat file.c
              const unsigned short *foo = U"foo";
              const unsigned short bar[] = U"bar";
              const unsigned short *fun() { return U"fun"; }
              example% cc -Xustr=ascii_utf16_ushort file.c -c

         -x   外部宣言によって参照される変数をレポート、使用 し ま せ
              ん。

         -y   lint の対象になっているファイルを /*LINTLIBRARY*/ 指 令
              または NOTE(LINTLIBRARY) 注釈が使用された場合のように扱
              います。通常、lint ライブラリを作成する場合は、 /*LINT-
              LIBRARY*/  指 令または NOTE(LINTLIBRARY) 注釈を使用しま
              す。

         lint は、 cc(1) コマンド行オプションの多くを認識します。その
         中 には、 -A, -D, -E, -g, -H, -O, -P, -U, -Xa, -Xc, -Xs, -Xt
         , 及び -Y が含まれますが、 -g と -O は無視します。上記以外の
         オプションがあると警告を出し、そのオプションに対する処理を行
         いません。定義済みマクロ lint により、特定の疑わしいコードを
         変更したり削除したりできます。したがって、シンボル lint は、
         lint によって検査する予定のすべてのコードのための予約語と 考
         えてください。

         lint はデフォルトで次の定義済みマクロを提供します ( -Xc モー
         ドでは有効ではありません)。
                   #assert lint (on)

         定義済みマクロは -Xc モードでは有効ではありません。
                   sun
                   lint
                   unix
                   sparc (SPARC のみ)
                   i386 (x86 のみ)

         これらの定義済みマクロはすべてのモードで有効です。
                   __sparc (SPARC のみ)
                   __i386 (x86 のみ)
                   __unix
                   __sun
                   __lint
                   __`uname -s` `_uname -r` (例: __SunOS_5_7)
                   __SVR4
                   __BUILTIN_VA_ARG_INCR
                   __SUNPRO_C=0x550
                   __RESTRICT (-Xa  および -Xt モードのみ)
                   __sparcv9 (-Xarch=v9)

         C ソースに次のコメントがあると、lint: の動作が変更されます。

              /*ARGSUSEDn*/
                   lint は先頭の n 個の引数だけについて、それらが使用
                   されているかどうかを検査します。 n を省略すると、0
                   と見なされます (この場合、この指令の後ろの関数に対
                   して -v オプションを指定した場合と同様の検査を行い
                   ます)。

              /*CONSTCOND*/、/*CONSTANTCONDITION*/
                   条件式のオペランドとして定数が指定されている場合の
                   報告を抑止します。

              /*EMPTY*/
                   if 文の結果として空文が実行されるときの報告を抑 止
                   します。この指令は、条件式とセミコロンの間に置いて
                   ください。この指令は、後ろに有効な else 文が続いて
                   い る 空の if 文をサポートするためのものです。else
                   文の結果の空文についてのメッセージも抑止します。

              /*FALLTHRU*/、/*FALLTHROUGH*/
                   case ラベルまたは default ラベルの文に、直前のラベ
                   ルからそのまま制御が移った場合の報告を抑止します。
                   この指令は、ラベルの直前に置いてください。

              /*LINTED [message]*/
                   使用されない変数または関数についての報告だけを有効
                   にし、特定のファイル内で行われるそれ以外の警告を抑
                   止します。この指令は、lint の警告が発生する場所 の
                   直 前 の行に置いてください。 -k オプションは、lint
                   がこの指令を扱う方法に対して警告を発しま す。 メッ
                   セー ジを抑止する代わりに、lint は、コメントに含ま
                   れる追加のメッセージを出力します。この指令は、  -s
                   オ プションとともに使用して、lint 後のフィルタ処理
                   を行うときに便利です。

              /*LINTLIBRARY*/
                   -o が呼び出された場合、先頭の .c ファイルで宣言 さ
                   れ ている場合のみ、ライブラリの .ln ファイルへ書き
                   込みます。この指令は、使用されない関数やこのファイ
                   ル中の関数の引数の報告を抑止します。

              /*NOTREACHED*/
                   到達不可能なコードに関する報告を停止します (通常、
                   こ のコメントは exit(2) のような関数の呼び出しの直
                   後に置きます)。

              /*PRINTFLIKEn*/
                   このコメントがあると、lint は先頭の (n-1) 個の引数
                   を 通常どおり検査します。 nth 番目の引数は、printf
                   書式文字列として処理され、残りの引数の検査に使用さ
                   れます。

              /*PROTOLIBn*/
                   n がゼロでないとき、関数宣言のプロトタイプを関数定
                   義として扱います。この指令は、/* LINTLIBRARY */ 指
                   令と組み合わせた場合にだけ使用できます。 n がゼ ロ
                   のとき、関数プロトタイプは通常どおりに扱われます。

              /*SCANFLIKEn*/
                   lint は先頭の (n-1) 個の引数を通常どおりに検査しま
                   す。nth 番目の引数は、残りの引数を検査するときに使
                   用する scanf 書式文字列として処理します。

              /*VARARGSn*/
                   この指令の後ろにある関数宣言では、引数の数が一定し
                   て い るかどうかの通常の検査を行いません。先頭の n
                   個の引数のデータ型を検査します。 n が指定されて い
                   な い場合は 0 と見なします。新しいコードまたは更新
                   されたコードでは、できるだけ定義の中で 省 略 記 号
                   (...) を使用してください。

         lint に対する指令はファイル note.h をインクルードして、 ソー
         スコードに対する注釈という形式で指定できます。たとえば次のよ
         うになります。
              #include <note.h>

              NOTE(ARGSUSED(n))
              NOTE(CONSTANTCONDITION)
              NOTE(EMPTY)
              NOTE(FALLTHROUGH)
              NOTE(LINTLIBRARY)
              NOTE(LINTED(message))
              NOTE(NOTREACHED)
              NOTE(PRINTFLIKE(n))
              NOTE(PRINTFLIKE(func_name,n))
              NOTE(PROTOLIB(n))
              NOTE(SCANFLIKE(n))
              NOTE(SCANFLIKE(func_name,n))
              NOTE(VARARGS(n))
              NOTE(VARARGS(func_name,n))

         次の 2 つの指令は注釈としてのみ使用可能です。

         NOTE(ALIGNMENT(func_name,n))
              n=1,2,4,8,16,32,64,128; と指定すると
              lint は後に続く関数の結果を n バイトの境界整合に設定 し
              ま す。たとえば、malloc()はワード境界またはダブルワード
              境界へのポインタを実際に戻す場合に char*  または  void*
              を戻す関数として定義されます。

         NOTE(ARGUNUSED(par_name[,par_name...]))
              指定された引数に対して、lint  はその使われ方を検査し ま
              せ ん (このオプションは次に続く関数に対してのみ有効です
              )。

         lint はあるオプションを使用すると、エラーが起こった行位置 を
         ポイントして正確なソースファイル内の行位置を表示できます。こ
         の  機  能  を  有  効  に  す  る  オ   プ   ショ   ン   は
         -errfmt=[macro|simple|src|tab]  です。このオプションを使用す
         ると lint は次の情報を提供します。
           o ソース行と位置
           o マクロ展開
           o エラーを起こす可能性のあるスタック

         lint は最初の出力をソースファイル単位で生成します。 -s を 指
         定 し ないと、取り込まれたファイルに関するメッセージが収集さ
         れ、すべてのソースファイルが処理された後に出力されます。最後
         に、 -C オプションまたは -c オプションを使用しないと、すべて
         の入力ファイルから収集された情報が集められ、その整合性が検査
         さ れ ます。この時点で、メッセージの原因となったのが、ソース
         ファイルなのか、取り込まれたファイルの 1 つなのかはっきり し
         ない場合、ソースファイルの名前とその後ろに疑問符が出力されま
         す。

         -C オプション、 -c オプション、 -o オプションを使用する と、
         複 数の C ソースファイルに対して順次 lint を実行し、結果をま
         とめることができます。通常、各ソースファイルに対して 一 度、
         -C  オプションまたは -c オプションを使用して lint を起動しま
         す。 lint を呼び出すたびに、処理を行なった .c ファイルに対応
         す る .ln ファイルが作成され、そのソースファイルに関するメッ
         セージだけが出力されます。すべてのソースファイルに対して別々
         に lint を実行した後、 -C オプションや -c オプションの代わり
         に、必要な -lx オプションとともにすべての .ln ファイルを指定
         し て、lint をもう一度起動します。これにより、ファイル相互間
         に存在するすべての矛盾が出力されます。この方法は、make; とと
         も に使用すると効果があります。make を使用すれば、一連のソー
         スファイルに対して lint を実行した後、一部のファイルを変更し
         た場合は、変更したファイルだけに linted を実行できます。

## 環境

         TMPDIR                  通常は /tmp ですが、環境変数  TMPDIR
                                 を 設 定 し て 再 定 義 で き ます [
                                 tmpnam(3S)のtempnamを参照してくだ さ
                                 い ]。

         NOTEPATH                注釈の定義ファイルがあるディレクトリ
                                 のパスを、コンマで区切って指定したも
                                 のです。『C ユーザーズガイド』を参照
                                 してください。

## ファイル

         lint[12]                第 1 段階および第 2 段階

         lint2n                  拡張モードの第 2 段階

         llib-lc.ln              C ライブラリ関数の宣言 (バイナリ形式
                                 )

         $TMPDIR/*lint*          一時ファイル

## 関連項目

         cc(1)、 make(1s)、 cflow(1)、 cxref(1)、
         『C ユーザーズガイド』の lint の章を参照。