PClint配置及使用说明.docx

上传人:b****6 文档编号:7513396 上传时间:2023-01-24 格式:DOCX 页数:11 大小:369.69KB
下载 相关 举报
PClint配置及使用说明.docx_第1页
第1页 / 共11页
PClint配置及使用说明.docx_第2页
第2页 / 共11页
PClint配置及使用说明.docx_第3页
第3页 / 共11页
PClint配置及使用说明.docx_第4页
第4页 / 共11页
PClint配置及使用说明.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

PClint配置及使用说明.docx

《PClint配置及使用说明.docx》由会员分享,可在线阅读,更多相关《PClint配置及使用说明.docx(11页珍藏版)》请在冰豆网上搜索。

PClint配置及使用说明.docx

PClint配置及使用说明

 

PC-lint配置及使用说明(总10页)

1.1简介

如果要给lint工具下一个形象点的定义,那就是:

一种更加严格的编译器。

它不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误。

请看下面的例子:

1:

char*report(intm,intn,char*p)

2:

{

3:

int?

result;

4:

char*temp;

5:

long?

nm;

6:

inti,k,kk;

7:

charname[11]="JoeJakeson";

8:

nm=n*m;

9:

temp=p=="""null":

p;

10:

for(i=0;i

11:

{

12:

k++;

13:

kk=i;

14:

}

15:

if(k==1)result=nm;

16:

else?

if(kk>0)result=1;

17:

else?

if(kk<0)result=-1;

18:

if(m==result)return(temp);

19:

else?

return(name);

20:

}

上面的代码用一般的编译器编译是一段有效的代码,但是用PC-Lint编译就会有几个告警。

首先第7行向name数组赋值时丢掉了nul字符,第8行的乘法精度会失准,第9行的比较有问题,第12行的变量k没有初始化,第13行的kk可能没有被初始化,第18行的result也有可能没有被初始化,第19行返回的是一个局部对象的地址。

这段代码在大部分编译器下是可以顺利编译通过的,继续查找其中的错误就要靠人工调试程序,如果程序很大,这将是一项烦琐的工作,没有人可以保证能找出所有的这类问题,但PC-Lint只通过一次简单的编译就可做到,显然为我们节省了大量的开发时间。

由于我们现有的PC-Lint不是安装版,解压后直接使用,因此省略了安装步骤,而直接进入配置阶段。

此外,PC-Lint配置选项比较多,本文档不对其一一进行说明,只介绍一种通用的配置方法。

1.2文件部署

将提供的压缩文件包解压至C:

\lint目录,然后在此目录下创建一个用于保存自定义配置文件的config子目录。

点击运行进入配置过程。

1.3选择配置目录

由于是第一次使用PC-Lint,选择配置目录时如下图所示选取前面刚刚创建的config目录,并选择“Createanew”创建一个新的。

1.4选择编译器

在该页面的编译器列表中提供了50多种流行的C/C++编译器,如果表中没有自己使用的编译器,可选择通用编译器“Generic?

Compilers”。

1.5选择内存模型

该页面会让你选择一个内存模型,可以根据自己程序区和数据区的实际大小选择一个恰当的内存模型。

根据我们所使用的CPU类型,需要选择“32-bitFlatModule”,内存模型的选项会体现在文件中。

1.6选择库类型

选完内存模型后,会看到一个库类型列表,根据实际编译的需要可以在这里选择一个或多个编译时使用的库,在此我们选择“Windows32-bit”。

这个选项会体现在文件中。

1.7选择作者

接着是让你选择为使用C++编程提出过重要建议的作者,选择的某作者后,他提出的编程建议方面的选项将被打开。

与作者选择有关的选项会体现在文件中。

1.8设置包含目录

下一步是设置包含文件目录。

共四个选项,第一个是直接使用现有系统环境变量INCLUDE作为包含文件目录;第二个是让我们立即设置INCLUDE系统环境变量;第三个是使用-i选项,-i选项体现在文件中,每个目录前以-I引导,目录间以空格分隔,例如可设成“-IC:

MRIMCC68K-

ID:

LAPSRCINC”,如果选择使用-I选项,安装程序会接着让你输入包含文件所在的目录;第四个是跳过该页面。

我们将在后面的具体使用中设置包含文件搜索路径,在此选择“INCLUDEisalreadyusedforthispurpose”。

此时,安装程序会提示和文件已经在C:

\lint\config目录中被创建。

确认后会询问是否选择配置更多的编译环境,此处选择否。

1.9生成选项文件

接下来会询问是否产生一个用于结果消息过滤的选项文件,我们暂时跳过该步骤,先生成一个空的文件,等以后在实际应用时加入必要的选项。

1.10集成到开发环境

接着是选择工作环境。

PC-Lint提供了集成在多种开发环境中工作的功能,例如可集成在VC7、CodeWarrior或Source?

Insight中。

由于我们的源文件不是安装版本,假如在这里选择后会提示出错,因此在该页面中不进行任何选择。

1.11生成批处理文件

安装程序最终会在C:

\lint\config目录下生成一个文件,该文件是运行PC-Lint的批处理文件,为了使该文件能在任何路径下运行,安装程序提供了两种方法供你选择。

第一种方法是让你选择把拷贝到任何一个PATH目录下,在安装结束后会把自动拷贝到你指定的目录。

第二种方法是生成一个文件,在每次使用PC-Lint前先运行它来设置路径,或者把文件的内容拷贝到文件中。

此处选择“CopytooneofmyPATHdirectories”然后将其拷贝到即将进行lint检查的源文件目录下。

1.12用命令行方式进行lint

1.12.1编辑批处理文件

按照上一章介绍的配置过程在C:

\TestCpuUsage目录生成的文件内容如下:

"C:

\lint\Lint-nt"+v-i"C:

\lint\config"-os%1%2%3%4%5%6%7%8%9

type|more

@echooff

echo---

echooutputplacedin

由于此时还没有设置头文件搜索路径,因此还不能进行lint检查。

在-i选项后添加所有可能用到的路径,甚至需要包含一些标准库中的路径。

总之,应该在-i""中包含所有用到的头文件包含路径,否则会提示找不到相关文件。

编辑后的文件内容如下:

"C:

\lint\Lint-nt"+v-DPLUS;__UREG_DEF_H;_M_IA64;SIMULATE-i"c:

\lint\config;TestCpuUsage/dspi;TestCpuUsage/include;"-os%1%2%3%4%5%6%7%8%9

type|more

@echooff

echo---

echooutputplacedin

1.12.2生成待检查的源文件集合

在控制台模式,进入TestCpuUsage工程根目录执行以下命令

$\TestCpuUsage>dir/s/b*.cpp*.c>

将该工程中包括子目录中的所有扩展名为*.cpp和*.c的源文件列表输出到中作为后续检查的基准。

1.12.3进行lint检查

做好以上准备工作后,执行以下命令

$Project$\TestCpuUsage>lin

就可以象命令行编译那样进行lint检查了,输出的结果信息保存在文件中。

1.13用开发环境进行lint

也可以使用开发环境来执行lint操作,一般开发环境都支持运行可执行文件,但不一定支持运行批处理文件。

如果我们在先前的配置过程中选定了使用某个开发环境,安装程序会在你安装的目录下生成一个的文件,例如选择了Source?

Insight就会有一个文件。

用编辑器打开该文件,在该文件开始的注释中说明了如何将PC-Lint功能集成在开发环境中,此处不进行这方面的详细介绍。

1.14lint选项

lint的选项很多共有300多种,大体可分为以下几类:

错误信息禁止选项

-e#禁止生成某类错误信息;

+e#恢复生成某类错误信息;

-w#对于所有大于级别的告警信息都不显示;

-wlib()对于所有大于级别的关于库函数数的告警信息都不显示。

我们可以用-wlib(0)来屏蔽所有的库函数的告警信息,-wlib

(1)只显示库函数中的句法错误。

-esym(#,)可以屏蔽对于特定符号的某告警信息。

注1:

错误信息禁止选项可以在命令行直接使用,也可以加在前面生成的批处理文件中,当在命令行使用时,不能放在被检测文件的后面,而应该插入到lint命令与被检测文件名的中间(如lin–w2);

注2:

执行lint目录下的可以输出文件,这个长达5000行的文件包含了所有的错误信息号和相应的解释。

错误信息分类

大部分的错误信息都有一个对应的错误编号。

在中可以得到导致错误的详细信息,C++中的错误信息号与C中的相应错误信息号相差1000。

总结如下:

C

C++

WarningLevel

说明

SyntaxErrors

1-199

1001-1199

1

语法错误

InternalErrors

200-299

0

内在的错误,不会发生

FatalErrors

300-399

0

致命的错误,将会导致超过某种限制

Warnings

400-699

1400-1699

2

指明程序中很可能出错

Informational

700-899

1700-1899

3

指明程序中可能出错,也可能是个人风格的合法编程实践

ElectiveNotes

900-999

1900-1999

4

不会自动输出,可以检查列表确定是否需关注

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1