我相信:一片叶子也能倾倒整个季节
PC-lint---代码规范性检查工具
上一篇 /
下一篇 2008-10-15 11:39:56
/ 个人分类:流程
产品名称:PC-lint for C/C++ 开发公司:Gimpel
当前版本:
|
产品介绍:PC-lint for C/C++ | | PC-lint is a static analyzer for C/C++ source code. It will thoroughly check your C/C++ source code for bugs, glitches, inconsistencies, non-portable constructs, and much more, so you can find and fix your bugs more quickly than with traditional debugging procedures. Because it looks at all your modules at once, it can find intermodular bugs that your compiler cannot find. | screen.width-333)this.width=screen.width-333" border=0> PC-lint for C/C++ 用于检查你的C/C++源代码,帮您发现矛盾、冗余和错误等 PC-LINT是GIMPEL SOFTWARE公司的产品,其中的内容是非常广泛的,光是选项就有30 0多个,涉及到程序编译及语法使用中的方方面面。本篇培训材料旨在引导读者入门,学会 PC-LINT的基本使用方法,起抛砖引玉的作用,能让读者从这里起步继续去研究如何娴熟地 使用PC-LINT的各种选项,能让它充分为我们的开发工作服务。 1.概述 如果要给LINT工具下一个形象点的定义,那就是:一种更加严格的编译器。它不仅可 以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求, 但很可能是潜在的、不易发现的错误。请看下面的例子: 1: 2:char *report( int m, int n, char *p ) 3:{ 4: int result; 5: char *temp; 6: long nm; 7: int i, k, kk; 8: char name[11] = "Joe Jakeson"; 9: 10: nm = n * m; 11: temp = p == "" ? "null" : p; 12: for( i = 0; i 13: { 14: k++; 15: kk = i; 16: } 17: 18: if( k== 1 ) result = nm; 19: else if( kk > 0 ) result = 1; 20: else if( kk < 0 ) result = -1; 21: 22: if( m == result ) return( temp ); 23: else return( name ); 24:} 上面的代码用一般的编译器编译是一段有效的代码,但是用PC-LINT编译就会有几个告 警。首先第8行向name数组赋值时丢掉了nul字符,第10行的乘法精度会失准,第11行的比 较有问题,第14行的变量k没有初始化,第15行的kk可能没有被初始化,第22行的result也 有可能没有被初始化,第23行返回的是一个局部对象的地址。这段代码在大部分编译器下 是可以顺利编译通过的,继续查找其中的错误就要靠人工调试程序,如果程序很大,这将 是一项烦琐的工作,没有人可以保证能找出所有的这类问题,但PC-LINT只通过一次简单的 编译就可做到,显然为我们节省了大量的开发时间 功能 1) PC-Lint是一种静态代码检测工具,可以说,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/C++、Source insight、intel C/C++等等,也支持16/32/64的平台环境。 4) 支持Scott Meyes的名著(Effective C++/More Effective C++)中说描述的各种提高效率和防止错误的方法 四步速成PC-Lint概述 这么好的工具,当然是先拿起来用了再说,这里分为四步,保证你马上可以使用PC-Lint了,当然,如果你上手以后,想细致深入学习这个工具,可以在网上查找相应的资料,另外在我的另一个系列文章《软件开发的七种武器》中有一篇是讲述 PC-Lint使用的,比这篇要深入细致一些,如有兴趣,也可以看看。 第一步:安装&设置 安装和通常的软件没有什么不同。安装结束后在PC-Lint安装目录下运行CONFIG.exe,各项设置简要解释如下: a) 第一步,给出PC-Lint的安装路径和选择设置的保存文件。 b) 第二步,选择你所使用的C/C++编译器:比如Visual C++ 6.x。 c) 第三步,选择内存模式:比如32 bit Flat Model。 d) 第四步,选择所使用的库:比如MFC,OWL,等,可多选,在windows下开发的一般要选中windows 32 bit。 e) 第五步,C++编程提出过重要建议的作者,选择某作者后,他提出的编程建议方面的选项将被打开:比如Scott Meyers,可不选。 f) 第六步,头文件的设置:可在后面步骤中手工添加。 第二步:整合PC-Lint到选定的编译环境 当你在上述第二步中选择了编译器后,可以在PC-Lint目录下找到一个"env-选用的编辑环境.lnt"文件,比如对于Source insight 是env-si.lnt,对于vc6是env-vc6.lnt。打开此文件,根据上面的描述,配置你的编译器,下面以VC6为例: •选取菜单 tools | customize..... •选取 Tools 标签 •点按主对话框上方的虚线小方框 New •输入 name: PC-LINT •输入 Command: c:\lint\lint-nt.exe,假设安装到此路径 •输入 Arguments: c:\lint\std.lnt ?(FilePath)?7)选择 (x) Use Output Window •Close 第三步:Lint单个C文件 a) 打开一个C文件 b) 运行第2)步集成上的PC-Lint菜单项 c) LINT结果会在一两秒之内出来。告警的解释可参考LINT安装目录下MSG.TXT文件,打开文件,通过查找告警号码定位,就可以看到比较详细的说明。 第四步:Lint多个C文件 a) 在LINT软件目录下建立PRJLINT.LNT文件,文件的第一行是使用的LINT配置文件名,从第二行开始,列出想所有要LINT的*.C文件名,一行一个。如果要把结果输出到文件,在前面加上一行"-os(文件名)"(例如:"-os(c:\lint\result.txt)")。样例:YF_Config.lnt // 以下为自己想要进行Lint的.C文件, G:\src\tt\tt1.c G:\src\tt\tt2.c … b) 用2)介绍的方法在Source Insight"中介绍的方法增加一条"PC-LINT PROJECT"命令,所有设置与"PC-LINT"设置相同,除了 ①"Custom Commands"对话框中"RUN"编辑框的文字由"C:\LINT\LINT-NT.EXE filename.lnt %f"改为"C:\LINT\LINT-NT.EXE PRJLINT.LINT",也就是把配置文件名改为PRJLINT.LNT,并去掉未尾的"%f" ②设置的快捷键与PC-LINT要区别开来 利用下面的DOS命令可以用来得到一堆*.C文件的清单。例如: ① 列出C:\SRC下所有*.C文件,并保存到C:\SRC\FILELIST.TXT: DIR C:\SRC\*.C /B >C:\SRC\FILELIST.TXT ② 列出C:\SRC下,包括SRC的子目录下的所有的*.C文件,,并添加到C:\SRC\FILELIST.TXT的未尾: DIR C:\SRC\*.C /S/B >>C:\SRC\FILELIST.TXT PC-Lint 重要文件说明 Msg.txt :解释告警的内容。 选用的.lnt :包含头文件的路径,-i选项。 env-选用的编辑环境.lnt :讲述如何将PC-lint与对应的编辑环境结合起来。 co-xxx.lnt :选定的编译器。 STD.LNT :内存模型等全局性东西。 LIB-xxx.LNT :库类型的列表,包括标准C/C++库,MFC库,OWL库等等。 AU-xxx.LNT :C++编程提出过重要建议的作者,选择某作者后,他提出的编程建议方面的选项将被打开。 OPTIONS.LNT :反映全局编译信息显示情况的选项文件
|
|
收藏
举报
TAG:
流程