实验一 单元静态测试工具pclint的使用(1)

合集下载

PCLINT代码静态测试工具

PCLINT代码静态测试工具

最近学习了静态测试工具pclint,觉得它的功能很强大,可以检查出编译器发现不了的逻辑错误,还可以与Source Insight\VC集成,这里先推荐网上的两篇文章,讲述的非常好,完全可以跳过不看以下的介绍.工具的使用很简单,需要实际使用过程逐步地积累经验,了解LOG控制参数,和错误信息的含义.第一篇详细地讲述了PCLINT的入门到深入,有详细的例子:/content/10/0323/15/610539_19931453.shtml第二篇比较简单地介绍了入门遇到的问题,例如如何配置std.lnt:/denglei99/blog/item/8d4be12465024b318744f9e9.html第三篇是PCLINT软件包中自带的帮助文档,很全面,但是英文版本的,第一篇文章很多内容是从这里直接翻译过去的。

在软件包中的C:\PCLint8\pc-lint.pdf,主要是关注17章的错误码的描述.一、PCLINT的优点PC-Lint则偏重于代码的逻辑分析,它能够发现代码中潜在的错误,比如数组访问越界、内存泄漏、使用未初始化变量等,它的检查主要涉及到如下:强类型检查、变量值跟踪、赋值顺序检查、弱定义检查、格式检查、缩进检查、const变量检查、volatile变量检查等。

PC-Lint的错误信息很有规律,也可以通过添加语句的方式来屏蔽不必要的信息。

下面是PC-Lint错误码分布情况:错误说明C C++告警级别语法错误1-1991001-11991内部错误200-2990致命错误300-3990告警400-6991400-16992消息700-8001700-18993可选信息900-9991900-19994PC-Lint的检查分很多种类,有强类型检查、变量值跟踪、语义信息、赋值顺序检查、弱定义检查、格式检查、缩进检查、const变量检查和volatile变量检查等等。

对每一种检查类型,PC-Lint都有很多详细的选项,用以控制PC-Lint的检查效果,屏蔽不必要的信息。

PC-lint简明教程(CC++静态代码检查工具)

PC-lint简明教程(CC++静态代码检查工具)

PC-lint简明教程(CC++静态代码检查⼯具)前⾔PC-lint是⼀款⼩⽽强⼤的C/C++静态代码检查⼯具,它可以检查未初始化变量,数组越界,空指针等编译器很难发现的潜在错误。

在很多专业的软件公司如Microsoft,PC-Lint检查⽆错误⽆警告是代码⾸先要过的第⼀关。

安装配置有关安装步骤,请参考附录中的⽂章“静态代码检查⼯具PC-Lint“的“4 PC-Lint软件使⽤⽅法”,不过该⽂章使⽤的是VC++ 6.0的开发环境,最新的PC-lint 9.0⽀持VS2008,可以在安装过程中⾃⼰选择。

关于PC-lint和VS2008的集成,请参考PC-Lint安装⽬录下的env-vc9.lnt⽂件,⾥⾯讲解的⾮常之详细,不必参考“静态代码检查⼯具PC-Lint”这篇⽂章中的该段内容(如果你的E⽂不是很好,那参考⼀下中⽂还是有帮助的)。

在env-vc9.lnt⽂件中的Simple Check部分,有如下⼀段内容:Arguments: -i"c:/lint" std.lnt env-vc9.lnt "$(ItemFileName)$(ItemExt)"建议使⽤以下⼀段新的Arguments:Arguments: -i"c:/lint" std.lnt env-vc9.lnt "$(ItemDir) $(ItemFileName)$(ItemExt)"作⽤是在检查代码的⽣成结果中,可以双击某⼀个检查结果直接定位到代码中的某⼀⾏,缺点是检查结果会更长⼀点,因为它使⽤了全路径。

依照env-vc9.lnt的说明配置完成后,在VS2008的Tools菜单下会有四个PC-lint的选项,如下图所⽰。

常见错误1. 在PC-lint的Configuration向导结束后,会在PC-lint的安装⽬录下⽣成std.lnt⽂件,⾥⾯有⼀⾏:options.lnt -si4 -sp4如果按照“静态代码检查⼯具PC-Lint“⾛完所有的标准配置的话,options.lnt会⾃动⽣成,但⽆内容(注释除外),如果中间某⼀步skip了,可能该⽂件就不会⽣成,这时就需要⼿动创建⼀个options.lnt⽂件,或在std.lnt中注释掉options.lnt,否则会在使⽤PC-lint时会出现找不到options.lnt的错误。

