unix下有命令lint(有的也没,AIX就有),但在unix下找大型程序waring,error比较慢,所以集成到source insight下修改,关于软件下载安装网上教程比较多就不写了。
pclint安装好后,可以不用图形界面配置,直接写配置文件,一个是std.lnt,一个是options.lnt,关于source insight的命令添加pclint的帮助有说明,网上教程也比较多。
std.lnt:(用的是codeblocks的库)
D:\lint\lnt\co-mwwin32.lnt
D:\lint\options.lnt -si4 -sp4
-i"C:\Program Files\CodeBlocks\MinGW\include"
-function(malloc, my_malloc)
-sem(my_strcpy, 1P>=2P, 1P, 2P)
options.lnt,需要加一行 -wlib(0),不检查库。也可以添加-elib(#) //屏蔽错误为#的头文件类错误。
后面摘自http://hi.baidu.com/lint/blog/item/8c09a6450e3ec12ecefca309.html
把pc-lint解压拷贝到C盘跟目录(当然目录可以自定义,下面所有涉及的目录的描述都可以自定义),pc-lint下有个config.exe这是一个配置程序,可以设置生成我们需要的lnt文件,单是我还是建议自己写。最好的做法是做一个批处理文件包装一下该程序。如
lin.bat
------------
lint-nt.exe include.lnt -os(Result.txt) std.lnt option.lnt files.lnt %1 %2 %3 %4 %5 %6 %7 %8 %9
------------
然后我们就单独设置各个lnt文件即可(当然你要把所有选项杂烩到一个lnt文件也可以的)。
路径\co-gnu3.lnt // (编译器相关选项,这是gcc的编译器如果使用的是其他编译器,需要修改。)
路径\options.lnt -si4 -sp4 //(option.lnt是对一些pc-lint的弱提示进行屏蔽使用的,如:如果不想让pc-lnt提示 830号信息,可以他option.lnt添加:-e830; )
-i"d:\sdm0327\server\epg" //把用到的头文件所在路径告诉pc-lnt。有多少列多少,都以这种形式列出。
-function(malloc,my_malloc)//增强检查项,用my_malloc对函数封装以后需告知pc-lint,否则pc-lint不会进行内存是否释放的检查,当然也可以使用-sem(my_malloc,@p==malloc(ln)),具有相同效果。
-sem(my_strcpy, 1P>=2P,1P,2P)//增强检查项,表示my_strcpy如果第二个参数大于第一个参数,或者第一和第二个参数为null,pc-lint需提示。
-elib(#) //屏蔽错误为#的头文件类错误。
配置好std.lnt以后(*.lnt可以嵌套使用),将pc-lint集成到source insight,首先从http://www.weihenstephan.de/~syring/win32/UnxUtils.zip下载UnxUtils.zip.拷贝到pc-lint目录(自定义),然后在source insight的custom command添加两条命令,我添加的两条命令如下,供大家参考(不同的路径和环境需要修改):
lint单个文件的命令:
c:\pclint\lint-nt -u c:\pclint\std.lnt -i c:\pclint\lnt\env-si.lnt -u %f
lint整个source insight工程的命令:
c:\pclint\unix\usr\local\wbin\find.exe %d -name *.c -o name *.cpp | c:\pclint\unix\usr\local\wbin\xargs c:\pclint\lint-nt -i"c:\pclint\unix\usr\local" -u c:\pclint\std.lnt c:\pclint\lnt\env-si.lnt -u %f