Oracle® Solaris Studio 12.4: C ユーザーガイド

印刷ビューの終了

更新: 2014 年 12 月
 
 

4.3.27 -Nlevel=n

(廃止) -Nlevel オプションは、将来のリリースで削除される予定です。

拡張 lint 解析のレベルを指定することによって、問題報告の拡張 lint モードを有効にします。このオプションは、検出されるエラーの量の制御を提供します。レベルが高いほど検証にかかる時間は長くなります。n は数値で、1234 のいずれかです。デフォルトはありません。-Nlevel が指定されなかった場合は、lint の基本解析モードが使用されます。引数なしで -Nlevel が指定された場合は、-Nlevel=4 に設定されます。

基本および拡張 lint 使用方法 モードについては、Using lintを参照してください。

4.3.27.1 -Nlevel=1

個々の手続きを解析します。いくつかのプログラムの実行パスで発生する無条件エラーを報告します。大域的なデータおよび制御のフロー解析は行いません。

4.3.27.2 -Nlevel=2

大域的なデータおよびフローを含め、プログラム全体を解析します。いくつかのプログラムの実行パスで発生する無条件エラーを報告します。

4.3.27.3 -Nlevel=3

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

この解析レベルでの C プログラムの検査は、前述のレベルより 2 倍から 4 倍長い時間がかかります。これは、lint がプログラムの変数に対して取り得る値の集合を作成し、プログラムの部分解釈を行うためです。これらの変数値の集合は、定数と、プログラムで使用可能な定数オペランドを含む条件文に基づいて作成され、ほかの集合 (定数伝播の形式) を作成するときの基準になります。

そのあと、解析の結果として受け取った集合は、次のアルゴリズムに従って誤りがないか評価されます。

  • オブジェクトが取り得る値の集合の中に正しい値が存在する場合は、その値が次の伝搬の基準として使用されます。正しい値が存在しない場合は、エラーと診断されます。

4.3.27.4 -Nlevel=4

-Nlevel=3 で実行される解析に加えて、プログラム全体を解析して一定のプログラム実行パスが使用された場合に発生する条件付きエラーも報告します。

この解析レベルでは、さらに多くの診断メッセージが出力されます。一般的に、この解析アルゴリズムは、不正な値に対してエラーメッセージが生成されることを除けば、-Nlevel=3 の解析アルゴリズムと同じです。このレベルでの解析に要する時間は、2 桁ほど増加する可能性があります (約 20 倍から 100 倍遅い)。この場合、余分な所要時間は、再帰や条件文などで特徴づけられるプログラムの複雑さに直接比例します。結果として、100,000 行を超えるプログラムでこのレベルの解析を使用するのは困難である可能性があります。