如何將PCLint集成到SourceInsight中(針對VxWorks+Tornado開發平臺)

 PC-Lint 是一款C/C++軟件代碼靜態分析工具。 PC-lint在全球擁有廣泛的客戶羣,許多大型的軟件研發組織(包括幾大通信設備廠商)都把PC-Lint檢查作爲代碼走查的第一道工序。PC-Lint不但能夠對程式進行全局分析,識別沒有被適當檢驗的數組下標,報告未被初始化的變量,警告使用空指針連同冗餘的代碼,還能夠有效地提出許多程序在空間利用、運行效率上的改進點。

網上有很多將PCLint集成到SourceInsight中的文章,但全部都是基於VC開發平臺的。由於我們公司開發軟件最常用的工具組合爲基於VxWorks系統的Tornado+SourceInsight開發平臺,所以此文檔主要基於此開發平臺進行說明。希望能夠給大家來帶幫助。

集成方法如下:

1、解壓PCLint8.rar到D盤根目錄下(爲了減少過多的設置,直接解壓到D盤根目錄是最方便的;注意:必須使用此壓縮包中的PCLint)。

2、打開“D:\PCLint8”文件夾,用記事本或UltraEdit打開std.lnt文件,如下圖所示:

圖1-1

3、上圖std.lnt中,紅框1中的兩個路徑要設置成大家自身Tornado目錄下的路徑;紅框2中的路徑需要包含自身工程路徑中頭文件的路徑(不需要包含C/C++標準頭文件的路徑)。注意:這裏頭文件要包含全面,包括驅動庫提供的頭文件、自身定義的頭文件。如果頭文件包含不全,在進行代碼檢查時首先就會提示找不到頭文件,無法繼續進行代碼檢測。這時,你可以直接在代碼中註釋掉找不到的頭文件,或者紅框2中加入相應頭文件的路徑。

4、std.lnt文件設置保存完成後,就可以設置SourceInsight把PCLint集成進去。從Options菜單中選擇“Custom Commands”命令項。點Add鍵會出現下面的Add New Custom Command對話框。在New command name:欄中輸入“PC-lint80”,原則上這個名稱可以隨便起,只要你能搞清楚它的含義就可以了,然後按OK按鈕。

圖1-2

5、在Run欄中輸入“d:\PCLint8\lint-nt -u -id:\PCLint8 std.lnt env-si %f”其中d:\PCLint8是你PC-LINT的安裝目錄, %f是表示當前打開的文件。如果要Lint多個文件則需要使用配置文件,在配置文件裏包含多個文件,將%f改成你自己的配置文件即可(建議只包含一個文件,一個一個的查問題)。

6、在Output欄中選擇“Iconic Window”、“Capture Output”。

7、在Control欄中選擇“Save Files First”、將缺省打了勾選上的“Pause When Done”改成不選擇。

8、在Source Links in Output欄中選擇“Parse Links in Output”、“File,then Line”。

9、在Pattern欄中將缺省設置改成^\([^ ]*\) \([0-9]+\)就大功告成了。

10、如果需要Lint當前打開文件的同一目錄下所有文件,可以將%f改成%d\*.cpp(不推薦這樣做,一個文件一個文件的查比較好)。整個設置截圖如下:

圖1-3

11、設置菜單按鈕。點擊上圖“Menu…”,彈出新對話框,如下圖所示。找到“PC-Lint80”,在“Menu”下拉框中選擇菜單所處的位置,我選擇的爲“Search”,然後選中<end of menu>,點擊Insert按鈕,這樣PCLint就加入到SourceInsight的菜單裏了。

圖1-4

12、設置快捷鍵。點擊上圖“Key”按鈕,彈出新對話框,如下圖所示。點擊“ Assign New Key”,然後設置成“Shift+F11”,點擊OK。這樣快捷就設置好了。到此PCLint就成功集成到SourceInsight中了。

圖1-5

 

下面來介紹如何使用:

1、首先點擊到想要檢測的文件,如下圖,我以自身工程的xcu.c文件爲例。

圖2-1

2、如下圖所示,點擊Search,選擇PC-Lint80;或者用已經設置好的快捷鍵“Shift+F11”。

圖2-2

3、運行結果如下圖所示。特別注意:下圖結果報的頭文件錯誤,任何頭文件錯誤都會終止檢測,所以下圖的結果並不代表xcu.c代碼沒有問題。遇到這種情況,首先要解決頭文件中的錯誤,如果無法解決或並不想關心此頭文件錯誤,可以直接在xcu.c中註釋掉此頭文件。

圖2-3

4、註釋掉後,再次點擊運行PC-Lint80,結果如下圖所示。這時xcu.c正常被檢測。例如:紅框1,ApiSetPortSpeedAndDuplex()函數重複定義;紅框2:send_to_clock[index]可能會產生數組越界。

圖2-4

5、修改所有代碼漏洞後,再次運行PC-Lint80,如下圖所示。證明代碼修復完成。

圖2-5

 

注意:PCLint不是完全智能的,當它報錯時,可能人工根據代碼邏輯檢查會發現代碼其實沒有問題。但爲了提高代碼質量,建議儘量改進報錯的代碼(用assert保證)。據非官方消息,PCLint在很多大型公司中被廣泛使用,有些公司甚至要求消除所有PCLint的報錯才允許編譯代碼或進中試。所以推薦大家使用此工具,從源頭上杜絕軟件問題,以提高代碼質量。

 

文章中提到的PCLint壓縮包下載地址:PCLint.rar

 

如需轉載,請註明原文鏈接:http://blog.csdn.net/love_lei/article/details/7333349

發佈了6 篇原創文章 · 獲贊 19 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章