PC-Lint是一款針對C/C++的代碼靜態(tài)分析工具,可以把它看作一種更加嚴(yán)格的編譯器,不僅可以檢查出一般的語法錯誤(當(dāng)前編譯器所作的工作),還可以檢查出那些符合語法要求但不易發(fā)現(xiàn)的潛在錯誤,如:
- else對if的就近匹配原則
- 優(yōu)先級導(dǎo)致的錯誤
- 以0開頭的數(shù)字(作為8進(jìn)制處理)
- &&, ||, ==等的漏寫
C/C++語言的靈活性帶來了代碼效率的提升,但也因其靈活性而帶來了代碼編寫的隨意性,另外C/C++編譯器不進(jìn)行強制類型檢查,也帶來了代碼編寫的隱患。PC-Lint識別并報告C/C++語言中的編程陷阱和格式缺陷的發(fā)生。它進(jìn)行程序的全局分析,能識別沒有被適當(dāng)檢驗的數(shù)組下標(biāo),報告未被初始化的變量,警告使用空指針,冗余的代碼等等。軟件除錯是軟件項目開發(fā)成本和延誤的主要因素。根據(jù)發(fā)現(xiàn)錯誤時間與成本成指數(shù)級的關(guān)系,PC-Lint能夠幫你在程序動態(tài)測試之前發(fā)現(xiàn)編碼錯誤。這樣消除錯誤的成本更低。
正因為其重要性,在很多專業(yè)級的軟件公司,如Microsoft中,PC-Lint檢查是無錯誤無警告是代碼首先要過的第一關(guān)。 本文將就PC-Lint在VC6上的使用作一簡單的介紹:
- 下載與安裝
官方網(wǎng)址為:http://www.gimpel.com/,但PC-Lint是一款共享軟件,因此只能通過其它途徑下載使用了,本人使用的是PC-Lint8.0w版本。 - 配置
文件解壓后可以看到如下文件:(解壓目錄為E:\Work\DevLib\pclint,以下將用$(PC-Lint)代替)
可以使用Config.exe的向?qū)Чδ芘渲脗€針對自個環(huán)境的lnt文件,我這里是直接編輯文本文件std.lnt,保存在$(PC-Lint)目錄下,其中VC6的安裝目錄為:d:\Program Files\Microsoft Visual Studio\VC98。std.lnt內(nèi)容如下:au-sm.lnt
co-msc60.lnt
env-vc6.lnt
lib-mfc.lnt
lib-stl.lnt
lib-w32.lnt
lib-wnt.lnt
lib-atl.lnt
options.lnt -si4 -sp4
-i"d:\Program Files\Microsoft Visual Studio\VC98\Include"
-i"d:\Program Files\Microsoft Visual Studio\VC98\atl\include"
-i"d:\Program Files\Microsoft Visual Studio\VC98\MFC\include" - 在std.lnt中的options.lnt屬于新增文件,用于增刪某些反映全局編譯信息的選項。如"-e783",用于關(guān)閉警告信息:當(dāng)文件不是以空行結(jié)束時。
- 整合到IDE
打開VC6菜單上的工具--->定制部分,在工具選項卡中增加PC-Lint項,參數(shù)設(shè)置如下圖所示:
- 添加快捷鍵
打開工具菜單,首先看PC-Lint位于工具組中的很幾項(我這里是第8項),然后點擊定制--->鍵盤,在"分類"中選擇工具,在命令中選擇"UserTool8",將光標(biāo)移到新建快捷鍵中,此時在鍵盤上同時按下"CTRL+F12"鍵(注意看提示是否此快捷鍵已經(jīng)使用),點"OK",就可以用CTRL+F12執(zhí)行PC-LINT了
- 使用
設(shè)置完成后,在菜單的工具欄中就有了PC-Lint項了,對當(dāng)前打開的C/C++文件,執(zhí)行此項操作就可以在Output窗口中輸出執(zhí)行信息了,如下圖所示:
一切正常的話, return code為0,本文這里出現(xiàn)2個錯誤是由于使用了命名空間std,如不使用則正常,目前也不知道什么原因,main.cpp代碼如下:
1#include <iostream>
2int main(int argc, char* argv[])
3{
4(void)argc;
5(void)argv;
6std::cout<<"Hello, World!\n";
7return 0;
8}
- 更多參考
a. 如何在Source Insight中配置PC-Lint
b. 在IDE中PC-Lint整個項目文件
c. PCLint 在VC6.0下的配置使用