Code::Blocks使用pc-lint

来源:互联网 发布:ie无法打开淘宝网 编辑:程序博客网 时间:2024/04/30 08:47


  先说下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"

  这样使用起来就一切正常啦,接下来,就是--去除那些警告吧。

原创粉丝点击