ドライバーのコード分析を実行する方法

ドライバーのコード分析を実行すると、ソース コードに含まれる欠陥の可能性に関する情報を取得できます。コード分析は、手動で実行することも、各ビルドに対して自動的に実行することもできます。

このトピックの内容:

コード分析の実行

Hh454219.wedge(ja-jp,VS.85).gifドライバーのソース コードに対するコード分析を手動で実行するには

  1. Visual Studio で、ドライバーのプロジェクト ファイルまたはソリューションを選び、分析するプロジェクト構成とプラットフォームを選びます。
  2. [分析] メニューまたは [ビルド] メニューの [ソリューションでコード分析を実行] をクリックします。

Hh454219.wedge(ja-jp,VS.85).gifドライバー ソース コードに対するコード分析をビルドごとに自動的に実行するには

  1. Visual Studio のソリューション エクスプローラーで、ドライバー プロジェクトまたはソリューションを右クリックし、[プロパティ] をクリックします。
  2. プロジェクトのプロパティ ダイアログ ボックスで、[コード分析] をクリックします。
  3. [Code Analysis for C/C++ Properties] (C/C++ のコード分析のプロパティ) ページで、分析するプロジェクト構成とプラットフォームを選びます (たとえば、Windows 8 と Win32)。
  4. [Enable Code Analysis for C/C++ on Build] (ビルド時に C/C++ のコード分析を有効にする) を選択します。
  5. [ルール セット] で、[Microsoft Driver Recommended Rules] (Microsoft ドライバー推奨ルール) を選択します。これは、ドライバーの既定のルール セットです。
  6. [ビルド] メニューの [ソリューションのビルド] をクリックします。

コード分析の結果の表示

ソース コードに欠陥の可能性が見つかった場合、[Code Analysis Results] (コード分析の結果) ウィンドウに、コード分析の警告番号と、ソース ファイル内で欠陥が見つかった行の番号が表示されます。

Hh454219.wedge(ja-jp,VS.85).gif欠陥の表示

  1. コード分析の結果ウィンドウで行番号をクリックすると、コード分析の結果ウィンドウに欠陥の説明が表示されます。

    コード ウィンドウにソース コードが表示され、欠陥のある箇所が示されます。

  2. 特定の警告に関する詳しい情報を表示するには、[Code Analysis Results] (コード分析の結果) ウィンドウの [警告] をクリックします。

Hh454219.wedge(ja-jp,VS.85).gifビルドに関連付けられたコード分析のログ ファイルを表示するには

  1. ビルド構成とプラットフォームのディレクトリに移動します (たとえば、\Windows7Release\x64)。
  2. 推奨ルールを使う場合のログ ファイルは、vc.*codeanalysis.xml です。 Windows Server 2012 向けのドライバーを作成する場合は、このファイルを使ってドライバーの検証のログが作成されます。

欠陥のレポートの抑制

たとえば、警告の主要目的が情報提供であり、そのエラーの原因がわかっている場合など、特定の警告メッセージを抑制できます。

Hh454219.wedge(ja-jp,VS.85).gif警告メッセージを抑制するには

  1. 報告された欠陥のインスタンスを削除するには、[Code Analysis Results] (コード分析の結果) ウィンドウで、目的の行番号と警告を選びます。
  2. 展開された警告の説明内で、[操作][メッセージの非表示][ソース内] の順にクリックします。

    suppress 指定子付きの pragma warning ディレクティブにより、#pragma warning ステートメントの直後のコード行に関してのみ警告が抑制されます。

    
    #pragma warning(suppress: 6014)
    
    

カーネル モード ドライバーに対する警告 C6262 でのスタック使用量の制限の変更

ユーザー モードとカーネル モードのコードでは、スタック領域に制限があり、スタックのページをコミットできない場合はスタック オーバーフロー例外が発生します。特にカーネル モードでは、利用できるスタック領域が合計で 12 KB しかないため、スタックの使用量が多いと問題になります。 カーネル モード コードでは、スタックの使用を積極的に控える必要があります。

コード分析ツールは、1 KB を超えるスタック領域が関数内でローカルに使われている場合に警告 C6262 を表示します。 リソースを大量に消費している可能性のある関数を調べる場合は、C6262 で使われるスタックのしきい値をカスタマイズして小さくすることができます。 スタックのしきい値を小さくすると、コード分析ツールでより多くの問題を検出できる可能性が高まります。その後、見つかったスタック使用量の問題に対処できます。 たとえば、しきい値を 400 バイトに下げて、他の関数でリソースが使われているかどうかを調べることができます。

Hh454219.wedge(ja-jp,VS.85).gifC6262 のスタック サイズの制限をカスタマイズするには

  1. メモ帳などのテキスト エディターで、カーネル モード ドライバー (またはコンポーネント) の Visual Studio プロジェクト ファイル (.vcxproj) を開きます。
  2. コンパイラ <ClCompile> を含む新しい <ItemDefinitionGroup> を追加します。
  3. <PREfastAdditionalOptions> 要素を追加して stacksize<bytes> を設定します。既定値は stacksize1024 です。
    
    
      <ItemDefinitionGroup>
        <ClCompile>
    
        
          <!-- Change stack depth for C6262 from 1024 to 400 -->
          <PREfastAdditionalOptions>stacksize400</PREfastAdditionalOptions>
    
        </ClCompile>
      </ItemDefinitionGroup>
    
    
    
    
    
  4. プロジェクト ファイルを保存します。Visual Studio を起動し、更新されたドライバー プロジェクトを読み込んで、コード分析を実行します。

    既定の 1 KB に戻すには、プロジェクト ファイルに加えた変更を元に戻すか、スタック サイズの値を stacksize1024 に変更します。

関連トピック

ドライバーのコード分析の警告

 

 

表示:
© 2014 Microsoft