PC-lint安装及使用总结

PC-lint安装及使用总结

PC-lint研究总结1. PC-lint总体介绍 (2)2. 安装和配置 (2)2.1 安装 (2)2.2 配置 (3)3. 使用方法 (14)3.1 命令行方式 (14)3.2 集成到IDE方式 (15)3.2.1 集成到VC中 (15)3.2.2 集成到CB中 (17)3.2.3 集成到SI中 (20)3.2.4 集成到UE中 (23)3.3 makefile方式 (24)3.3.1 GNU Make和makefile介绍 (24)3.3.1.1 GNU Make (24)3.3.1.2 makefile 基本结构 (25)3.3.1.3 makefile 变量 (26)3.3.1.4 GNU make 的主要预定义变量 (26)3.3.1.5 隐含规则 (27)3.3.2 平台的makefile结构 (27)3.3.2.1 平台级 (28)3.3.2.2 子系统级(以支撑为例) (28)3.3.2.3 平台makefile的调用方式 (29)3.3.3 平台makefile同PC-lint的集成 (29)4. 平台推广方案(建议) (34)4.1 推广使用的前提 (34)4.2 个人的使用方案 (34)4.3 子系统的检查人的使用方案 (34)4.4 特殊情况处理方法 (34)1. PC-lint总体介绍PC-Lint/FlexeLint for C/C++是GIMPEL SOFTWARE公司的产品,是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。

它除了可以检查出一般的语法错误外,还可以检查出那些虽然符合语法要求,但很可能是潜在的、不易发现的错误。

C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。

PC-Lint识别并报告C语言中的编程陷阱和格式缺陷的发生。

它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。

PCLint使用指南

PCLint使用指南
Copyright
Copyright 2008 Authors: Liu Feixiang Email : openlek@ This LICENSE page is part of An Overview on Numerical Analysis Software, You cannot remove the License page. Permission is granted to copy, distribute and/or modify this document, provided the text of this NOTICE is retained, a notice that the code was modified is included with the above COPYRIGHT NOTICE and with the COPYRIGHT NOTICE in the LICENSE file, and that the LICENSE file is distributed with the modified code. Specifically, I want to make sure that you have the right to share copies. LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. MAKES NO REPRESENTATIONS OR WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANYPARTICULAR PURPOSE OR THAT THE USE OF THE LICENSED SOFTWARE COMPONENTS OR DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

PC-Lint 代码静态分析工具

PC-Lint 代码静态分析工具

PC-Lint代码静态分析工具实验目的:掌握代码静态分析工具使用方法。

实验内容及步骤:PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。

它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。

C语言的灵活性带来了代码效率的提升,但相应带来了代码编写的随意性,另外C编译器不进行强制类型检查,也带来了代码编写的隐患。

PCLint识别并报告C语言中的编程陷阱和格式缺陷的发生。

它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。

软件除错是软件项目开发成本和延误的主要因素。

PClint能够帮你在程序动态测试之前发现编码错误。

这样消除错误的成本更低。

使用PC-Lint在代码走读和单元测试之前进行检查,可以提前发现程序隐藏错误,提高代码质量,节省测试时间。

并提供编码规则检查,规范软件人员的编码行为。

1 VC6.0环境中集成pclint的步骤1.将pclint.rar解压至c:\, 这样lint文件就位与c:\pclint(安装目录)下了。

2.将c:\pclint\lnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt拷贝至c:\pclint下,再在安装目录下创建std.lnt和options.lnt两个文件,其中std.lnt的内容如下// contents of std.lntc:\pclint\co-msc60.lntc:\pclint\lib-w32.lntc:\pclint\options.lnt -si4 -sp4-i"D:\Program Files;D:\Program Files\Microsoft Visual Studio\VC98\Include"//end其中-i后面的路径名为VC的安装路径和VC Include 文件路径,根据自己的修改便可。

PC-Lint工具使用说明书

PC-Lint工具使用说明书

