静态检查工具——PClint
简介:
pc_lint是GIMPEL SOFTWARE公司开发的C/C++软件代码静态分析工具,它的全称是PC-Lint/FlexeLint for C/C++, pc_lint能够在Windows、MS-DOS和OS/2平台上使用,以二进制可执行文件的形式发布,而FlexeLint 运行于其它平台,以源代码的形式发布。
工具类型:静态工具。
支持平台:Windows。
使用方法:可配置到VS外部工具,也可以直接命令进行检查。
输出文件:直接在VS输出窗口中输出。或者输出到文件
查看问题:如果在VS窗口输出,双击报错行,可以直接跳转到问题代码位置。
检查范围:
pc_lint不仅能够对程序进行全局分析,识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针以及冗余的代码,还能够有效地帮你提出许多程序在空间利用、运行效率上的改进点。从某种意义上说。 pc_lint是一种更加严格的编译器,它除了可以检查出一般的语法错误外,还可以检查出那些虽然符合语法要求,但很可能是潜在的、不易发现的错误。
pc_lint的注释:
//lint -save -e***
代码段;//带有error ***的告警信息
//lint –restore
VS2005配置方法:
1、首先,将获取到的pc_lint压缩包解压到C盘根目录,注意放到其他目录会导致pc_lint不好用。
2、配置VS路径:打开pc_lint对VS的配置文件(C:\pclint\std_VS2005.lnt),配置好本地的VS路径,如下图所示。
3、配置将要检测的本地代码路径:继续配置刚刚的文件(C:\pclint\std_VS2005.lnt),一键替换成要检测的本地代码路径。(此处很重要,每次进行工程检测时,都需要重新替换,保证检测的工程能对得上)
4、修改检测规则配置:打开检测规则配置文件(C:\pclint\options.lnt),如下图:类型1代表当前的检测规则;类型2这种首位出现//的都算作是注释,和没写一样;类型3代表屏蔽的检测规则。
5、将pc_lint配置到VS2005中:打开VS2005->工具->外部工具->添加
工具1:(创建工程)
标题:PC-lint (Project Creation)
命令:C:\pclint\lint-nt.exe
参数:-v -os(“$(TargetName).lnt”) “$(ProjectFileName)”
初始目录:$(ProjectDir)
勾选退出时关闭
工具2:(对VS当前选中的单个文件进行Check)
标题:PC-lint (Simple Check)
命令:C:\pclint\lint-nt.exe
参数:-i”c:\pclint” std_vs2005.lnt env-vc8.lnt “$(ItemDir)$(ItemFileName)$(ItemExt)”
初始目录:$(ItemDir)
勾选使用输出窗口
工具3:(对VS当前选中的单个文件所在的工程目录下的所有文件进行Check)
标题:PC-lint (Project Check)
命令:C:\pclint\lint-nt.exe
参数:-i”c:\pclint” std_vs2005.lnt env-vc8.lnt “$(TargetName).lnt”
初始目录:$(ProjectDir)
勾选使用输出窗口
- 使用方法:
1、首先,需要检查配置文件C:\pclint\std_VS2005.lnt是否是待检查的项目。
2、检测单个文件:直接打开想检测的文件,再依次使用工具1,工具2即可。
3、检测工程文件:直接打开工程中的任意一个文件,再依次使用工具1,工具3即可。
4、贴士:检测过程中会同时对当前文件引用到的文件进行Check,所以有可能检测A文件,但是查出的是B文件的问题,这都是有可能的。
- 查看问题:
工程检测速度会比较慢,可以通过VS2005->工具查看是不是已经检测完成,未完成时会有“(停止)”的字样,所有工具都可以用这个办法来判断。
检测结果全部都在输出窗口中,可以随时进行切换查看。
pc_lint输出窗口上有三个内容,下面来一一说明下:
1、检测输出的头:
2、检测出的内容输出:
有问题的地方会有error显示。
3、检测输出的尾:输出结束的标志,同时也标志着所检测出的问题计数。
左侧代表没有检测出问题,右侧代表检测出了16个问题。
命令检查方法:
1、_lint压缩包解压到C盘根目录。
2、进入cmd模式
3、修改检测规则配置:打开检测规则配置文件(C:\pclint\options.lnt),配置方法和上面一致。
4、检查文件:Lint-nt option 【文件绝对路径】
例如:Lint-nt option /home/jierjiasi/code/dev/Main.cpp。结果会直接输出到cmd窗口中。
Lint-nt option /home/jierjiasi/code/dev/*.cpp > LintOutput.txt【参考makefile】。结果输出到【LintOutput.txt】文件中
Lint-nt option /home/jierjiasi/code/dev/*.h >> LintOutput.txt【参考makefile】。结果继续输出到【LintOutput.txt】文件中
5、检查完成后可在输出文件或窗口中查看问题个数,并寻找error。
进阶版:自动化检查
待续