共用方式為


如何執行驅動程式的程式代碼分析

驅動程式的程式代碼分析提供原始程式碼中可能缺陷的相關信息。 您可以手動執行程式代碼分析,您也可以使用每個組建自動執行程式代碼分析。

本主題內容:

重要

驅動程式的程式代碼分析可在 Windows 24H2 WDK 和 EWDK 中使用,但建議您在未來日期將淘汰。
接下來,CodeQL 將是驅動程式的主要靜態分析工具。 CodeQL 提供功能強大的查詢語言,會將程式代碼視為要查詢的資料庫,讓您輕鬆地撰寫查詢特定行為、模式等等。 如需使用 CodeQL 的詳細資訊,請參閱 CodeQL 和靜態工具標誌測試

執行程式碼分析

手動對驅動程式原始程式碼執行程式碼分析

  1. 在 Visual Studio 中,選取驅動程式項目檔或方案,然後選取要分析的項目組態和平臺。
  2. 從 [分析] 或 [建置] 功能表中,單擊 [在方案上執行程序代碼分析]。

使用每個組建自動對驅動程式原始碼執行程式碼分析

  1. 在 Visual Studio 中,以滑鼠右鍵按兩下 方案總管 中的驅動程式專案或方案,然後按兩下 [屬性]。
  2. 在專案的 [屬性] 對話框中,按兩下 [ 程序代碼分析]。
  3. 在 [ C/C++ 屬性 的程式代碼分析] 頁面中,選取您要分析的項目組態和平臺(例如 Windows 8 和 Win32)。
  4. 選取 [在建置時啟用 C/C++的程式代碼分析]。
  5. 在 [規則集] 底下,選取 [驅動程序建議規則] Microsoft。 這是驅動程式的預設規則集。
  6. 在 [建置] 功能表中,按兩下 [建置方案]。

檢視程式代碼分析結果

如果在原始程式碼中找到可能的瑕疵,[ 程序代碼分析結果 ] 視窗會顯示程式代碼分析警告編號,以及發生瑕疵的來源檔案中的行號。

檢視瑕疵

  1. 在 [程序代碼分析結果] 視窗中,按兩下行號,並在 [程序代碼分析結果] 視窗中顯示瑕疵的描述。

    [程序代碼] 視窗會顯示原始程式碼,並指出瑕疵發生的位置。

  2. 若要深入瞭解特定警告,請按兩下 [程序代碼分析結果] 視窗中的 [警告]。

檢視與組建相關聯的程式代碼分析記錄檔

  1. 瀏覽至組建組態和平台的目錄(例如 )。 \\Windows7Release\\x64
  2. 如果您使用建議的規則,則記錄檔稱為 vc.\*codeanalysis.xml。 如果您要建立適用於 Windows Server 2012 的驅動程式,此檔案會用來建立驅動程式驗證記錄。

隱藏瑕疵報告

在某些情況下,您可能會想要隱藏特定警告訊息的報告;例如,如果警告主要是參考性的,而且您知道錯誤的原因。

隱藏警告訊息

  1. 若要移除回報瑕疵的實例,請在 [程序代碼分析結果] 視窗中選取行號和警告

  2. 在警告的展開描述中,按兩下 [動作>隱藏訊息>來源]。

    具有隱藏規範的 pragma warning 指示詞只會針對緊接在 #pragma warning 語句之後的程式代碼行隱藏警告。

    #pragma warning(suppress: 6014)
    

變更核心模式驅動程式警告 C6262 的堆疊使用量限制

在使用者模式和內核模式程式代碼中,堆疊空間有限,且無法認可堆棧頁面會導致堆疊溢位例外狀況。 高堆疊使用量在核心模式中特別值得關注,因為可用的堆疊空間總計只有 12 KB。 核心模式程式代碼應積極限制堆疊使用。

如果函式本機使用超過 1 KB 的堆疊空間,程式代碼分析工具會發出警告 C6262 。 如果您想要調查可能耗用大量資源的函式,您可以自定義或降低 C6262 所使用的堆棧閾值限制。 如果您降低堆疊閾值限制,程式代碼分析工具可能會發現更多問題。 然後,您可以選擇解決這些堆疊使用量問題。 例如,您可以將臨界值降低到 400 個字節,以查看其他函式是否使用資源。

自定義 C6262 的堆疊大小限制

  1. 在 [記事本] 或其他文本編輯器中,開啟核心模式驅動程式的 Visual Studio 專案檔 (.vcxproj)。
  2. 為編譯程式 <ClCompile> 新增 ItemDefinitionGroup。<>
  3. <新增PREfastAdditionalOptions>元素,並設定 stacksize<位元組>。 默認值為 stacksize1024
     <ItemDefinitionGroup>
       <ClCompile>


      <!-- Change stack depth for C6262 from 1024 to 400 -->
      <PREfastAdditionalOptions>stacksize400</PREfastAdditionalOptions>

    </ClCompile>
  </ItemDefinitionGroup>
  1. 儲存專案檔。 啟動 Visual Studio、載入更新的驅動程式專案,然後執行程式代碼分析。

    若要還原為預設值 1 KB,請復原您對項目檔所做的變更,或將堆棧大小值變更為 stacksize1024

驅動程式警告的程式代碼分析