PC-Lint軟體使用方法


4.1 安裝與配置


    PC-lint軟體性價比高,易於學習,容易推廣和固化到軟體發展測試流程中去,所以在全世界得到了廣泛的應用。PC-lint使用方法很簡單,可以用命 令行方式進行,例如lint-nt –u std.lnt test1.c test2.c test3.c 也可以使用MAKEFILE的方式。此外,它還可以集成到很多開發環境或常用的程式碼編輯軟體中,比如集成到Source Insight/SLICKEDIT/MS VC6.0/KEIL C..等。PC-Lint還支持Scott Meyes的名著(Effective C++/More Effective C++)中說描述的各種提高效率和防止錯誤的方法。
    PC-lint的安裝非常簡單,以PC-lint 8.0為例,運行安裝程式將其釋放到指定的安裝目錄即可,比如c:\pclint8。然後需要運行PC-lint的配置工具config.exe生成選項 和檢查配置檔,以剛才的安裝路徑為例,config.exe應該位於:C:\pclint8\config.exe。配置檔是程式碼檢查的依據,PC- lint自帶了一個標準配置檔std.lnt,但是這個檔沒有目錄包含資訊(頭檔目錄),通常對程式碼檢查的時候都需要指定一些特殊的包含目錄,所以 要在標準配置的基礎上生成針對某個專案程式碼檢查的定制配置。下面就以Microsoft Visual C++ 6的開發環境為例,介紹一下定制配置的過程。
    運行C:\pclint8\config.exe後出現一個歡迎介面,提示版權資訊,如圖4.1所示:




4.1 配置歡迎視窗


點擊下一步按鈕出現pc-lint.exe命令行使用說明窗口(圖4.2所示):




4.2 pc-lint.exe命令行使用說明窗口


點擊下一步按鈕繼續,接著是選擇建立或修改已有配置檔STD.LNT的選項:



4.3 選擇如何使用配置檔STD.LNT


因為我們是第一次配置,所以選擇上面一個選項“Create a new STD.LNT”,這樣做不會修改已有配置檔STD.LNT的內容,而是建立一個新的STD_x.LNT檔,檔案名中的x是從“a”“z”26個英 文字元中的任意一個,一般是按順序排列,從“a”開始。STD_x.LNT檔的內容被初始化為STD.LNT內容的拷貝。如圖4.3所示,使用默認的 PC-Lint路徑,然後點擊下一步按鈕選擇編譯器:



4.4 選擇編譯器


接下來是選擇編譯器,在下拉清單中選擇自己使用的編譯器。這裏我們選擇“Microsoft Visual C++ 6.x (co-msc60.lnt)”。如果沒有自己使用的編譯器,可選擇通用編譯器“Generic Compilers”。這個選項會體現在co-xxx.lnt檔中,並存放在前面我們選擇的配置路徑(C:\PCLint8)下,在後面配置選項我們所 選擇的***.LNT均會被存放到這個路徑下。點擊下一步按鈕選擇記憶體模式:



4.5 選擇記憶體模式


可以根據自己程式區和資料區的實際大小選擇一個恰當的記憶體模型,記憶體模型的選項會體現在STD.LNT文件或新建立 STD_x.LNT中。因為我們的開發環境是32位的Windows,所以選擇“32-bit Flat Model”,然後點擊下一步按鈕選擇所要的支援函式庫的配置資訊:



4.6 選擇軟體庫的配置資訊


PC-Lint對現在常用的一些軟體庫都提供了定制的配置資訊,選擇這些定制資訊有助於開發人員將錯誤或資訊的注意 力集中在自己的程式碼中,選擇的支援函式庫配置將被引入到STD.LNT文件或新建立的STD_x.LNT文件中。選擇常用的ATLMFCSTL等配置,然 後點擊下一步按鈕:



4.7 選擇軟體名人的編程建議


這是一個比較有意思的選項,就是讓你選擇是否支持為使用C/C++編程提出過重要建議的作者的一些關於編程方面的個人意見。如果選擇某作者的建議,那麼他提出的編程建議方面的選項將被打開,作者建議的配置名為AU-xxx.LNT,建議全部選擇,然後點擊下一步按鈕:



4.8 選擇是否現在設置包含檔目錄


接下來是選擇用何種方式設置包含檔目錄,如果選擇使用-i方式協助設置包含檔選項,下一步就會要求輸入一個或多 個包含路徑。也可以跳過這一步,以後手工修改配置檔,-i選項體現在STD.LNT文件或新建立的STD_x.LNT檔中,每個目錄前以-i引導,目 錄間以空格分隔,如果目錄名中有長檔案名或包含空格,使用時要加上雙引號,如-i“E:\Program Files\Microsoft Visual C++\VC98\Indlue”。這裏我們選擇用-i方式協助我們來設置,然後點擊下一步按鈕:



4.9 選擇是否現在設置包含檔目錄


這一步就是在下面的文本框裏可手工輸入檔包含路徑,用分號“;”或用ctrl+Enter換行來分割多個包含路徑,或者可以點中Brows,在目錄樹中直接選擇。填完後點擊下一步按鈕:



4.10 提示std_x.lnt已經被建立


因為第三步選擇了“Create a new STD.LNT”選項,所以出現以下對話方塊,表示std_x.lntstd.lnt在配置路徑下已被建立,這裏的std_a.lnt實際上包含了 std.lnt的資訊,除此之外還有我們選擇的包含路徑和庫配置資訊。單擊確定按鈕繼續:



4.11 提示是否為其他編譯環境建立配置檔


選擇確定後,會接著提示是否為其他編譯環境建立配置檔,如果選擇將從第四步開始建立一個新的配置檔。這裏我們選擇



4.12 是否替換std.lnt文件


接下來會提示是否使用現在生成的std_x.lnt文件取代std.lnt文件。如果選擇將會用std_x.lnt檔的內容覆蓋std.lnt檔的內容,使得當前建立的配置選項成為以後建立新的配置檔時的缺省配置。通常我們選擇繼續下一步:



4.13 生成全局程式碼檢查選項檔OPTIONS.LNT


接下來將會準備產生一個控制全局編譯資訊顯示情況的選項檔OPTIONS.LNT,該檔的產生方式有兩種,一種 是安裝程式對幾個核心選項逐一解釋並提問你是否取消該選項,如果你選擇取消,則會體現在OPTIONS.LNT檔中,具體體現方式是在該類資訊編碼前加 -e,後面有一系列逐一選擇核心選項的過程。如果選擇第二種選擇方式,安裝檔會先生成一個空的OPTIONS.LNT文件,等你以後在實際應用時加入必 要的選項。這裏選擇“No”選項,即不取消這些選項,然後單擊下一步



4.14 選擇所支援的集成開發環境


接著選擇所支援的集成開發環境選項,可選多個或一個也不選,PC-Lint提供了集成在多種開發環境中工作的功能, 例如可集成在VCBCSource Insight中。這裏我們選擇Microsift Visual C++ 6.0,這樣env-v6.lnt就會被拷貝到配置路徑中。然後單擊下一步



4.15 選擇LIN.BAT檔的使用方式


安裝程式會生成一個LIN.BAT檔,該檔是運行PC-Lint的批次檔案,為了使該檔能在任何路徑下運 行,安裝程式提供了兩種方法供你選擇。第一種方法是讓你選擇把LIN.BAT拷貝到任何一個PATH目錄下。第二種方法是生成一個LSET.BAT檔, 在每次使用PC-LINT前先運行它來設置路徑,或者把LSET.BAT檔的內容拷貝到AUTOEXEC.BAT文件中。建議選擇第一種方法,指定的目 錄為當前PC-Lint的安裝目錄。我們選擇第一種方式:“copy LIN.BAT to one of my PATH directory”,然後單擊下一步輸入PATH目錄:



4.16 指定PATH目錄


輸入安裝目錄C:\PCLint8作為PATH目錄,然後單擊下一步按鈕進入最後的確認視窗:



4.17 確認完成配置


到此就完成了PC-Lint的安裝配置工作,單擊完成按鈕就可以使用PC-Lint了。以上配置過程中在配置路 徑下產生的多個*.lnt文件,除了std.lntstd_x.lntoption.lnt為配置嚮導所生成,其他co-xxx.lntlib- xxx.lntenv-xxx.lnt均是從原始安裝目錄中拷貝出來的,在這個目錄下還有其他PCLint所支援的編譯器、庫及集成開發環境的lnt 置檔,所有的lnt檔均為文字檔案。
    上面的配置方法適合於剛開始接觸PC-lint時使用,對於熟練的使用者可以直接編輯、編寫各*.lnt配置檔安成上面的配置工作,或者定制出更適合自己使用的配置環境。


4.2 PC-Lint與常用開發工具的集成


    PC-Lint的使用方法很簡單,可以用命令行方式進行,也可以集成到開發環境中,下面就分別介紹這些用法


4.2.1 使用命令行方式


    命令行的使用方式是PC-lint最基本的使用方式,也是其他各種集成使用方式的基礎,通過命令行可以完成PC-lint的全部程式碼分析工作。PC-lint的命令行有下列形式:
