PC-lint的使用網路上有很多,下一篇將會轉載一下。這裡主要記錄一下在使用的過程中所遇到的問題。
1.錯誤如下
-- Module: d:/Projects/magellan/main/code/magellan/MgAIAction.cpp
(C++)
#include "co-msc80.h" /* generated from -header(co-msc80.h) */
d:/Projects/magellan/main/code/magellan/MgAIAction.cpp(0): error 322:
(Error -- Unable to open include file 'co-msc80.h')
出現這個錯誤時,我在網上找了很多也沒找到一個合適的解決方案,只有一個與上面問題相同的代碼標識。解決如下:
在PC LINT的檔案夾中找到co-msc80.lnt,開啟
轉到最後一行“-header(co-msc80.h) // implicitly includes <typeinfo>. (Needed because MSVC 8 implicitly declares class type_info.)”。
將其中的co-msc80.h改為絕對位址:-header(C:/pc-lint/co-msc80.h) ,這樣就可以了。
2.在VS2005中增加多檔案的PC LINT檢查,設定如下:
標題:pclint_project
命令:C:/unix/usr/local/wbin/find.exe
參數:$(ProjectDir) -name *.c -o -name *.cpp | C:/unix/usr/local/wbin/xargs C:/pclint/lint-nt -i"c:/unix/usr/local" -u c:/pc-lint/stdvc8.lnt c:/pc-lint/env-vc8.lnt
運行後出現錯誤:
C:/unix/usr/local/wbin/find.exe : paths must precede expression
Usage: C:/unix/usr/local/wbin/find.exe [path...] [expression]
原因是$(ProjectDir)解析後為C:/abc/de//,有問題,find接收的檔案夾路徑為C:/abc:/de
當前我還沒找到解決辦法,除了在控制台上直接運行!!
3.其實windows下使用pc-lint最好還是整合在source insight上。這裡注意一點:
一般的人在設定好pc-lint後,運行發現有這樣的錯誤:error 322: (Error -- Unable to open include file 'stdafx.h')。這是因為在std.lnt中設定的包好選項中沒有辦好這個標頭檔的檔案夾路徑。
這裡建議,如碰到該情況,請重建立立一個lnt檔案,將該工程所引用的標頭檔路徑都包含裡面。例如我建立了一個檔案叫header_myproject.lnt,裡面只有這句話-i"d:/SVN/閘機1.1/trunk/XdrEDCode;d:/SVN/閘機1.1/trunk/XdrEDCode/header" 注意-i一定要與"緊緊挨近一起。然後將檔案header_myproject.lnt路徑添加到std.lnt中即可。
4.使用PC-Lint時可能會遇到很多庫的標頭檔的錯誤,特別是在VS中。這時可以通過設定PC-LINT.exe的參數屏蔽庫檔案的錯誤。一般為PC-LINT.exe -wlib(x)
-wlib(0) 不產生任何庫資訊
-wlib(1) 只建置錯誤資訊(當處理庫的原始碼時)
-wlib(2) 建置錯誤和警示資訊
-wlib(3) 建置錯誤、警示和其它資訊(這是預設設定)
-wlib(4) 產生所有資訊
另外,如果你測試時不想看一下info類的資訊,可以在命令中增加-wx來屏蔽不需要顯示的資訊:
-w0 不產生資訊(除了遇到致命的錯誤)
-w1 只建置錯誤資訊 -- 沒有警示資訊和其它提示資訊
-w2 只有錯誤和警示資訊
-w3 建置錯誤、警示和其它提示資訊(這是預設設定)
-w4 產生所有資訊
一般情況下我先使用-w1再用-w2,最後用-w3