Code::Blocks使用pc-lint



  先說下pc-lint,雖說在它的官方網站上已經有9.0版本,但是並不提供任何的試用版本。我在網上找了下,目前能免費下載的最新版本大概是8.0w了。至於Code::Blocks就簡單多了,直接到官方網下載最新版本即可。

  pc-lint的配置也是個麻煩事,好在網上介紹的文章很多,讓pc-lint轉起來應該不難。

  我的做法是解壓pc-lint包到任意目錄,然後從lnt目錄中copy一個配置文件模板,即std.lnt文件到pc-lint根目錄下。修改這個文件,爲該文件出現的文件引用指定完整路徑,在我的機器上是這個樣子的:
  d:\pclint\lnt\au-sm.lnt
  d:\pclint\lnt\au-ds.lnt
  d:\pclint\lnt\au-misra.lnt
  d:\pclint\lnt\co-gnu3.lnt

  接下來還要指定頭文件的目錄,找到Code::Blocks目錄下的include子目錄的位置,添加上去即可,我使用的是:
  -i"c:\program files";"C:\Program Files\CodeBlocks\MinGW\include"
最前面-i的用法和makefile中的是一樣的。

  針對個人的使用習慣,可能還有一些特殊配置,建議都放到options.lnt文件中,所以在std.lnt中還要加上:
  d:\pclint\options.lnt -si4 -sp4

  我使用的options.lnt文件是這樣子的:
  -wlib(0)
  -e829
  -e970
  -e726
  -e956
  -esym(960, 69)

  完成上面的配置後,就可以使用pc-lint對代碼進行檢查了。先在命令行中試驗下:
  lint-nt.exe -u d:\pclint\std.lnt test.c

  果然能看到很多信息出現,包括警告和錯誤。比較奇怪的是居然提示找不到stddef.h,這怎麼可能。查看stdio.h,它明明就是直接include stddef.h的,如果真找不到,就不可能通過Code::Blocks的編譯了。
  
  但是,我在C:\Program Files\CodeBlocks\MinGW\include搜索,竟然真的找不到此文件。真是奇怪!
  
  先不管這麼多,自己添加一個空的stddef.h文件好了,這樣總算能騙過pc-lint了:-)。
  
  不過pc-lint又開始抱怨NULL未定義。我決定使用Code::Blocks編譯試試,更奇怪的是,竟然沒法編譯通過,出現了一大堆錯誤。但是我把stddef.h刪掉就可以了。

  看來Code::Blocks還是有這個文件的,就是不知藏哪了。這個簡單,直接在Code::Blocks目錄下搜索,終於讓我在C:\Program Files\CodeBlocks\MinGW\lib\gcc\mingw32\3.4.5\include目錄把它找出來了。接下的問題就簡單啦,把這個添加到std.lnt的-i行後即可:
  -i"c:\program files";
  "C:\Program Files\CodeBlocks\MinGW\include";
  "C:\Program Files\CodeBlocks\MinGW\lib\gcc\mingw32\3.4.5\include"

  這樣使用起來就一切正常啦,接下來,就是--去除那些警告吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章