簡介:
pc_lint是GIMPEL SOFTWARE公司開發的C/C++軟件代碼靜態分析工具,它的全稱是PC-Lint/FlexeLint for C/C++, pc_lint能夠在Windows、MS-DOS和OS/2平台上使用,以二進制可執行文件的形式發布,而FlexeLint 運行於其它平台,以源代碼的形式發布。
工具類型:靜態工具。
支持平台:Windows。
使用方法:可配置到VS外部工具,也可以直接命令進行檢查。
輸出文件:直接在VS輸出窗口中輸出。或者輸出到文件
查看問題:如果在VS窗口輸出,雙擊報錯行,可以直接跳轉到問題代碼位置。
檢查范圍:
pc_lint不僅能夠對程序進行全局分析,識別沒有被適當檢驗的數組下標,報告未被初始化的變量,警告使用空指針以及冗余的代碼,還能夠有效地幫你提出許多程序在空間利用、運行效率上的改進點。從某種意義上說。 pc_lint是一種更加嚴格的編譯器,它除了可以檢查出一般的語法錯誤外,還可以檢查出那些雖然符合語法要求,但很可能是潛在的、不易發現的錯誤。
pc_lint的注釋:
//lint -save -e***
代碼段;//帶有error ***的告警信息
//lint –restore
VS2005配置方法:
1、首先,將獲取到的pc_lint壓縮包解壓到C盤根目錄,注意放到其他目錄會導致pc_lint不好用。
2、配置VS路徑:打開pc_lint對VS的配置文件(C:\pclint\std_VS2005.lnt),配置好本地的VS路徑,如下圖所示。
3、配置將要檢測的本地代碼路徑:繼續配置剛剛的文件(C:\pclint\std_VS2005.lnt),一鍵替換成要檢測的本地代碼路徑。(此處很重要,每次進行工程檢測時,都需要重新替換,保證檢測的工程能對得上)
4、修改檢測規則配置:打開檢測規則配置文件(C:\pclint\options.lnt),如下圖:類型1代表當前的檢測規則;類型2這種首位出現//的都算作是注釋,和沒寫一樣;類型3代表屏蔽的檢測規則。
5、將pc_lint配置到VS2005中:打開VS2005->工具->外部工具->添加
工具1:(創建工程)
標題:PC-lint (Project Creation)
命令:C:\pclint\lint-nt.exe
參數:-v -os("$(TargetName).lnt") "$(ProjectFileName)"
初始目錄:$(ProjectDir)
勾選退出時關閉
工具2:(對VS當前選中的單個文件進行Check)
標題:PC-lint (Simple Check)
命令:C:\pclint\lint-nt.exe
參數:-i"c:\pclint" std_vs2005.lnt env-vc8.lnt "$(ItemDir)$(ItemFileName)$(ItemExt)"
初始目錄:$(ItemDir)
勾選使用輸出窗口
工具3:(對VS當前選中的單個文件所在的工程目錄下的所有文件進行Check)
標題:PC-lint (Project Check)
命令:C:\pclint\lint-nt.exe
參數:-i"c:\pclint" std_vs2005.lnt env-vc8.lnt "$(TargetName).lnt"
初始目錄:$(ProjectDir)
勾選使用輸出窗口
- 使用方法:
1、首先,需要檢查配置文件C:\pclint\std_VS2005.lnt是否是待檢查的項目。
2、檢測單個文件:直接打開想檢測的文件,再依次使用工具1,工具2即可。
3、檢測工程文件:直接打開工程中的任意一個文件,再依次使用工具1,工具3即可。
4、貼士:檢測過程中會同時對當前文件引用到的文件進行Check,所以有可能檢測A文件,但是查出的是B文件的問題,這都是有可能的。
- 查看問題:
工程檢測速度會比較慢,可以通過VS2005->工具查看是不是已經檢測完成,未完成時會有“(停止)”的字樣,所有工具都可以用這個辦法來判斷。
檢測結果全部都在輸出窗口中,可以隨時進行切換查看。
pc_lint輸出窗口上有三個內容,下面來一一說明下:
1、檢測輸出的頭:
2、檢測出的內容輸出:
有問題的地方會有error顯示。
3、檢測輸出的尾:輸出結束的標志,同時也標志着所檢測出的問題計數。
左側代表沒有檢測出問題,右側代表檢測出了16個問題。
命令檢查方法:
1、_lint壓縮包解壓到C盤根目錄。
2、進入cmd模式
3、修改檢測規則配置:打開檢測規則配置文件(C:\pclint\options.lnt),配置方法和上面一致。
4、檢查文件:Lint-nt option 【文件絕對路徑】
例如:Lint-nt option /home/jierjiasi/code/dev/Main.cpp。結果會直接輸出到cmd窗口中。
Lint-nt option /home/jierjiasi/code/dev/*.cpp > LintOutput.txt【參考makefile】。結果輸出到【LintOutput.txt】文件中
Lint-nt option /home/jierjiasi/code/dev/*.h >> LintOutput.txt【參考makefile】。結果繼續輸出到【LintOutput.txt】文件中
5、檢查完成后可在輸出文件或窗口中查看問題個數,並尋找error。
進階版:自動化檢查
待續