使用pc-lint助力symbian開發
使用pc-lint一段時間了,感覺確實對代碼質量提升有很大幫助。再此,寫一篇文章講講它在symbian開發中的使用方法。
(1)什么是pc-lint?
pc-lint是一個歷史悠久,功能異常強勁的靜態代碼檢測工具。它的使用歷史可以追溯到計算機編程的遠古時代(30多年以前)。經過這么多年的發展,它不但能夠監測出許多語法邏輯上的隱患,而且也能夠有效地幫你提出許多程序在空間利用、運行效率上的改進點,在很多專業級的軟件公司,比如microsoft, pc-lint檢查無錯誤無警告是代碼首先要過的第一關,偶個人覺得,對于小公司和個人開發而言,pc-lint也非常重要,因為基于開發成本考慮,小公司和個人往往不能拿出很多很全面的測試,這時候,pc-lint的強勁功能可以很好地提高軟件的質量。
pc-lint目前是支持c和c++程序的語法檢查的,但很遺憾是一款商業軟件(官方網站):
http://www.gimpel.com盡管如此,google一下,會發現在可用的“free”版本很多。。。
在linux環境下有一個叫做splint的與pc-lint相似的代碼靜態分析工具也很好用,但是很可惜它只能支持c語言的分析。參考網址:
(2)pc-lint都有哪些功能?
1) pc-lint是一種靜態代碼檢測工具,可以說,pc-lint是一種更加嚴格的編譯器,不僅可以象普通編譯器那樣檢查出一般的語法錯誤,還可以檢查出那些雖然完全合乎語法要求,但很可能是潛在的、不易發現的錯誤。
2) pc-lint不但可以檢測單個文件,也可以從整個項目的角度來檢測問題,因為C語言編譯器固有的單個編譯,這些問題在編譯器環境下很難被檢測,而pc-lint在檢查當前文件的同時還會檢查所有與之相關的文件,可想而知,它會對我們有很大的幫助。
3) pc-lint支持幾乎所有流行的編輯環境和編譯器,比如Borland C++從1.x到5.x各個版本、Borland C++ Build、GCC、VC,VC.net、watcom C/C++、Source insight、intel C/C++等等,也支持16/32/64的平臺環境。
4) 支持Scott Meyes的名著(Effective C++/More Effective C++)中說描述的各種提高效率和防止錯誤的方法。
(3)如何使用pc-lint?
pc-lint下載完畢后(一般“free”的版本都是“綠色”安裝版,直接解壓出來一個目錄即可),我這里舉例子就是解壓以后出來的目錄是d:\lint。
進入這個lint的目錄,會發現有幾個主要的文件,lint.exe, lint-nt.exe等等。
此時可以從命令行進入這里面看看下載到的pc-lint是什么版本的:
C:\Documents and Settings\wayne>D:\Lint\lint-nt -v -i"D:\Lint" std.lnt
PC-lint for C/C++ (NT) Vers. 8.00x, Copyright Gimpel Software 1985-2008
我這里是打過補丁的也就是8.00的x的版本(是8.00版里面的最后一個版本,hoho),一般網上“free”的,大都是8.00e的版本。
可以到如下地址來下載patch補丁,不過現在的patches似乎都升級到9.00a以后的了,但愿9.00a的“free”版能早點出來
http://www.gimpel.com/html/ptch90.htm#pcl好了,如果運行lint-nt以后,可以看到有版本號輸出,以及什么can not open files之類的提示,那么恭喜,你的pc-lint已經可以工作了。
(4)配置pc-lint
看看有沒有一個叫做lin.bat的批處理文件,如果沒有,就手工添加一個,如下內容:
d:\lint\lint-nt -v -i"d:\lint" std.lnt %1 %2 %3 %4 %5 %6 %7 %8 %9
好了,然后把d:\lint這個路徑添加到系統的path里面去,然后“運行”->“cmd”打開shell,然后輸入:
lin [回車]
看看有沒有輸出,ok,如果有,那么代表你的for symbian的pc-lint環境就弄好了。
(5)把pc-lint跟vs2005集成
集成過程很簡單,其實只要是支持調用第三方的程序的ide,更準確地說是editor都可以無縫地將pc-lint集成到環境中去,例如:vs系列ide,carbide c++,ultra editor, edit plus, source insight等等,hoho,偶甚至把emacs for win32也配置出來了

。
1)打開vs2005,選擇"tools"->"externel tools...",然后選擇"add"
2)在title里隨便輸點什么,例如“lint current file”
3)在command里面輸入:d:\lint\lin.bat
4)在argument里面輸入:-i"$(SolutionDir)\inc" "$(ItemPath)"
這里的-i就代表pc-lint進行語法檢查的時候當遇到頭文件的時候要跑到哪個目錄下面去找的意思,你也可以這樣寫:"$(SolutionDir)\group\conf.lnt"然后在你的group目錄里面建立一個叫做conf.lnt的文件,把所有程序用到的include目錄都用-i的形式放進去。
5)在intial directory里面輸入:"$(ItemPath)"
6)最后,很重要的一點就是,需要把use output window這一項前面的小方塊勾上。
然后按下確定,就一切ok了。