スタティックの検証の概要

スタティックの検証は、プログラムのデバッグに役立つ追加の診断機能です。スタティックの検証オプションを使用して、以下のようなコンパイル済みコードの潜在的なエラーを検出することができます。

スタティックの検証オプションは、ソースファイルの解析と問題の検出に使用することができます。ソースファイルは、プログラム全体を形成するものである必要はありません。 (例えば、スタティックの検証のコマンドラインでライブラリーのソースを渡すことができます。) ただし、この場合、グローバル・オブジェクトの使用や変更、ルーチンへの呼び出しなどについて部分的な情報しか利用できないため、解析の精度は落ちます。 

スタティックの検証オプションを有効にするには、開発したコードがエラーなしでコンパイルに成功していなければなりません。

現在の使用モデルでは、スタティックの検証は診断レポートを生成するための代替ビルドオプションとして追加されています。スタティックの検証を有効にすると、コンパイラーは実行ファイルを生成しません。また、生成されるオブジェクト・ファイルは有効なものではないため、実行ファイルやスタティック/ダイナミック・リンク・ライブラリーの生成には使用しないでください。

スタティックの検証は、クロスファイルのプロシージャー間の最適化 (/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

/Qdiag-disable:sv

スタティックの検証を無効にします。

-diag-disable warn

/Qdiag-disable:warn

スタティックの検証固有のメッセージを含むすべての警告、注意、コメントを抑止します (エラーのみを発行します)。

-diag-disable num-list

/Qdiag-disable:num-list

番号リストによりメッセージを抑止します。num-list は 1 つのメッセージまたはカンマや括弧で区切られたメッセージ番号のリストです。

-diag-file [file]

/Qdiag-file[:file]

診断結果を .diag (デフォルトの拡張子) ファイル に送ります。診断結果をファイルに送る前にスタティックの検証を有効にする必要があります。ファイル名が指定されていない場合は、診断結果は name-of-the-first-source-file.diag に送られます。

-diag-file-append[=file]

/Qdiag-file-append[:file]

診断結果を .diag (デフォルトの拡張子) ファイルに追加します。診断結果をファイルに送る前にスタティックの検証を有効にする必要があります。パスを指定しない場合、現在の作業ディレクトリーが検索されます。指定された名前のファイルがない場合は、その名前の新しいファイルが作成されます。ファイル名が指定されていない場合は、診断結果は name-of-the-first-source-file.diag に送られます。

-diag-enable sv-include

/Qdiag-enable sv-include

インクルード・ファイルとソースファイルを診断します。

その他のコンパイラー・オプションとともに -diag-enable sv を使用する

スタティックの検証を有効にするコマンドライン・オプションとともに -c (Linux および Mac OS X) または /c (Windows) コンパイラー・オプションがコマンドラインで使用されると、1 つのオブジェクト・ファイルが作成されます。スタティックの検証の診断結果は生成されません。このオブジェクト・ファイルは、さらにスタティックの検証を行う際に使用されることがあります。この機能は、プログラムが異なる言語 (C/C++ と Fortran) で記述されたファイルで構成されている場合に役立ちます。

OpenMP 宣言子を解析するには、-openmp (Linux および Mac OS X) オプションまたは /Qopenmp (Windows) オプションをコマンドラインに追加します。

IDE でのスタティックの検証の使用

IDE でスタティックの検証サポートを有効にすると、通常ビルドによって生成される最終ファイル (実行ファイルなど) が作成されません。このため、スタティックの検証用に別の構成を作成してください。

Microsoft* Visual Studio* 環境では、既存の Debug (開発用) 構成を次のように変更します。


  1. [Build (ビルド)] メニューまたは [Project Properties (プロパティ ページ)] ウィンドウから、[Configuration Manager (構成マネージャ)] を選択します。

  2. [Active Solution Configuration (アクティブ ソリューション構成)] ドロップダウンで <New..> (<新規作成..>) を選択します。

  3. 構成の名前を入力します。

  4. [Copy Settings from (設定のコピー元)] で Debug 構成を指定します。

  5. [Configuration Manager (構成マネージャ)] を閉じます。

新しい構成がアクティブになっていることを確認して、[C/C++] > [Diagnostics (診断)] プロパティ ページに移動します。[Level of Static Analysis (スタティック解析のレベル)] プロパティと [Analyze Include Files (インクルード・ファイルの解析)] プロパティを使用して、スタティックの検証を制御します。

Eclipse* IDE では、次の操作を行ってください。


  1. プロジェクトのプロパティー・ページを開いて、[C/C++ Build (C/C++ ビルド)] を選択します。

  2. [Manage… (管理…)] ボタンをクリックします。

  3. [Manage (管理)] ダイアログボックスで、[New…(新規)] ボタンをクリックして、[Create configuration (構成を作成)] ダイアログボックスを開きます。

  4. [Name (名前)] ボックスに新しい構成の名前を入力します。

  5. 必要に応じて、[Description (記述)] に構成の説明を入力します。

  6. [Copy settings from (設定のコピー元)][Default configuration (デフォルト構成)]、または [Existing configuration (既存構成)] ラジオボタンをクリックして、対応するドロップダウンメニューから構成を選択します。

  7. [OK] をクリックして [Create configuration (構成を作成)] ダイアログを閉じます。

  8. [OK] をクリックして (新しい構成名が選択されている) [Manage (管理)] ダイアログを閉じます。

プロパティー・ページに新しい構成が表示されます。また、新しい構成がアクティブ構成に指定されます。コンパイラーの [Compilation Diagnostics (コンパイル診断)] を表示します。[Level of Static Analysis (スタティック解析のレベル)] プロパティーと [Analyze Included Files (インクルード・ファイルの解析)] プロパティーを使用して、スタティックの検証を制御します。

Xcode* IDE では、既存の Debug (開発) 構成を次のように変更します。


  1. ターゲットをダブルクリックして、[Get Info (情報を見る)] を選択します。

  2. [Build (ビルド)] プロパティページを表示します。

  3. [Configuration (構成)] ドロップダウンから [Edit Configurations... (構成を編集...)] を選択します。

  4. [Debug] 構成を選択します。

  5. ページの下部にある [Duplicate (複製)] ボタンをクリックします。

  6. 必要に応じて、構成の名前を変更します。デフォルトの名前は Debug 複製 です。

  7. ページを閉じます。

[Configuration (構成)] に新しい構成が設定されていることを確認して、インテル(R) コンパイラーの [DIAGNOSTIC (診断)] コレクションに移動します。[Level of Static Analysis (スタティック解析のレベル)] プロパティと [Analyze Include Files (インクルード・ファイルの解析)] プロパティを使用して、スタティックの検証を制御します。

[Active Target (アクティブターゲット)][Active Build Configuration (アクティブなビルド構成)] で、スタティックの検証が有効な構成をビルドするのに適切な設定を指定します。

 

スタティックの検証機能

スタティックの検証機能には、以下の項目が含まれます。