PC-Lint 是靜態程式碼分析利器,能發現編譯器忽略的潛在缺陷。本文詳細說明在 VC6/VC2005+ 環境中,如何針對多檔案專案設定選項檔、整合至 Tools 功能表、單檔/多檔/批次掃描的完整流程。
E:\PC-Lint,執行檔 lint-nt.exe(或 lint.exe)。lnt 存放規則檔(std.lnt、env-vc6.lnt 等)。MyProj.lnt
// E:\PC-Lint\lnt\MyProj.lnt
std.lnt
env-vc6.lnt
// 專案所有包含目錄(對應 VC 專案設定的 Additional Include Directories)
-i"C:\MyProj\IncludeA"
-i"C:\MyProj\IncludeB"
-iC:\MyProj\IncludeC
-iC:\MyProj\IncludeD
// 抑制特定訊息
-e641 // 例如:轉型大小不符
關鍵:每當 Lint 報錯「找不到標頭檔」,即在這裡補充 -i 路徑。
lint-nt.exe(或完整路徑)。-i"E:\PC-Lint\lnt" MyProj.lnt "$(FilePath)"。E:\PC-Lint\lnt(若 Arguments 已含 -i 可留空)。.c/.cpp,點選 Tools → PC-Lint 即可掃描該檔。
// Tools → Customize → Tools
Command: ls
Arguments: *.c | xargs lint-nt.exe -i"E:\PC-Lint\lnt" MyProj.lnt
Initial Directory: 專案原始碼根目錄
// MyProj.lnt 最後一行加入
*.c
// 然後 Tools 設定
Command: lint-nt.exe
Arguments: -i"E:\PC-Lint\lnt" MyProj.lnt
Initial Directory: 專案原始碼目錄
缺點:每次只能掃描一個目錄,需手動切換 Initial Directory。
@echo off
cd /d C:\MyProj\Src
lint-nt.exe -i"E:\PC-Lint\lnt" MyProj.lnt *.c >> LintReport.txt 2>&1
dir *.c /B > filelist.txt
// 將 filelist.txt 內容附加到 MyProj.lnt 末尾,或
lint-nt.exe -i"E:\PC-Lint\lnt" MyProj.lnt @filelist.txt
$(FilePath) vs $(FileName):前者含完整路徑,後者僅檔名;Lint 需完整路徑才能解析相對 include。MyProj.lnt 加 -eXXX 或原始碼加 //lint -eXXX 註解。co-gcc.lnt 或 co-msvc.lnt 對應編譯器擴充。