欢迎来到天天文库
浏览记录
ID:57689564
大小:16.00 KB
页数:2页
时间:2020-09-01
《PC-Lint 代码静态分析工具.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、PC-Lint代码静态分析工具实验目的:掌握代码静态分析工具使用方法。实验内容及步骤:PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。PCLint识别并报告C语言中的编程陷阱和格式缺陷的发生。它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。软件除错是软件项目开发成本和延误
2、的主要因素。PClint能够帮你在程序动态测试之前发现编码错误。这样消除错误的成本更低。使用PC-Lint在代码走读和单元测试之前进行检查,可以提前发现程序隐藏错误,提高代码质量,节省测试时间。并提供编码规则检查,规范软件人员的编码行为。1VC6.0环境中集成pclint的步骤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两个
3、文件,其中std.lnt的内容如下//contentsofstd.lntc:pclintco-msc60.lntc:pclintlib-w32.lntc:pclintoptions.lnt-si4-sp4-i"D:ProgramFiles;D:ProgramFilesMicrosoftVisualStudioVC98Include"//end其中-i后面的路径名为VC的安装路径和VCInclude文件路径,根据自己的修改便可。options.lnt内容可为空,为定制内容,以后需要时再添加。准备工作做完了,下一步就是要将pclint集成到VC6中去,先配
4、置lint使之能对单个C或C++文件进行检查。1.打开VC6,tools--->customize-->tools新建一个名为pclint的项,在下面填入command:C:pclintlint-nt.exearguments:-uc:pclintstd.lntc:pclintenv-vc6.lnt"$(FilePath)"UseOutputWindow打上勾close完成。这个在你VC窗口tools菜单下应该多了一个pclint选项,可以用它来运行lint程序,对你的c/c++代码进行静态检查了。现在就可以用个小程序测试一下pclint了//test1.cpp
5、#includeclassX{int*p;public:X(){p=newint[20];}voidinit(){memset(p,20,'a');}~X(){deletep;}};编译这个文件,看下编译器给你多少警告,再运行下lint,对比一下。机器上,VC产生0errors0warnings,而lint程序产生了如下8条警告信息,有些还是很有用处的提示.test.cpp(12):error783:(Info--Linedoesnotendwithnew-line)test.cpp(7):error1732:(Info--newinconstructo
6、rforclass'X'whichhasnoassignmentoperator)test.cpp(7):error1733:(Info--newinconstructorforclass'X'whichhasnocopyconstructor){memset(p,20,'a');}test.cpp(9):error669:(Warning--Possibledataoverrunforfunction'memset(void*,int,unsignedint)',argument3(size=97)exceedsargument1(size=80)[Reference:t
7、est.cpp:lines7,9])test.cpp(7):error831:(Info--Referencecitedinpriormessage)test.cpp(9):error831:(Info--Referencecitedinpriormessage){deletep;}test.cpp(11):error424:(Warning--Inappropriatedeallocation(delete)for'new[]'data)---Wrap-upforModule:test.cpptest.cpp(2
此文档下载收益归作者所有