標籤:c++ 軟體品質 pclint 靜態檢查 visualstudio
故天將降大任於斯人也,必先苦其心志,勞其筋骨,餓其體膚,空乏其身,行拂亂其所為,所以動心忍性,增益其所不能。
孟子
1 引子
今天聽老韓一席話,當真是感慨萬千啊。心懷鬥志昂揚,奮鬥十年,到頭來,卻看到身邊的人一個個貪圖安逸,沒有獨當一面的才能,讓人頹然失望。可以說這幾年來,我也曾懷著這樣的期盼,希望身邊的朋友們能夠借我一把力,共同奮鬥,創造一些“奇蹟”,但是每次也都是失望,失望,還是失望。
雖然前人們都說,在這個時代,沒有獨行者。但是,茫茫人海之中,想要找一個志同道合者,太難。並且,沒有一個共同的目標,也很難找到志同道合者。所以,在這段日子,還是做一個默默地獨行者更好,省卻了若干煩心事。
但是,總不能因為別人,就失去了對自己的信心。自己能力有限是正確的,從小老爸就告訴我,要知道自己能吃幾碗乾飯。正如孟子所言,既然知道自己的能力,那就動心忍性,努力去學習,提高自身能力。
所以,雖然我可以理解這種心情,但是原諒我不能同意這種能力有限的結果。
以銅為鑒,可正衣冠;以古為鑒,可知興替;以人為鑒,可明得失。每次員工大會,都頗有收穫,實在是聽君一席話,勝讀十年書的感覺。小韓所謂C++的一萬個小時,自以為還是遠遠不夠的,假設平均每天工作學習十個小時,那麼需要一千天,大概為三年時間。自從2012年2月份實習到如今,大概也有2年半的時間了,基本上每天都保持看書學習以及工作的習慣,但是卻越加覺得C++之深厚,要想真正精通,還需要2年半的時間吧。也許2年半後,又覺得再需要5年時間吧,嘛,太極之意,“忘記”所有,便是大成之時吧。
又跑題了,開始今天的主題,PCLint,自覺這部分至少可以分為兩篇文章,如果要深入講解,足以涵蓋《Effective C++》,《More Effective C++》等書的內容,所以還是只介紹用法,要想知道的更多,那就Google一下吧!
第一部分內容,主要介紹PCLint的功能以及如何安裝。第二部分內容則講解PCLint如何使用(暫時這麼計劃的,也許會突發奇想出來第三部分第四部分,那就請繼續關注吧)。
2 PCLint簡介
首先,提供一下PCLint的相關連結:
官網:http://www.gimpel.com/html/index.htm
最新9.0L安裝包:http://download.csdn.net/detail/winking324/8102281
接下來,簡單介紹一下PCLint到底是一個什麼樣的工具。
PCLint是GIMPELSOFTWARE 公司研發的C/C++軟體代碼靜態分析工具,可以說,PCLint是一種更加嚴格的編譯器。其主要分為PCLint和FlexeLint,PCLint主要應用於Windows平台,以二進位可執行檔提供,而FlexeLint應用於其他平台,例如Linux,以原始碼形式發布。
PCLint在全球擁有廣泛的客戶群,許多大型的軟體研發組織都把PCLint檢查作為代碼走查的第一道工序,例如說華為(感謝華為,讓我學習到如此強大的工具)。PCLint不但能夠對程式進行全域分析,識別沒有被適當檢驗的數組下標,報告未被初始化的變數,警告使用null 指標連同冗餘的代碼,還能夠有效地提出許多程式在空間利用、運行效率上的改進點。
總結下來,PCLint就是不通過執行程式進行程式碼分析,發現代碼中潛在的Bug。通過個人實踐來看,PCLint可以發現非邏輯上的80%左右的Bug,絕對是C++開發以及測試人員一個強大的助手(爸爸媽媽再也不用擔心我寫錯代碼了)。
既然PCLint如此強大,那麼問題來了。
3 PCLint安裝及初步配置
安裝主要根據上面的最新9.0L安裝包進行講解,2014年10月16日更新,本人親自打包,並增加自動更新指令碼,方便一步操作(資源1分就當贊助費了,謝謝,如果沒有分數下載,請留言郵箱)。
安裝包主要包含如下兩部分(原諒我的小廣告,請支援2345.com):
第一個Update為升級包,第二個Gimpel_PC_Lint_9.zip為PCLint的安裝包。
1. 解壓PCLint的安裝包,並進行安裝,直接Next到最後一步,選擇執行配置程式,並點擊Finish。如果這裡沒有選擇執行配置程式,可以通過執行安裝目錄下的CONFIG.exe來執行配置程式。
2. 接下來彈出PCLint的配置程式,點擊下一步開始配置。
3. 說明執行完PCLint配置後,會產生執行指令碼以及PCLint的設定檔(*.lnt),繼續下一步。
4. 選擇產生路徑,安裝路徑即可,以及檔案名稱,然後下一步。
5. 選擇編譯器,VisualStudio現在最高只有2008,所以只好選擇這個了,選擇後點擊下一步。
6. 選擇平台,根據自己的需要,選擇對應的平台,這裡選擇32bit,點擊下一步。
7. 選擇依賴的庫,對於VisualStudio開發來說,主要包括Active Template Library(ATL),Microsoft FoundationClass Library,Standard Template Library,Windows 32-bit這四部分,選擇後下一步。
8. 選擇一些特殊的最佳化建議,例如說代碼安全性和效率上的。這裡按照最大原則進行選擇,有:Scott Meyers(Effective C++ More Effective C++ and Effective C++ 3rdEdition),Dan Saks,MISRA 2004,然後下一步(PS:Effective C++這兩本巨作真心的給力,C++入門必讀經典)。
9. 指定當前使用庫的標頭檔所在位置,選擇Create –i options,並下一步,否則執行PCLint時會因為找不到標頭檔而失敗。
10.選擇標頭檔路徑,以分號或者換行(Ctrl + Enter)區分,這裡僅添加Visual Studio的標準標頭檔。由於不同的公司或者組織,其檔案組織方式可能不一樣,又或者包含了其他的各種庫,所以有需要可以在這裡進行添加,或者執行PCLint時出現錯誤,修改*.lnt檔案添加即可。
11.提示是否開啟新的配置,選擇否。
12.建立OPTIONS.LNT檔案,就是簡單幾個問題,由於我這邊顯示內容不全,所以選擇No,然後下一步,如果顯示全的話可以分別看一下,就是一些執行個體代碼,然後選擇一下即可。
13.選擇對應的開發環境,這裡最高只有VC9,所以對應選擇這個即可。
14.添加PCLint到系統內容變數中。
15.經過漫長的配置設定,總算完成了。
4 PCLint更新
經過上面複雜的安裝及配置後,接著就需要更新一下PCLint程式,使其支援更多的C++檢查項等。
1. 解壓壓縮包中Update目錄下所有檔案到PCLint的安裝路徑,例如我的PCLint安裝在D盤,則對應檔案路徑應該為:
D:\lint\l9-a-b.lp
…
D:\lint\lpatch.exe
D:\lint\Update.bat
2. 雙擊Update.bat,進行PCLint的更新,更新成功後的結果。
最後一行,版本號碼應該為9.00L。如果不正確,請進行路徑或者檔案是否正確的檢查。
另外,說明一下更新的方法,首先,要確定當前PCLint的版本號碼,方法為使用cmd定位在PCLint的安裝路徑下,執行lint-nt.exe–v即可。其次,去官網上下載最新的更新程式lpatch.exe以及更新包(例如l9-a-b.lp等),將其拷貝到安裝路徑下,執行命令lpatch.exe l9-a-b.lp即可。
5 進一步思考
可惜不是周末,也不是周五,不能一口氣寫完。同學們就先嘗試一下安裝和升級方法吧,如果已經熟練掌握了,可以通過Google等查看如何進行C++代碼的檢查,或者查看一下PCLint的手冊,絕對可以大漲姿勢,學習到很多C++編程中的注意項。如果能寫出一把連PCLint都沒有一個Warning或者Error的代碼,那麼恭喜你,你已經成為一個C++的牛人了!
昨天看到一句不錯的話,時間,抓起了就是黃金,虛度了就是流水;書,看了就是知識,沒看就是廢紙;理想,努力了才叫夢想,放棄了那隻是妄想。努力,雖然未必會收穫,但放棄,就一定一無所獲。
想起李科分享的一句話,對於產品人員,最重要的就是好奇心。我想說的是,對於開發人員,最重要的就是嘗試心!是是非非,對對錯錯,不過就是一個Hello World!
軟體品質之道:PCLint之一