PC-lint 簡明教程(C/C++靜態代碼檢查工具)


前言

PC-lint是一款小而強大的C/C++靜態代碼檢查工具,它可以檢查未初始化變量,數組越界,空指針等編譯器很難發現的潛在錯誤。在很多專業的軟件公司如Microsoft,PC-Lint檢查無錯誤無警告是代碼首先要過的第一關。

 

安裝配置

有關安裝步驟,請參考附錄中的文章“靜態代碼檢查工具PC-Lint“的“4 PC-Lint軟件使用方法”,不過該文章使用的是VC++ 6.0的開發環境,最新的PC-lint 9.0支持VS2008,可以在安裝過程中自己選擇。

關於PC-lint和VS2008的集成,請參考PC-Lint安裝目錄下的env-vc9.lnt文件,里面講解的非常之詳細,不必參考“靜態代碼檢查工具PC-Lint”這篇文章中的該段內容(如果你的E文不是很好,那參考一下中文還是有幫助的)。

在env-vc9.lnt文件中的Simple Check部分,有如下一段內容:

Arguments: -i"c:/lint" std.lnt env-vc9.lnt "$(ItemFileName)$(ItemExt)"

建議使用以下一段新的Arguments:

Arguments: -i"c:/lint" std.lnt env-vc9.lnt "$(ItemDir) $(ItemFileName)$(ItemExt)"

作用是在檢查代碼的生成結果中,可以雙擊某一個檢查結果直接定位到代碼中的某一行,缺點是檢查結果會更長一點,因為它使用了全路徑。

依照env-vc9.lnt的說明配置完成后,在VS2008的Tools菜單下會有四個PC-lint的選項,如下圖所示。

 

常見錯誤

1. 在PC-lint的Configuration向導結束后,會在PC-lint的安裝目錄下生成std.lnt文件,里面有一行:

options.lnt -si4 -sp4

如果按照“靜態代碼檢查工具PC-Lint“走完所有的標准配置的話,options.lnt會自動生成,但無內容(注釋除外),如果中間某一步skip了,可能該文件就不會生成,這時就需要手動創建一個options.lnt文件,或在std.lnt中注釋掉options.lnt,否則會在使用PC-lint時會出現找不到options.lnt的錯誤。

PC-lint的安裝包下面還有一個options.lnt文件(非自帶),可以直接拷貝到PC-lint安裝路徑下替換掉原來的文件,里面我已經加了一些屏蔽錯誤項作為示例。

2. 在使用PC-lint的過程當中,如果發生某個庫頭文件找不到的錯誤,可以打開std.nt文件,在后面添加該頭文件所在的全路徑,格式如下:

-i"D:/WinDDK/7600.16385.0/inc"

3. PC-lint不支持Unicode Codepage 1200和1201,請使用Unicode (UTF-8 with signature) - Codepage 65001.

 

使用PC-lint

在安裝完並配置成功之后,使用PC-lint可以說是易如反掌,只要打開一個VC++工程,單擊“Tools”菜單下的四個PC-lint選項即可,以下是這四個選項的使用區別:

1. PC-lint (Simple Check)

只能對單個文件進行檢查。

打開一個cpp文件(或頭文件),單擊PC-lint (Simple Check)即可。

2. PC-lint (Project Creation)

創建工程的文件列表。

打開一個VC++工程,單擊PC-lint (Project Creation),然后會有一個(工程名).lnt文件生成到該工程目錄下。打開檢查一下是否包含了所有的源文件,可以手動修改。

3. PC-lint (Project Check)

對整個工程進行代碼檢查。

在(工程名).lnt創建以后,直接單擊PC-lint (Project Check)即可。

4. PC-lint (Unit Check)

對單個文件進行檢查,但是應用了PC-lint (Project Creation)生成的(工程名).lnt文件中的-d和-i選項。

打開一個cpp文件(或頭文件),單擊PC-lint (Unit Check)即可。

 

總結

准備好了嗎,還不立馬趕在領導之前去檢查一下你的代碼!!!

 

附錄

靜態代碼檢查工具PC-Lint

http://blog.chinaunix.net/u/30686/showart_408389.html

PCLint使用介紹

http://blog.csdn.net/lbqBraveheart/archive/2010/05/17/5602391.aspx

http://blog.csdn.net/harbinzju/article/details/5844221


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM