版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系我們

[科普中國]-PREFast for Drivers

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識科普陣地
收藏

PREfast(Prefast.exe)是微軟公司為驅(qū)動程序設(shè)計所提供的靜態(tài)的源代碼分析工具(static source code analysis tool),可偵測原始代碼中不易用一般編譯器找到的特定類型錯誤,與Windows DDK建置環(huán)境一同安裝。目前已集成至Visual Studio 2005 Team Suite中,使用時只要設(shè)置‘Enable Code Analysis For C/C++’為‘Yes’即可,接下來PREfast會攔截cl編譯器 (cl.exe) 的調(diào)用,產(chǎn)生由一次檢查所有文件所得的單一聯(lián)合清單,內(nèi)容屬于XML格式。

簡介PREfast(Prefast.exe)是微軟公司為驅(qū)動程序設(shè)計所提供的靜態(tài)的源代碼分析工具(static source code analysis tool),可偵測原始代碼中不易用一般編譯器找到的特定類型錯誤,與Windows DDK建置環(huán)境一同安裝。目前已集成至Visual Studio 2005Team Suite中,使用時只要設(shè)置‘Enable Code Analysis For C/C++’為‘Yes’即可,接下來PREfast會攔截cl編譯器 (cl.exe) 的調(diào)用,產(chǎn)生由一次檢查所有文件所得的單一聯(lián)合清單,內(nèi)容屬于XML格式。

偵測錯誤類別:

存儲器:內(nèi)存泄露(memory leak)。

資源:沒能即時釋放資源。

函數(shù)使用方式:不正確的函數(shù)引數(shù)、使用某個過時函數(shù)的情況。

浮點(diǎn)運(yùn)算狀態(tài)

優(yōu)先運(yùn)行規(guī)則

核心模式程序安全性考量1

PREfast的工作變量未初始化

void init() { int a; int b; b = a;}運(yùn)算對象優(yōu)先權(quán)的問題

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);}死循環(huán)

void infinite_loop() { int i; for(i = 100 ; i >= 0 ; i ++ ) { ; }}運(yùn)算對象誤用2

void op_misuse() { int a = 2; if (a = 2) return ;}相關(guān)條目Windows Driver Foundation

本詞條內(nèi)容貢獻(xiàn)者為:

王慧維 - 副研究員 - 西南大學(xué)