Lint-nt option file1 [file1 file3 …]
中的Lint-ntPC-lintWindows NT/2000/XP平臺上的可執行程式Lint-nt.exe,它完成PC-lint的基本功能;option代表PC-lint可接受的各種選項,這 PC-lint最為複雜的部分,它的選項有300多種,可以分為:錯誤資訊禁止選項、變數類型大小選項、冗餘資訊選項、標誌選項、輸出格式選項和其他選 項等幾類,這些選項在本文的第三部分已經介紹過了;file為待檢查的原始檔案。
    另外值得注意的一點是,在命令行中可以加入前面提到的*.lnt配置檔案名,並可以把它看作是命令行的擴展,其中配置的各種選項和檔列表,就和寫在命令行中具有一樣的效果。


4.2.2 PC-LintVisual C++集成開發環境(IDE)集成


    在所有集成開發環境中,PC-Lint 8.0VC++6VC++7.0的支援是最完善的,甚至支援直接從VC的工程檔(VC6*.dspVC7*.vcproj)導出對應工程 .Lnt檔,此檔包含了工程設置中的預編譯巨集,頭檔包含路徑,原始檔案名,無需人工編寫工程的.Lnt文件。
    PC-LintVC集成的方式就是在VC的集成開發環境中添加幾個定制的命令,添加定制命令的方法是選擇“Tools”“Customize...” 命令,在彈出的Customize視窗中選擇“Tools”標籤,在定制工具命令的標籤頁中添加定制命令。首先要為VC的集成開發環境添加一個導出當前工 程的.Lnt配置檔的功能,導出.Lnt文件的命令行是:
lint-nt.exe +linebuf $(TargetName).dsp>$(TargetName).lnt
+linebuf表示加倍行緩衝的大小,最初是600 bytes,行緩衝用於存放當前行和你讀到的最長行的信息。$(TargetName)VC集成開發環境的環境變數,表示當前啟動的Project 字,注意要選中“Use Output Window”選項,這樣PC-Lint就會將資訊輸出到Output視窗中。填寫效果如圖4.18所示:



4.18 添加導出項目.Lnt文件的定制命令


接著添加一個檢查當前檔的定制命令,檢查檔的命令行為:
lint-nt.exe -i"C:\PCLint8" -u std_g.lnt env-vc6.lnt "$(FileName)$(FileExt)"
一個參數-i"C:\PCLint8"PC-Lint搜索*.lnt檔的目錄,這裏就是我們的配置路徑。std_g.lnt是為VC編譯環境定制的配 置檔,$(FileName)$(FileExt)VC集成開發環境的環境變數,"$(FileName)$(FileExt)"表示當前檔的文 件名。和導出.Lnt命令一樣,這個命令也要使用VC集成環境的Output視窗輸出檢查資訊,所以要選中“Use Output Window”選項,如圖4.19所示:



4.19 添加檢查當前文件文件的定制命令


最後要添加一個檢查整個工程的定制命令,檢查整個工程的命令行是:
lint-nt.exe +ffn -i"C:\PCLint8" std_g.lnt env-vc6.lnt $(TargetName).lnt>$(TargetName).chk
這個命令的結果就是將整個工程的檢查結果輸出到與工程同名的.chk文件中。參數中+ffn表示Full File Names,可被用於控制是否使用的完整路徑名稱表示。
    下面就以一個簡單的例子介紹一下如何在VC集成開發環境中使用PC-Lint。首先新建一個“Win32 Console Application”類型的簡單工程(輸出“Hello World”),然後將本文第二章引用的例子程式碼添加到工程的程式碼中,最後將這個工程程式碼所倚賴的包含目錄手工添加到配置檔中,因為程式碼檢查要搜索 stdafx.h這個預編譯檔,所以本例要手工添加工程程式碼所在的目錄。本文的例子生成的配置檔是std_g.lnt,用文字檔案打開 std_g.lnt,在文件中添加一行:
-iC:\unzipped\test
“C:\unzipped\test”就是例子工程所在的 目錄(stdafx.h就在這個目錄)。如果你的工程比較龐大,有很多頭檔包含目錄,就需要將這些目錄一一添加到配置檔。在確保程式碼輸入沒有錯誤之後 (有錯誤頁沒關係,PC-Lint會檢查出錯誤),就可以開始程式碼檢查了。例子工程,打開要檢查的程式碼檔,本例是test.cpp,然後選擇 “Tools”功能表下的“PC_LINT 8.0 Check Current File”命令,Output視窗輸出對本檔的檢查結果,如圖4.20所示:



4.20 檢查結果


4.2.3 PC-Lintsource insight集成


    PC-Lint

    全站熱搜

    立你斯 發表在 痞客邦 留言(0) 人氣()