静态代码检测工具

上传人:平*** 文档编号:10284940 上传时间:2017-10-07 格式:DOC 页数:28 大小:121.56KB
返回 下载 相关 举报
静态代码检测工具_第1页
第1页 / 共28页
静态代码检测工具_第2页
第2页 / 共28页
静态代码检测工具_第3页
第3页 / 共28页
静态代码检测工具_第4页
第4页 / 共28页
静态代码检测工具_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《静态代码检测工具》由会员分享,可在线阅读,更多相关《静态代码检测工具(28页珍藏版)》请在金锄头文库上搜索。

1、静态代码检测工具-PC-lint2007-11-28 23:09文章出处:51testing概述PC-Lint 是一个历史悠久,功能异常强劲的静态代码检测工具。经过这么多年的发展,它不但能够监测出许多语法逻辑上的隐患,而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点,在很多专业级的软件公司,比如 Microsoft, PC-Lint 检查无错误无警告是代码首先要过的第一关,个人觉得,对于小公司和个人开发而言,PC-Lint 也非常重要,因为基于开发成本考虑,小公司和个人往往不能拿出很多很全面的测试,这时候,PC-Lint 的强劲功能可以很好地提高软件的质量。C语言的灵活性带来了代

2、码效率的提升,但相应带来了代码编写的随意性,另外 C编译器不进行强制类型检查,也带来了代码编写的隐患。PCLint 识别并报告 C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。软件除错是软件项目开发成本和延误的主要因素。PClint能够帮你在程序动态测试之前发现编码错误。这样消除错误的成本更低。使用 PC-Lint在代码走读和单元测试之前进行检查,可以提前发现程序隐藏错误,提高代码质量,节省测试时间。并提供编码规则检查,规范软件人员的编码行为。功能1) PC-Lint 是一种静态代码检测工具,可以

3、说,PC-LINT 是一种更加严格的编译器,不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误。2) PC-lint 不但可以检测单个文件,也可以从整个项目的角度来检测问题,因为 C语言编译器固有的单个编译,这些问题在编译器环境下很难被检测,而 PC-Lint在检查当前文件的同时还会检查所有与之相关的文件,可想而知,它会对我们有很大的帮助。3) PC-lint 支持几乎所有流行的编辑环境和编译器,比如 Borland C+从 1.x到 5.x各个版本、Borland C+ Build、GCC、VC,VC.net、watcom C

4、/C+、Source insight、intel C/C+等等,也支持 16/32/64的平台环境。4) 支持 Scott Meyes的名著(Effective C+/More Effective C+)中说描述的各种提高效率和防止错误的方法。下面主要介绍了将 PC-Lint集成到 VC+6.0和 SourceInsight的方法和步骤。 (一)Windows 下 C/C+开发工具中,VC6 使用较为普遍,因此这里先讲下 VC6.0环境中集成pclint的步骤.首先, 当然要下载软件,正版软件要 200多$呢,买不起!所以只好网上找免费的拉。从 http:/ 处可以下载到一个 8.0版本的 p

5、clint.1.将 pclint.rar解压至 c:, 这样 lint文件就位与 c:pclint(安装目录)下了。2.将 c:pclintlnt 下的 3个文件 lib-w32.lnt,env-vc6.lnt,co-msc60.lnt 拷贝至c:pclint下, 再在安装目录下创建 std.lnt和 options.lnt两个文件,其中 std.lnt的内容如下/ contents of std.lntc:pclintco-msc60.lntc:pclintlib-w32.lntc:pclintoptions.lnt -si4 -sp4-iD:Program Files;D:Program

6、FilesMicrosoft Visual StudioVC98Include/end其中-i 后面的路径名为 VC的安装路径和 VC Include 文件路径,根据自己的修改便可。options.lnt 内容可为空,为定制内容,以后需要时再添加。准备工作做完了,下一步就是要将 pclint集成到 VC6中去,先配置 lint使之能对单个 C或 C+文件进行检查。1.打开 VC6,tools-customizetools 新建一个名为 pclint的项,在下面填入command: C:pclintlint-nt.exearguments: -u c:pclintstd.lnt c:pclint

7、env-vc6.lnt $(FilePath)Use Output Window 打上勾close 完成。 这个在你 VC窗口 tools菜单下应该多了一个 pclint选项,可以用它来运行 lint程序,对你的 c/c+代码进行静态检查了。现在就可以用个小程序测试一下 pclint了 /test1.cpp#include class Xint *p;public:X() p = new int20; void init() memset( p, 20, a ); X() delete p; ;编译这个文件,看下你的编译器给你多少警告,再运行下 lint, 可以自己对比一下。我的机器上,VC

