PREFast for Drivers

PREfast(Prefast.exe)是微軟公司驅動程式設計所提供的靜態的原始碼分析工具(static source code analysis tool),可偵測原始程式碼中不易用一般編譯器找到的特定類型錯誤,與Windows DDK建置環境一同安裝。目前已整合至Visual Studio 2005 Team Suite中,使用時只要設定‘Enable Code Analysis For C/C++’為『Yes』即可,接下來PREfast會攔截cl編譯器 (cl.exe) 的呼叫,產生由一次檢查所有檔案所得的單一聯合清單,內容屬於XML格式。

偵測錯誤類別:

  • 記憶體:内存泄露(memory leak)。
  • 資源:沒能即時釋放資源。
  • 函式使用方式:不正確的函式引數、使用某個過時函式的情況。
  • 浮點運算狀態
  • 優先執行規則
  • 核心模式程式安全性考量

PREfast的工作

[编辑]
  • 變數未初始化
void init() {     int a;     int b;     b = a; } 
  • 運算元優先權的問題
void priority() {     int a = 1;     int b = 1;     int c = 1;     if(a & b == c)        return ; } 
  • 記憶體溢位問題
void overrun() {      char buf[100];     char buf2[200];     int  i = 100;      sprintf(buf, "size%d" , i);     strcpy(buf, buf2); } 
  • 無窮迴圈
void infinite_loop() {     int i;     for(i = 100 ; i >= 0 ; i ++ ) {                ;      } } 
  • 運算元誤用
void  op_misuse() {     int a = 2;     if (a = 2)        return ; } 

相關條目

[编辑]

外部連結

[编辑]