スタティックの検証は、プログラムのデバッグに役立つ追加の診断機能です。スタティックの検証オプションを使用して、以下のようなコンパイル済みコードの潜在的なエラーを検出することができます。
スタティックの検証オプションは、ソースファイルの解析と問題の検出に使用することができます。これらのソースファイルは、プログラム全体を形成するものである必要はありません。(例えば、スタティックの検証のコマンドラインでライブラリーのソースを渡すことができます。) そのような場合、グローバル・オブジェクトの使用や変更、ルーチンへの呼び出しなどについて部分的な情報しか利用できないため、解析の精度が落ちます。
スタティックの検証オプションが有効になるには、開発したコードがエラーなしでコンパイルに成功する必要があります。
コンパイラー・オプションを起動してスタティックの検証を有効にした場合、コンパイラーは、実行ファイルを生成しません。
入力データを一般化するため (スタティックの検証はすべての入力データに対して実行されます)、スタティックの検証で、プログラムの実行中に発生するかもしれないすべてのエラーを検出することはできません。
スタティックの検証には、プログラム・オブジェクトの変更と使用に関連するヒューリスティックが使用されます。例えば、配列の未定義の要素にある値が設定されると、すべての任意の配列の要素が同じ値に設定されたとみなされます。同様に、未定義のプロシージャー呼び出しの後では、参照によって置き換えられたすべての引数が使用され、変更された可能性があると想定されます。
ランタイムチェックでは入力変数の固定値セットでプログラムを実行するため、すべてのエッジ効果をチェックすることは困難です。しかし、スタティックの検証では、同時にすべての可能性のある値で、プロジェクトの一般的な概要チェックを行います。
-diag-enable sv{[1|2|3]} (Linux* および Mac OS* X) コンパイラー・オプションまたは /Qdiag-enable:sv{[1|2|3]} (Windows*) コンパイラー・オプションを使用してスタティックの検証を有効にします。数字は、診断の重要度 (1= すべてのクリティカル・エラー、2= すべてのエラー、3= すべてのエラーと警告) を指定します。
コマンドラインには、複数のソースファイルを含めることができます。オブジェクト・ファイルは各ソースファイルに対して作成されます。すべてのオブジェクト・ファイルが同時に処理されます。
その他の関連オプションには以下があります。
|
-diag-disable sv |
スタティックの検証を無効にします。 |
|
-diag-disable warn |
スタティックの検証固有のメッセージを含むすべての警告、注意、コメントを抑止します (エラーのみを発行します)。 |
|
-diag-disable num-list |
番号リストによりメッセージを抑止します。num-list は 1 つのメッセージまたはカンマや括弧で区切られたメッセージ番号のリストです。 |
|
-diag-file [file] |
診断結果を .diag (デフォルトの拡張子) ファイルに送ります。診断結果をファイルに送る前にスタティックの検証を有効にする必要があります。ファイル名が指定されていない場合は、診断結果は name-of-the-first-source-file.diag に送られます。 |
|
-diag-file-append[=file] |
診断結果を .diag (デフォルトの拡張子) ファイルに追加します。診断結果をファイルに送る前にスタティックの検証を有効にする必要があります。パスを指定しない場合、現在の作業ディレクトリーが検索されます。指定された名前のファイルがない場合は、その名前の新しいファイルが作成されます。ファイル名が指定されていない場合は、診断結果は name-of-the-first-source-file.diag に送られます。 |
|
-diag-enable sv-include |
インクルード・ファイルとソースファイルを診断します。 |
スタティックの検証を有効にするコマンドライン・オプションとともに -c (Linux および Mac OS X) または /c (Windows) コンパイラー・オプションがコマンドラインで使用された場合、1 つのオブジェクト・ファイルが作成されます。スタティックの検証の診断結果は生成されません。このオブジェクト・ファイルは、さらにスタティックの検証を行う際に使用されることがあります。この機能は、プログラムが異なる言語 (C/C++ と Fortran) で記述されたファイルで構成されたプログラムの場合に役立ちます。
OpenMP 宣言子を解析するには、-openmp (Linux および Mac OS X) オプションまたは /Qopenmp (Windows) オプションをコマンドラインに追加します。
スタティックの検証機能には、以下の項目が含まれます。