スタティックの検証は、プログラムのデバッグに役立つ追加の診断機能です。スタティックの検証オプションを使用して、以下のようなコンパイル済みコードの潜在的なエラーを検出することができます。
スタティックの検証オプションは、ソースファイルの解析と問題の検出に使用することができます。ソースファイルは、プログラム全体を形成するものである必要はありません。(例えば、スタティックの検証のコマンドラインでライブラリーのソースを渡すことができます。) そのような場合、グローバル・オブジェクトの使用や変更、ルーチンへの呼び出しなどについて部分的な情報しか利用できないため、解析の精度が落ちます。
スタティックの検証オプションを有効にするには、開発したコードがエラーなしでコンパイルに成功していなければなりません。
現在の使用モデルでは、スタティックの検証は診断レポートを生成するための代替ビルドオプションとして追加されています。スタティックの検証を有効にすると、コンパイラーは実行ファイルを生成しません。また、生成されるオブジェクト・ファイルは有効なものではないため、実行ファイルやスタティック/ダイナミック・リンク・ライブラリーの生成には使用しないでください。
スタティックの検証は、クロスファイルのプロシージャー間の最適化 (/Qipo または -ipo) と一緒に使用することはできません。
スタティックの検証では、入力データは一般化されるため (スタティックの検証はすべての入力データに対して実行されます)、プログラムの実行中に発生する可能性のあるすべてのエラーを検出することはできません。
スタティックの検証には、プログラム・オブジェクトの変更と使用に関連するヒューリスティックが使用されます。例えば、配列の未定義の要素にある値が設定されると、すべての任意の配列の要素が同じ値に設定されたとみなされます。同様に、未定義のプロシージャー呼び出しの後では、参照によって置き換えられたすべての引数が使用され、変更された可能性があると想定されます。
ランタイムチェックでは入力変数の固定値セットでプログラムを実行するため、すべてのエッジ効果をチェックすることは困難です。しかし、スタティックの検証では、同時にすべての可能性のある値で、プロジェクトの一般的な概要チェックを行います。
-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) オプションをコマンドラインに追加します。
IDE でスタティックの検証サポートを有効にすると、通常ビルドによって生成される最終ファイル (実行ファイルなど) が作成されません。このため、スタティックの検証用に別の構成を作成してください。
Microsoft* Visual Studio* 環境では、既存の Debug (開発用) 構成を次のように変更します。
新しい構成がアクティブになっていることを確認して、[Intel(R) Fortran (インテル(R) Fortran)] > [Diagnostics (診断)] プロパティ ページに移動します。[Level of Static Analysis (スタティック解析のレベル)] プロパティと [Analyze Include Files (インクルード・ファイルの解析)] プロパティを使用して、スタティックの検証を制御します。
Xcode* IDE では、既存の Debug (開発) 構成を次のように変更します。
[Configuration (構成)] に新しい構成が設定されていることを確認して、インテル(R) コンパイラーの [DIAGNOSTIC (診断)] コレクションに移動します。[Level of Static Analysis (スタティック解析のレベル)] プロパティと [Analyze Include Files (インクルード・ファイルの解析)] プロパティを使用して、スタティックの検証を制御します。
[Active Target (アクティブターゲット)] と [Active Build Configuration (アクティブなビルド構成)] で、スタティックの検証が有効な構成をビルドするのに適切な設定を指定します。
スタティックの検証機能には、以下の項目が含まれます。