WDK中的Prefast工具使用

Just4life發表於2013-07-30

PREfast

你可以使用PREfast來分析核心模式的驅動(KMDF)和其他核心模式的元件。你也可以使用PREfast來分析使用者模式的驅動,即UMDF。PREfast是WDK自帶的,你不需要自己再次安裝。

預設情況下, PREfast是根據KMDF的規則來分析程式碼的。為了能夠分析UMDF,你必須設定分析模式為__user_driver,詳情見 “如何指定PREfast分析模式”, 或者更簡單的方式是,直接忽略核心相關的警告.

PREfast 分析模式

PREfast分析模式決定了它分析程式碼是所採用的規則。The analysis-mode annotation that is defined in %wdk%/inc/ddk/driverspecs.h informs PREfast whether a particular body of code is user-mode or kernel-mode code and whether the code is actually a driver. This annotation applies to an entire source file.

分析模式可以是下面模式定義中的一個:

__kernel_driver

對應核心驅動程式碼. 這個是預設的分析模式。

__kernel_code

對應核心模式非驅動程式碼。

__user_driver

對應使用者模式的驅動程式碼。

__user_code

對應使用者模式非驅動程式碼。

如果__kernel_driver 分析模式對於一個特定的驅動來說,是一個錯誤的分析的模式,你可以在原始碼檔案或者合適的標頭檔案中插入合適的分析模式定義,來實現分析模式的自定義,當然了,這個定義必須放在任何函式之前,最好的一個做法就是放在#include 或者語句之後。

如何執行PREfast

1. 開啟你的編譯環境的視窗。

2. 使用 cd 命令進入你的原始碼目錄.

3. 輸入prefast build, 也可以帶有build的引數,例如:

prefast build –cZ

clip_image002

PREfast分析程式碼,然後把分析的結果寫入到xml檔案,預設的xml檔案是Defects.xml,它的路徑是 %wdk%/tools/pfd/。 你如果想寫到別的目錄下,你可以使用 /LOG= 引數來切換.

PREfast分析結果

你可以使用下面的命令來顯示分析的結果:

· 使用prefast view 命令來在視窗中顯示分析結果。如下圖:

· clip_image004

· 使用prefast list 命令在編譯環境中顯示檢測結果. 就是在那個cmd視窗下顯示。

我就著重介紹一下PREfast defect log viewer 吧,因為這個我感覺用著比較方便,它提供了一個圖形化的視窗。

clip_image005

Message List中, 你可以有如下操作:

· 點選列表頭—Description, Warning, Source Location, or In Function—用來給這些訊息排序.

· 雙擊一個訊息就開啟了View Annotated Source 介面,顯示了這個訊息相關的程式碼段.如下圖

clip_image007

注:點選Show Entire File按鈕顯示整個檔案。

· 點選Filter按鈕 顯示了過濾規則,在這裡你可以選擇相關的過濾規則。如下圖:

clip_image009

注:點選Invert隱藏你所選中的過濾規則。

相關文章