程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC中多文件工程的PCLint使用詳解

VC中多文件工程的PCLint使用詳解

編輯:vc教程

1.安裝

 我使用的是PC.Lint.v8.00e,是不用安裝的版本。

 解開到E:PC.Lint.v8.00e目錄,可執行文件為Lint.exe(lint-nt.exe與其相同,可能為NT平台用的,在Win2000下都可運行)。
 子目錄lnt內是檢查的規則及選項文件,這兩種文件擴展名全為.lnt。

2.准備自己工程的選項文件

 在E:PC.Lint.v8.00elnt下新建MyProj.lnt文本文件,我們將自己工程的很多頭文件目錄,在其中一一列出來,內容如下:
 
 std.lnt/*注釋:包含的規則和/或選項文件*/
 env-vc6.lnt
 /*下面為各頭文件目錄,可以在字串中不要雙引號,可以有多行*/
 -i"C:MyProjIncludeA" -i"C:MyProjIncludeB" -iC:MyProjIncludeC
 -iC:MyProjIncludeD
 -e641//另一種注釋//這是省略#641錯誤
 【注意】指明各頭文件目錄很重要。頭文件各目錄的名稱可能在VC的ProjectProject SettingsProject Options欄中:
  /I "/Include/PS",可供借鑒(相對路徑暫未測試)。
  當後面運行Lint時出現無法打開某個頭文件時,需要不斷添加頭文件所在目錄的名稱到本選項文件中。

3.在VC中運行PCLint(針對單個文件但需包含多個頭文件目錄):

    A 點擊Tools/Customize/Tools出現定制窗口
    B 在Menu contents中雙擊下面的空白攔,輸入擬新增的Tool名稱:PCLint
    C 雙擊PClint項,在Command中填入要調用的.exe文件名:lint
      Arguments:中填入:-i"E:PC.Lint.v8.00elnt" MyProj.lnt $(FilePath)
      【注意】$(FilePath)這個字串是個宏名,也可以通過點擊右邊的三角箭頭選擇;可能為要檢查的本文件的路徑加文件名,而
      不能是$(FileName)!!!因為它可能只是文件名而不帶路徑,將導致使用時說無法發現!
      另外,MyProj.lnt這個選項文件必須在$(FilePath)之前。
      Initial Directory項:在Arguments項中若缺少-i"E:PC.Lint.v8.00elnt"時將報無法找到各個.lnt文件,可在此
      欄填E:PC.Lint.v8.00elnt來指定。
      選中"Use Output Window" (這將使PCLint運行的結果在VC下方Output窗口中,雙擊行號還可以跳到指定行)
    D 打開一個項目,讓焦點位於某個源程序編輯窗口,點擊Tools/pclint菜單即可

【注意】直到VC Output窗口中出現Tool returned code: ,才算Tool運行完,若未運行完,可能在再點擊PCLint時報錯。

4.網上搜到的VC環境多個文件同時Lint的方法,大致為找到各個.c文件,將各文件名經xargs傳給lint來實現。但需要find,xargs等
命令,似乎需要模擬unix環境的軟件支持中才有,我裝的Cygwin的環境中對find命令後的格式有問題,無法支持unix中的
find . -name *.c,故無法由此找到各個.c文件名。但可以用Cygwin的ls命令來代替find。

 【原方法如下:】

   A 點擊Tools/Customize/Tools出現定制窗口
  B 在Menu contents中雙擊空白攔,輸入:PCLint-project
  C 雙擊PCLint-project項,在Command:中填入:find
      Arguments:中填入:$(FileDir) -name *.c | xargs pclint -i"c:unixusr" -u std.lnt env-vc6.lnt
      選中"Use Output Window"
  D 打開一個項目,讓焦點位於最項層目前的一個Source Window中,點擊Tools/PCLint-project菜單即可

【方法1如下:】
  A 點擊Tools/Customize/Tools出現定制窗口
  B 在Menu contents中雙擊空白攔,輸入:PCLint-Proj
  C 雙擊PCLint-Proj項,在Command:中填入:ls
      Arguments:中填入:*.c |xargs lint -i"E:PC.Lint.v8.00elnt" MyProj.lnt
      Initial Directory項:本欄填寫工程的一個源文件子目錄(保證在Arguments項中有-i"E:PC.Lint.v8.00elnt")
      選中"Use Output Window"
  D 打開一個項目,讓焦點位於最頂層目前的一個Source Window中,點擊Tools/PCLint-Proj菜單即可

 【最簡單的方法如下:】
  A 在MyProj.lnt末尾添加一行 *.c (即目標為本目錄下所有.c文件)
  B 點擊Tools/Customize/Tools出現定制窗口
  C 在Menu contents中雙擊空白攔,輸入:PCLint-Proj
  D 雙擊PCLint-Proj項,在Command:中填入:lint
      Arguments:中填入:-i"E:PC.Lint.v8.00elnt" MyProj.lnt
      Initial Directory項:本欄填寫工程的一個源文件子目錄(保證在Arguments項中有-i"E:PC.Lint.v8.00elnt")
      選中"Use Output Window"
  E 打開一個項目,讓焦點位於最項層目前的一個Source Window中,點擊Tools/PCLint-Proj菜單即可

【注意】上述方法中的ls,xargs等命令位於Cygwin的目錄中,需要將路徑添加到系統的PATH中:
  "我的電腦"(右擊鼠標)->"屬性"->"高級"->"環境變量"->"系統變量"->"Path"
    加入"C:cygwinin"重啟生效。
 ls *.c將同時找到.c文件和.cpp文件,但是也會將非工程所需的.c文件編譯進來,需要手工把文件轉走。
 另外,這種方法一次只能Lint一個目錄,每完成一個目錄就要重新設置Initial Directory項為新的要檢查的目錄。

5.在DOS窗口中對一個目錄多個文件進行Lint
1)基於Cygwin
cd C:MyProJSrcA
ls *.c | xargs lint -i"E:PC.Lint.v8.00elnt" MyProj.lnt >> LintOutput.txt
【注意】ls *.c 也可以用DOS命令dir *.c/B來替換,/B的意思是僅列出各文件名。>>LintOutput.txt的意思是將Lint結果輸出到
LintOutput.txt文件中。
2)無Cygwin支持
cd C:MyProJSrcA
dir *.c /B
將所有列出的.c文件名稱復制到E:PC.Lint.v8.00elntMyProj.lnt中,內容如下:
 std.lnt/*注釋:包含的規則和/或選項文件*/
 env-vc6.lnt
 /*下面為各頭文件目錄,可以在字串中不要雙引號,可以有多行*/
 -i"C:MyProjIncludeA" -i"C:MyProjIncludeB" -iC:MyProjIncludeC
 -iC:MyProjIncludeD
 -e641//另一種注釋//這是省略#641錯誤
 a.c //指定要Lint的文件
 b.c
 c.c
 最後幾行指定的要Lint之文件也可以用通配符,如:
 *.c
然後直接運行 lint -i"E:PC.Lint.v8.00elnt" MyProj.lnt >> LintOutput.txt

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved