白盒测试工具Pclint.ppt_第1页
白盒测试工具Pclint.ppt_第2页
白盒测试工具Pclint.ppt_第3页
白盒测试工具Pclint.ppt_第4页
白盒测试工具Pclint.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、白盒测试工具 Pc lint,Pc lint,PCLint/FlexeLint for C/C+是GIMPEL SOFTWARE公司的产品 PC-Lint是一个历史悠久,功能异常强劲的静态代码检测工具。 它的使用历史可以追溯到计算机编程的远古时代(30多年以前)。 经过这么多年的发展,它不但能够监测出许多语法逻辑上的隐患,而且也能够有效地提出许多程序在空间利用、运行效率上的改进点, 在很多专业级的软件公司,比如Microsoft, PC-Lint检查无错误无警告是代码首先要过的第一关,Pc lint的特点,1) PC-Lint是一种静态代码检测工具,可以说,PC-LINT是一种更加严格的编译器

2、,不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误。 2) PC-lint不但可以检测单个文件,也可以从整个项目的角度来检测问题,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+等等, 4) 支持Scott Meyes的名著(Effective C+/More Effecti

3、ve C+)中说描述的各种提高效率和防止错误的方法。,使用方法,可以用命令行方式进行,例如lint-nt u std.lnt test1.c test2.c test3.c 。 另外支持MAKEFILE方式。 也可以集成到开发环境中。 Source Insight SLICKEDIT MS VC6.0 KEIL C. 等,操作平台,PC-lint for C/C+: Windows NT/ 95/ 98/ 2000/ ME DOS OS/2 (32 bit) FlexeLint for C/C+: Unix 和Unix-like 平台 (AIX, HP-UX, Sun OS, Solaris,

4、 LINUX, Tru64 Unix, SCO, etc.) VAX VMS IBMs VM, MVS OS-9 其他支持c编译器的平台,兼容性,支持K”或用ctrl+Enter换行来分割多个包含路径。或者可以点中Brows,在目录树中直接选择。填完后选择下一步;,然后出现以下对话框,表示std_a.lnt,std.lnt在配置路径下已被创建,这里的std.lnt实际上就是std_a.lnt的一个拷贝,只是在缺省方式下,lint时使用的配置文件是std.lnt;,接下来将会准备产生一个控制全局编译信息显示情况的选项文件OPTIONS.LNT,这里选择No,即不取消这些选项。,接着选择所支持的集

5、成开发环境选项,可选多个或一个也不选,PC-LINT提供了集成在多种开发环境中工作的功能,例如可集成在VC、BC、Source Insight中。这里我们选择MS VC+6,这样env-v6.lnt就会被拷贝到配置路径中。,安装程序会生成一个LIN.BAT文件,该文件是运行PC-LINT的批处理文件,为了使该文件能在任何路径下运行,安装程序提供了两种方法供你选择。第一种方法是让你选择把LIN.BAT拷贝到任何一个PATH目录下。第二种方法是生成一个LSET.BAT文件,在每次使用PC-LINT前先运行它来设置路径,或者把LSET.BAT文件的内容拷贝到AUTOEXEC.BAT文件中。建议选择第

6、一种方法,指定的目录为安装目录。,Pclint 配置小结,上面采用config.exe 图形工具完成了配置。 也可以采用手工过程进行配置。 1.将pclint.rar解压至c:, 这样lint文件就位与c:pclint(安装目录)下了。 2.将c:pclintlnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt拷贝至c:pclint下, 3. 在安装目录下创建std.lnt和options.lnt两个文件,其中std.lnt的内容如下,Pclint 配置小结,3. 在安装目录下创建std.lnt和options.lnt两个文件,其中std.lnt的内容如

7、下 d:pclintco-msc60.lnt d:pclintlib-w32.lnt d:pclintenv-vc6.lnt d:pclintoptions.lnt -si4 -sp4 -ic:Program FilesMicrosoft Visual StudioCommonMSDev98Bin;c:Program FilesMicrosoft Visual StudioVC98ATLInclude;c:Program FilesMicrosoft Visual StudioVC98Include;c:Program FilesMicrosoft Visual StudioVC98MFCIn

