pclint使用

PC-lint的使用网络上有很多,下一篇将会转载一下。这里主要记录一下在使用的过程中所遇到的问题。

1.错误如下

-- Module:   d:/Projects/magellan/main/code/magellan/MgAIAction.cpp
      (C++)
      #include "co-msc80.h" /* generated from -header(co-msc80.h) */
      d:/Projects/magellan/main/code/magellan/MgAIAction.cpp(0): error 322:
      (Error -- Unable to open include file 'co-msc80.h')
出现这个错误时,我在网上找了很多也没找到一个合适的解决方法,只有一个与上面问题相同的代码标识。解决如下:
在PC LINT的文件夹中找到co-msc80.lnt,打开
转到最后一行“-header(co-msc80.h) // implicitly includes <typeinfo>. (Needed because MSVC 8 implicitly declares class type_info.)”。
将其中的co-msc80.h改为绝对地址:-header(C:/pc-lint/co-msc80.h) ,这样就可以了。

2.在VS2005中增加多文件的PC LINT检查,设置如下:
标题:pclint_project
命令:C:/unix/usr/local/wbin/find.exe 
参数:$(ProjectDir) -name *.c -o -name *.cpp | C:/unix/usr/local/wbin/xargs C:/pclint/lint-nt -i"c:/unix/usr/local" -u c:/pc-lint/stdvc8.lnt c:/pc-lint/env-vc8.lnt

运行后出现错误:
C:/unix/usr/local/wbin/find.exe : paths must precede expression
Usage: C:/unix/usr/local/wbin/find.exe [path...] [expression]

原因是$(ProjectDir)解析后为C:/abc/de//,有问题,find接收的文件夹路径为C:/abc:/de

当前我还没找到解决办法,除了在控制台上直接运行!!

3.其实windows下使用pc-lint最好还是集成在source insight上。这里注意一点:
      一般的人在设置好pc-lint后,运行发现有这样的错误:error 322: (Error -- Unable to open include file 'stdafx.h')。这是因为在std.lnt中设置的包好选项中没有办好这个头文件的文件夹路径。
      这里建议,如碰到该情况,请重新建立一个lnt文件,将该工程所引用的头文件路径都包含里面。例如我建立了一个文件叫header_myproject.lnt,里面只有这句话-i"d:/SVN/闸机1.1/trunk/XdrEDCode;d:/SVN/闸机1.1/trunk/XdrEDCode/header" 注意-i一定要与"紧紧挨近一起。然后将文件header_myproject.lnt路径添加到std.lnt中即可。

4.使用PC-Lint时可能会遇到很多库的头文件的错误,特别是在VS中。这时可以通过设置PC-LINT.exe的参数屏蔽库文件的错误。一般为PC-LINT.exe -wlib(x)
-wlib(0) 不生成任何库信息
-wlib(1) 只生成错误信息(当处理库的源代码时)
-wlib(2) 生成错误和告警信息
-wlib(3) 生成错误、告警和其它信息(这是默认设置)
-wlib(4) 产生所有信息

另外,如果你测试时不想看一下info类的信息,可以在命令中增加-wx来屏蔽不需要显示的信息:
-w0 不产生信息(除了遇到致命的错误) 
-w1 只生成错误信息 -- 没有告警信息和其它提示信息
-w2 只有错误和告警信息
-w3 生成错误、告警和其它提示信息(这是默认设置) 
-w4 生成所有信息
一般情况下我先使用-w1再用-w2,最后用-w3

你可能感兴趣的:(pclint使用)