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格式。

基本介紹

  • 中文名:PREfast
  • 外文名:PREfast
  • 領域:計算機
簡介,PREfast的工作,相關條目,

簡介

PREfast(Prefast.exe)是微軟公司驅動程式設計所提供的靜態的原始碼分析工具(static source code analysis tool),可偵測原始代碼中不易用一般編譯器找到的特定類型錯誤,與Windows DDK建置環境一同安裝。集成至Visual Studio 2005Team 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 ;}

相關條目

相關詞條

熱門詞條

聯絡我們