8、clude“ 其中-i后面的路径名为VC的安装路径和VC Include 文件路径,根据自己的修改便可。 options.lnt 内容可为空,为定制内容,以后需要时再添加。准备工作做完了,下一步就是要将pclint集成到VC6中去,先配置lint使之能对单个C或C+文件进行检查,-i 指明包含路径,env-vc6.lnt:指定输出错误报告的格式,co-msc60.lnt:指定c+编译器版本,Lib-w32指定定内存模式,Pclint 配置小结,options.lnt 内容可为空,为定制内容,以后需要时再添加。准备工作做完了,下一步就是要将pclint集成到VC6中去,先配置lint使之能对单个

9、C或C+文件进行检查,集成到Microsoft Visual C+ 6,打开VC6,tools-customize-tools 新建一个名为pclint for unit check的项,在下面填入 command: C:pclintlint-nt.exe arguments: -u c:pclintstd.lnt $(FilePath)“ Use Output Window 打上勾 close 完成。 这样,在VC窗口tools菜单下应该多了一个pclint选项,可以用它来运行lint程序,对单个c/c+代码进行静态检查了。,-u 指明使用哪些.lnt文件,首先导出当前工程的.lnt文件 方

10、法如下:,检查当前活动工程中的所有源文件的设置方法,导出当前工程的.lnt文件,Command: C:PCLint8LINT-NT.EXE Arguments: +linebuf $(TargetName).dsp$(TargetName).lnt Initial directory: $(TargetDir) Command:Lint-nt.exe文件及其绝地路径(如果路径中有空格,路径要用“”)。 +linebuf $(TargetName).dsp$(TargetName).lnt 参数+linebuf表示加倍行缓冲的大小,最初是600 bytes,行缓冲用于存放当前行和你读到的最长行的

11、信息。 $(TargetName)是VC集成开发环境的环境变量,表示当前激活的Project名字 注意要选中“Use Output Window”选项,这样PC-Lint就会将信息输出到Output窗口中。 在Initial directory 的$(TargetDir)表示在这个目录(project 所在目录的debug)下执行此命令,如果不指定,则将.lnt文件存放在project 文件所在的目录下。,导出当前工程的.lnt文件,检查当前活动工程中的所有源文件的设置方法,不写该部分的话,直接在输出窗口中显示信息。 否则,将分析结果显示在叔叔窗口中,检查当前活动工程中的所有源文件的设置方法,

12、打开VC6,tools-customize-tools 新建一个名为pclint for project check的项,在下面填入 command: C:pclintlint-nt.exe arguments: +ffn u c:PC-Lintstd.lnt $(TargetName).lnt Initial directory: .$(TargetDir)(与前一步的设置一致) Use Output Window 打上勾 close 完成。 参数中+ffn表示Full File Names,LINT对常见错误的检查,1. 检测指针的错误使用 Lint对使用空指针,指针越界,对常量内容的更改

13、等。,int main () int la; char x100,c=10; char *p=x; for(c =0 ; c120; c+ ) *(p+) =c;/* 不会检查出错误 */ x102 = 100;/*会检查出错误 */ *(p+102)= 100;/*会检查出错误 */ p102= 100;/*会检查出错误 */ return c; ,检测if语句中的错误 对于if语句中经常出现的把”=”写成”=”的错误,能够通过lint检测出来。,int main() char x100,c; char *p=x; if(c300)/* 错误 */ *p=1; if(c = 20)/* 错误

14、 */ *p=1; ,对于如下if语句的问题,也能检测出来: if (xi big); /* 错误号721,可疑的分号;用法 */ big = xi; 能够检测出代码中if语句之后的可疑的正缩进格式: if (xi big) big = xi; y = big; /* 错误号539,此行不应该正缩进 */ 能够检测出代码中if语句之后的可疑的负缩进格式: if ( y z) if (yz+2) y = z; else /*错误号525,此行不应该负缩进 */ x = z;,检测switch结构中的错误 lint能够检测出switch分支中漏掉的”break”语句。如果某个分支确定不使用break;可以在”case“的前一行加上注释。另外lint还对没有default分支的switch报错。,int main () int la; char x100,c; c = 1; switch(c) case a: case b:/* 两个case连在一起,没有错

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论