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

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