8、产生 0 errors 0 warnings, 而 lint程序产生了如下 8条警告信息,有些还是很有用处的提示,这里就不一一分析了.test.cpp(12): error 783: (Info - Line does not end with new-line)test.cpp(7): error 1732: (Info - new in constructor for class X which has no assignment operator)test.cpp(7): error 1733: (Info - new in constructor for class X which h

9、as no copy constructor) memset( p, 20, a ); test.cpp(9): error 669: (Warning - Possible data overrun for function memset(void *, int, unsigned int), argument 3 (size=97) exceeds argument 1 (size=80) Reference: test.cpp: lines 7, 9)test.cpp(7): error 831: (Info - Reference cited in prior message)test

10、.cpp(9): error 831: (Info - Reference cited in prior message) delete p; test.cpp(11): error 424: (Warning - Inappropriate deallocation (delete) for new data) - Wrap-up for Module: test.cpptest.cpp(2): error 753: (Info - local class X (line 2, file test.cpp) not referenced)Tool returned code: 8 2.通常一

11、个 VC项目中包含多个 C或 C+文件,有时需要同时对这一系列的文件进行 lint检查,我们可以通过配置一个 pclint_project来达到目的。和前面第一步中的方法基本一样,不过这里我们需要用到 unix中的 find等命令来查找当前目录下的 C和 C+文件,然后再将它们送给 lint程序处理,所以得先从 http:/www.weihenstephan.de/syring/win32/UnxUtils.zip 下载 UnxUtils.zip.接着按下列步骤进行:(i)解压 UnxUtils.zip至 c:unix下, 可以看到 C:unixusrlocalwbin有很多 unix下的命令

12、,等下会用到(ii)打开 VC6,tools-customizetools 新建一个名为 pclint_project的项,只不过下面的 commands和 arguments内容不同。commands: C:unixusrlocalwbinfind.exearguments: $(FileDir) -name *.c -o -name *.cpp | C:unixusrlocalwbinxargs lint-nt -ic:unixusrlocal -u c:pclintstd.lnt c:pclintenv-vc6.lnt (iii)Use Output Window打上勾,close 退出

13、。好了,这时 VC tools菜单下应该又多了一个 pclint_project项了,你以后可以用它来对一个 VC项目运行lint检查程序了. (二)SourceInsight 中集成 pclint程序的方法.Windows平台下也有好多人都喜欢用 SourceInsight编辑 C/C+程序,如果将 pclint集成到SourceInsight中,那就相当于给 SourceInsight增加了一个 C/C+编译器,而且它的检查更严格,能发现一些编译器发现不了的问题,可以大大减少程序中潜伏的 BUG。这样的话,相信更多人会喜欢 SourceInsight这个工具了。下面简要地介绍下 pclin

14、t集成到 SourceInsight中的方法 有了上面 VC中集成 pclint的经验, 下面的事情就应该比较轻松了,(a)打开你的 SourceInsight, 选择 OptionsCustom CommandsAdd, 输入 pclint(当然名字可以随便).(b) Run中输入: c:pclintlint-nt -u c:pclintstd.lnt c:pclintenv-vc6.lnt %f(c)Dir留空,将 Iconic Window, Capture Output, Parse Links in OutPut, File,then Line 四项前打上勾。(d)然后点右侧 Men

15、u-MenuView, 右侧 Insert, OK.(e)此时在 SourceInsight中的 View菜单下多了个 pclint选项,可以用它来对单个 C/C+文件进行静态检查。 用类似的方法可以配置对一个 SourceInsight工程文件的 lint检查。(a)打开你的 SourceInsight, 选择 OptionsCustom CommandsAdd, 输入 pclint_project(当然名字可以随便).(b) Run中输入: C:unixusrlocalwbinfind.exe %d -name *.c -o -name *.cpp | C:unixusrlocalwbinxargs lint-nt -iC:unixusrlocal -u c:pclintstd.lnt c:pclintenv-vc6.lnt(c)Dir留空,将 Iconic Window, Capture Output, Parse Links in OutPut, File,then Line 四项前打上勾。(d)然后点右侧 Menu-MenuView, 右侧 Insert, OK.(e)此时在 SourceInsight中的 View菜单下多了个 pclint_project选项,可以用它来一个工程中的 C/C+文件进行静态检查。PCLINT代码静态分析工具 PC-LINT 安装配置【转

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号