PC-Lint工具使用说明书1.使用操作步骤1、将lint.rar拷贝到C:\根目录下;解压缩,文件产生在C:\lint目录下;目录中已经包括配置好的两个工作目录:C:\lint\config_diab //针对Diab编译器C:\lint\config_vc //针对Vc6.0编译器2、将C:\lint\config_diab目录下lin.bat拷贝到代码文件根目录下,如9000改进项目的E:\PM-8000\03.Code\9210下。

建立工程中所有*.cpp文件信息,在Dos命令提示符中代码文件根目录下键入如下命令,E:\PM-8000\03.Code\9210>dir /s /b *.cpp >fs_all.lnt3、lin.bat的编辑,将lin.bat改成如下:"C:\lint\Lint-nt" +v -i"C:\lint\config_diab;c:\diab\4.3g\include;res;include;system;drivers;menudrv; modules;modules/co;modules/ecga;modules/ibp;modules/keyboard;modules/nibp;modul es/recorder;modules/spo2;modules/co2;modules/ag;modules;net;trend;prs " std.lnt -os(_LINT.TMP) %1 %2 %3 %4 %5 %6 %7 %8 %9@echo offecho ---echo output placed in _LINT.TMP"C:\lint\CountErrs"-i的参数包括两部分:C:\lint\config_diab;指明配置文件std.lnt的路径;其他指明相关头文件的路径;"C:\lint\CountErrs"指的是对输出结果的执行文件。

PC-Lint工具使用说明书

PC-Lint工具使用说明书

PC-Lint工具使用说明书1.使用操作步骤1、将lint.rar拷贝到C:\根目录下;解压缩,文件产生在C:\lint目录下;目录中已经包括配置好的两个工作目录:C:\lint\config_diab //针对Diab编译器C:\lint\config_vc //针对Vc6.0编译器2、将C:\lint\config_diab目录下lin.bat拷贝到代码文件根目录下,如9000改进项目的E:\PM-8000\03.Code\9210下。

建立工程中所有*.cpp文件信息,在Dos命令提示符中代码文件根目录下键入如下命令,E:\PM-8000\03.Code\9210>dir /s /b *.cpp >fs_all.lnt3、lin.bat的编辑,将lin.bat改成如下:"C:\lint\Lint-nt" +v -i"C:\lint\config_diab;c:\diab\4.3g\include;res;include;system;drivers;menudrv; modules;modules/co;modules/ecga;modules/ibp;modules/keyboard;modules/nibp;modul es/recorder;modules/spo2;modules/co2;modules/ag;modules;net;trend;prs " std.lnt -os(_LINT.TMP) %1 %2 %3 %4 %5 %6 %7 %8 %9@echo offecho ---echo output placed in _LINT.TMP"C:\lint\CountErrs"-i的参数包括两部分:C:\lint\config_diab;指明配置文件std.lnt的路径;其他指明相关头文件的路径;"C:\lint\CountErrs"指的是对输出结果的执行文件。

PC-lint使用文档

PC-lint使用文档

PC-lint使用说明1.概述PC-Lint/FlexeLint 是一款代码静态分析工具,它的作用就是查找C/C++程序的错误与缺陷(bugs),分析代码存在的潜在问题,比编译器更要严格。

2.PC-lint安装安装步骤如下:一、运行pclint9setup.exe开始安装二、在完成安装之前,去掉勾选I want to run the configuration now,单击Finish完成安装三、最后将patch目录的所有文件复制到安装目录,执行ptahc.bat批处理文件安装完成后可执行下面的命令查看版本号:C:\lint>lint-nt.exe -vPC-lint for C/C++ (NT) Vers. 9.00e, Copyright Gimpel Software 1985-20103.配置PC-lint安装完成之后需配置PC-lint。

一、如下图所示,从应用程序中选择PC-lint CONFIG,此部也可以在安装完成时进行,只要勾选I want to run the configuration now即可配置。

