前言
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