二、进入配置界面,单击下一步三、下一步,选择C:\lint(这个是pc lint的安装目录),Create a new STD.LNT四、下一步,弹出警告,选择是五、选择编译环境,Microsoft Visual C++ 2005 (co-msc80.lnt)六、选择32-bit Flat Model(-ms, -si4, -sp4)七、根据需要选择支持的库,Active Template Library(ATL),Microsoft Foundation Class Library,Standard Template Library,Windows 32-bit八、选择Scott Meyers(Effective C++ More Effective C++ and Effective C++ 3rd Edition),Dan Saks,MISRA 2004九、选择Create -i options十、选择包含目录,此处将VC的包含目录加进去,如下所示:C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\includeC:\Program Files \Microsoft Visual Studio 8\VC\includeC:\Program Files \Microsoft Visual Studio 8\VC\PlatformSDK\Include十一、CONFIG确定十二、是否要创建另外一个配置,否十三、Questionnaire选择No十四、Environment选择(env-vc8.lnt) Microsoft's Visual C++.NET 2005十五、Batch Files选择Prepend my PC-lint directory to my PATH(create LSET.BAT)最后完成配置。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.新建一个名为pclint的项,
2.在下面填入command:C:\lint\lint-nt.exe
3.arguments:-u -ic:\lint std.lnt $(FileName)
4.initial directory:$(FileDir)
e Output Window打上勾
6.close完成。
shiyan2.c(51) : Info 716: while(1) ...
_
2、Delay();
shiyan2.c(56) : Warning 522: Highest operation, function 'Delay', lacks
side-effects、
intscoreMath;
intscoreMusic;
};
void main()
{
struct STUDENT stu[30] = {{1,"杨过","男",{1999,12,20},90,83,72,82},{2,"郭靖","男",{1999,07,06},78,92,88,78},
{3,"小龙女","女",{1999,07,06},89,72,98,66},{4,"郭襄","女",{1999,07,06},78,95,87,90}};
{
t->second=0;
t->minute++;
}
if (t->minute==60)
{
t->minute =0;
t->hour++;
}
if (t->hour==24)
t->hour=0;
printf("%2d:%2d:%2d\r", t->hour, t->minute, t->second);
这个在你VC窗口tools菜单下应该多了一个pclint选项,可以用它来运行lint程序,对你的c/c++代码进行静态检查了。
三、对下面的程序利用pclint做代码检查并分析报告的缺陷
检查程序一:
//利用指向结构体数组的指针计算学生各科的平均成绩
#include <stdio.h>
struct date
'struct STUDENT [30]'
检错:定义的STUDENT数组数列太小
2、for (pt=stu; pt<stu+4; pt++)
shiyan1.c(32) : Info 838: Previously assigned value to variable 'pt' has not
been used
}
}
检查程序二:
//用结构体模拟计时器
#include <stdio.h>
struct clock
{
int hour;
int minute;
int second;
};
typedef struct clock CLOCK;
void update(CLOCK *t)
{
t->second++;
if (t->second==60)
struct STUDENT *pt;
float sum[4] = {0.0},average[4] = {0.0};
inti;
pt = stu; /*pt指向结构体数组的第一个元素*/
for (pt=stu; pt<stu+4; pt++)
{
sum[0] = sum[0] + pt->scoreComputer;
update(&t);
ay();
}
return 0;
}
三、实验结果
代码一:
1、{3,"小龙女","女",{1999,07,06},89,72,98,66},{4,"郭襄","女",{1999,07,06},78,95,87,90}};
shiyan1.c(25) : Info 785: Too few initializers for aggregate 'stu' of type
实验一单元静态测试工具pclint的使用
实验步骤;
一、安装pclint
把压缩文件解压到c:\lint下。然后运行config程序。一步步按照下面的说明进行配置
这里选择“是”
这里选vc++ 6.x
这里选择“是”
这里选择“否”
二、在vc中加载pclint
打开VC6,tools--->customize-->tools
3、Info 754: local structure member 'date::day' (line 6, file shiyan1.c) not
referenced
shiyan1.c(6) : Info 830: Location cited in prior message
代码二:
1、while(1)
sum[1] = sum[1] + pt->scoreEnglish;
sum[2] = sum[2] + pt->scoreMath;
sum[3] = sum[3] + pt->scoreMusic;
}
for (i=0; i<4; i++)
{
average[i] = sum[i]/4;
printf(" %4.2f\n", *(average+i));
{
int year;
int month;
int day;
};
struct STUDENT
{
intstudentID;
charstudentName[10];
charstudentSex[4];
struct date timeOfEnter;
intscoreComputer;
intscoreEnglish;
}
void Delay(void)
{
long t;
for (t = 0; t < 500000000; t++)/*循环体为空语句的循环,起延时作用*/
{
;
}
}
int main(void)
{
CLOCK t;
t.hour=0;
t.minute=0;
t.second=0;
while(1)
{
if (t.minute==1) break;
相关文档
最新文档