PCLINT 简明使用手册.docx

上传人:b****0 文档编号:9357015 上传时间:2023-05-18 格式:DOCX 页数:17 大小:326.72KB
下载 相关 举报
PCLINT 简明使用手册.docx_第1页
第1页 / 共17页
PCLINT 简明使用手册.docx_第2页
第2页 / 共17页
PCLINT 简明使用手册.docx_第3页
第3页 / 共17页
PCLINT 简明使用手册.docx_第4页
第4页 / 共17页
PCLINT 简明使用手册.docx_第5页
第5页 / 共17页
PCLINT 简明使用手册.docx_第6页
第6页 / 共17页
PCLINT 简明使用手册.docx_第7页
第7页 / 共17页
PCLINT 简明使用手册.docx_第8页
第8页 / 共17页
PCLINT 简明使用手册.docx_第9页
第9页 / 共17页
PCLINT 简明使用手册.docx_第10页
第10页 / 共17页
PCLINT 简明使用手册.docx_第11页
第11页 / 共17页
PCLINT 简明使用手册.docx_第12页
第12页 / 共17页
PCLINT 简明使用手册.docx_第13页
第13页 / 共17页
PCLINT 简明使用手册.docx_第14页
第14页 / 共17页
PCLINT 简明使用手册.docx_第15页
第15页 / 共17页
PCLINT 简明使用手册.docx_第16页
第16页 / 共17页
PCLINT 简明使用手册.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

PCLINT 简明使用手册.docx

《PCLINT 简明使用手册.docx》由会员分享,可在线阅读,更多相关《PCLINT 简明使用手册.docx(17页珍藏版)》请在冰点文库上搜索。

PCLINT 简明使用手册.docx

PCLINT简明使用手册

 

PC-LINT简明使用手册

版本:

1.0

 

(版权所有,翻版必究)

 

1前言

PC-Lint是由GimpelSoftware出品的,一个历史悠久的,功能异常强劲的C/C++代码静态代码检测工具。

随着C语言的诞生它也随之诞生了,经过30来年的发展,它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。

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

PC-Lint不但能够监测出许多语法逻辑上的隐患,它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余的代码,等等。

而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点,这时候,PC-Lint的强劲功能可以很好地提高软件的质量。

2软件版本

当前使用的版本为PC-lintforC/C++Version8.00e。

3功能

3.1PC-Lint是一种静态代码检测工具,可以说,PC-LINT是一种更加严格的编译器,不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误。

3.2PC-Lint不但可以检测单个文件,也可以从整个项目的角度来检测问题,因为C语言编译器固有的单个编译,这些问题在编译器环境下很难被检测,而PC-Lint在检查当前文件的同时还会检查所有与之相关的文件,可想而知,它会对我们有很大的帮助。

3.3PC-Lint支持几乎所有流行的编辑环境和编译器,比如BorlandC++从1.x到5.x各个版本、BorlandC++Build、GCC、VC,VC.net、watcomC/C++、Sourceinsight、intelC/C++等等,也支持16/32/64的平台环境。

3.4支持ScottMeyes的名著(EffectiveC++/MoreEffectiveC++)中说描述的各种提高效率和防止错误的方法。

4安装与配置

4.1安装

直接复制文件到任意目录直接使用,本手册默认安装在d:

\pclint。

文件及目录结构如下列:

lint-nt.exePC-Lint执行程序.

config.exePC-Lint配置程序.

readme.txtReadme文件.

pc-lint.pdfPDF格式的使用参考手册.

pr.exe方便的打印程序.

msg.txtASCII格式的告警描述.

unwise.exe卸载程序.

install.log安装日志.

Lnt\子目录...

co-....lnt特定编译器的编译选项文件.

co.lnt通用编译器的编译选项文件.

sl-....c特定非ANSI编译器的标准库模块.

sl.c通用非ANSI编译器的标准库模块.

env-....lnt阐述如何将PC-lint与对应的编辑环境结合起来。

lib-....lnt特殊有‘挑战’库的选项文件。

库类型的列表,包括标准C/C++库,MFC库,OWL库等等。

au-....lnt作者推荐检查的选项文件。

C/C++编程提出过重要建议的作者,选择某作者后,他提出的编程建议方面的选项将被打开。

4.2配置

4.2.1将pclint安装路径加入到环境变量的用户变量或系统变量中。

这一步不是必须,但是有助与你方便使用pclint。

4.2.2根据编译环境和编码规则,修改相应lnt目录中对应的.lnt文件,.lnt文件的文件名可以任意。

具体参照使用说明。

5使用说明

5.1命令行下使用pclint

5.1.1编译环境TC/TC++。

软件安装在d:

\TC++

5.1.2软件配置,使用一下几个配置文件,配置文件放在d:

\pclint\lnt目录中。

std_tc.lnt//基本配置。

co_tc.lnt//编译选项(不需要修改)

lib-w32.lnt//编译时使用的库。

Windows系统使用lib-w32.lnt(不需要修改)。

options.lnt//自定义编译选项,用于开关某些代码规则。

env_tc.lnt//定义编译信息输出格式

配置std_tc.lnt,内容如下

//contentsofstd_tc.lnt

//编译选项

d:

\pclint\lnt\co-tc.lnt

//库

d:

\pclint\lnt\lib-w32.lnt

//自定义编译选项,同时指定整型数据占4个字节

d:

\pclint\lnt\options.lnt-si4-sp4

//头文件包含路径

-i"D:

\TC++\INCLUDE"

//end

配置options.lnt,内容如下

//contentsofoptions.lnt

//内容留空,指没有自定义编译选项

//-e783

-e701-e703//shiftingintleftisOK

-e502-e713-e737-eau//don'treportonsigned/unsignedmismatches

配置env_tc.lnt,内容如下

//contentsofenv_tc.lnt

/*

env-tc.lnt

lint-nt-u-id:

\pclint\lntstd-tcenv-tc%f

*/

-"format=%f(line%l)[%t%n]:

%m"

-hfa_3

//编译选项

测试例程如下。

/*test.c*/

#include

voidtest(void)

{

intflag;

flag=1/flag;

printf("Hello");

}/*

5.1.3检测

打开cmd.exe。

在命令行下输入如下指令:

d:

\pclint\lint-nt-ud:

\pclint\lnt\std_tc.lntd:

\pclint\lnt\env-tc.lnttest.c,结果如下:

PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985-2001

---Module:

D:

\pclint\te.c

_

flag=1/flag;

D:

\pclint\te.c(line7)[Warning530]:

Symbol'flag'(line5)notinitialized

D:

\pclint\te.c(line5)[Info830]:

Locationcitedinpriormessage

_

}

D:

\pclint\te.c(line9)[Info783]:

Linedoesnotendwithnew-line

pclint提示flag没有初始化,并且文件没有已空行结束。

如果将options.lnt中使用-e783,则结果如下:

PC-lintforC/C++(NT)Ver.8.00e,CopyrightGimpelSoftware1985-2001

---Module:

D:

\pclint\te.c

_

flag=1/flag;

D:

\pclint\te.c(line7)[Warning530]:

Symbol'flag'(line5)notinitialized

D:

\pclint\te.c(line5)[Info830]:

Locationcitedinpriormessage

空行结束的信息被忽略。

5.2Tornado下使用pclint

5.2.1编译环境vxworks。

软件安装在D:

\Tornado2.2

5.2.2软件配置,使用一下几个配置文件,配置文件放在d:

\pclint\lnt目录中。

std_vxw.lnt//基本配置。

co_vxw.lnt//编译选项(不需要修改)

lib-vxw.lnt//编译时使用的库。

vxworks系统使用lib-vxw.lnt(内容不需要修改)。

options.lnt//自定义编译选项,用于开关某些代码规则。

env_vxw.lnt//定义编译信息输出格式

配置std_vxw.lnt,内容如下

//contentsofstd_vxw.lnt

//编译选项

d:

\pclint\lnt\co-vxw.lnt

//库

d:

\pclint\lnt\lib-vxw.lnt

//自定义编译选项,同时指定整型数据占4个字节

d:

\pclint\lnt\options.lnt-si4-sp4

//头文件包含路径

-i"D:

\Tornado2.2\host\x86-win32\i386-pc-mingw32\sys-include;D:

\Tornado2.2\target\h;D:

\Tornado2.2\target\h\types\vxTypesBase.h;D:

\Tornado2.2\target\config\SXPTU_F8R16"

//end

配置options.lnt,内容如下

//contentsofoptions.lnt

//内容留空,指没有自定义编译选项

//-e783

-e701-e703//shiftingintleftisOK

-e502-e713-e737-eau//don'treportonsigned/unsignedmismatches

配置env_tc.lnt,内容如下

//contentsofenv_vxw.lnt

/*

env-tc.lnt

lint-nt-u-id:

\pclint\lntstd-tcenv-tc%f

*/

-"format=%f(line%l)[%t%n]:

%m"

-hfa_3

//编译选项

测试例程如下。

/*test.c*/

#include

voidtest(void)

{

intflag;

flag=1/flag;

printf("Hello");

}/*

5.2.3配置自定义菜单

打开tornado

选择菜单Tools->Customize

添加一项自定义菜单项:

●单击[Add]

●在MenuText中输入菜单名称PC-LINT

●在ToolCommand中输入执行的命令及参数:

d:

\pclint\lint-nt-ud:

\pclint\lnt\std_vxw.lntd:

\pclint\lnt\env-vxw.lnt$filename

●在Working中选择工程目录

●选中RedirecttoChildWindow(用于输出编译信息)

●OK保存自定义菜单

5.2.4检测

打开要检测的文件test.c,选择Tools->PC-LINT,输出结果同命令行。

5.3SourceInsight下使用pclint

5.3.1编译环境vxworks。

软件安装在D:

\Tornado2.2

5.3.2软件配置,使用一下几个配置文件,配置文件放在d:

\pclint\lnt目录中。

std_vxw.lnt//基本配置。

co_vxw.lnt//编译选项(不需要修改)

lib-vxw.lnt//编译时使用的库。

vxworks系统使用lib-vxw.lnt(内容不需要修改)。

options.lnt//自定义编译选项,用于开关某些代码规则。

env_vxw.lnt//定义编译信息输出格式

配置内容同Tornado。

5.3.3配置自定义菜单

打开SourceInsight

选择Options->CustomCommands

添加一项自定义菜单项:

●单击[Add]

●如图输入相关信息

●在Run中输入执行的命令及参数:

d:

\pclint\lint-nt-ud:

\pclint\lnt\std_vxw.lntd:

\pclint\lnt\env-vxw.lnt%f

●选择Menu配置菜单

在Menu处选择父菜单,Command处选择需要添加的菜单,单击Insert添加PC-LINTD到Options菜单中。

●OK保存自定义菜单

5.3.4检测

打开要检测的文件test.c,选择Options->PC-LINT,输出结果如下:

可以在代码与信息之间切换。

5.4UltraEdit下使用pclint

5.4.1编译环境vxworks。

软件安装在D:

\Tornado2.2

5.4.2软件配置,使用一下几个配置文件,配置文件放在d:

\pclint\lnt目录中。

std_vxw.lnt//基本配置。

co_vxw.lnt//编译选项(不需要修改)

lib-vxw.lnt//编译时使用的库。

vxworks系统使用lib-vxw.lnt(内容不需要修改)。

options.lnt//自定义编译选项,用于开关某些代码规则。

env_vxw.lnt//定义编译信息输出格式

配置内容同Tornado。

5.4.3配置自定义菜单

打开UltraEdit

选择高级->工具栏配置

添加一项自定义菜单项:

●单击[插入]

●如图输入相关信息

●在命令行中输入执行的命令及参数:

d:

\pclint\lint-nt-ud:

\pclint\lnt\std_vxw.lntd:

\pclint\lnt\env-vxw.lnt%f

●[确定]保存自定义菜单

5.4.4检测

打开要检测的文件test.c,选择高级->PC-LINT即可。

5.5VC++6下使用pclint

5.6其他说明

5.6.1使用名著

可在std中添加相关信息。

如使用ScottMeyers推荐的编程建议可以修改stdXX.lnt如下:

//contentsofstd_tc.lnt

//编译选项

d:

\pclint\lnt\co-tc.lnt

//库

d:

\pclint\lnt\lib-w32.lnt

//自定义编译选项,同时指定整型数据占4个字节

d:

\pclint\lnt\options.lnt-si4-sp4

//名著选项

d:

\pclint\lnt\au-sm.lnt

//头文件包含路径

-i"D:

\TC++\INCLUDE"

//end

5.6.2关于PC-LINT选项

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

●错误信息禁止选项

该类选项是用于禁止生成某类错误信息的选项,最常用的是-e和+e,-e是禁止生成某类错误信息,+e是恢复生成某类错误信息。

运行pclint目录下的msg.exe可以得到msg.txt文件,这个长达5000行的文件包含了所有的错误信息号和解释。

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

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

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

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

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

-emacro()可以屏蔽对于特定宏的某些警告信息。

●变量类型大小选项

不同的目标机、编译系统变量类型的的大小(如短整形变量、整形变量等)会有所不同,该类选项用于为目标机设置变量类型的大小。

由于默认的设置与大部分的编译器是匹配的,这些专门的设置通常情况下是不需要的,只在特别的目标机结构中才用。

例如一个M68000目标机,它的int类型和指针类型通常是32bit的,这时你应该使用选项:

-si4-sp4。

这些尺寸参数的当前值可以通过help屏来获得,例如可以输入以下命令行:

lin-si4-sp4?

●冗长信息选项

冗长信息指的是LINT过程中产生的一些与编译过程有关的信息,而不是真正的告警信息、错误信息等。

是否生成这些信息可以通过-v和+v选项来决定。

+v是生成这些信息,-v是关闭这些信息,这组选项中除+v外,其它所有选项都可以关闭+v选项。

●标记选项

以+f、++f、-f和--f开头的选项是标记选项。

他们的逻辑含义分别如下:

+f...:

通过把标志置为1而把它置为ON

-f...:

通过把标志置为0而把它置为OFF

++f...:

标志增1

--f...:

标志减1

后面两个用于你想在局部把一个标志置为ON的情况,而不影响全局设置。

例如你可以这样使用:

/*lint++flb*/

intprintf();

/*lint--flb*/

标记选项的种类很多,基本含义是用于打开或关闭某类语法情况使用,例如允许使用缩写结构体名称,允许使用无名联合体,把所有模块当作C++编译等。

●消息显示选项

消息显示选项用于定义消息输出格式。

主要有消息高度选项、消息宽度选项、消息格式选项等。

●其它选项

其它选项中的种类很多,各种类间差异很大,《ReferenceManualforPC-lint/FlexeLint》一书中MESSAGES章节对每种选项的详细说明。

6其他相关

6.1在Tornado中集成SourceInsight

首先我们在Tornado菜单中的Tools->Options中选择ExternalEditor标签页,在command中输入下面的命令(注意修改相关路径):

D:

\ProgramFiles\SourceInsight3\Insight3.exe-i+$lineno$filename

-i表示只允许打开一个SourceInsight程序。

如果勾选了下面的FileMenu复选框,表示从菜单中选择新建一个文件的时候会直接调用SourceInsight。

如果选择了Project表示从工程中双击文件会直接调用SourceInsight。

如果选择了Buildoutwind则在编译过程的输出窗口双击出现错误的行会直接跳到SourceInsight中相应的行(注意要实现这个功能,参数+$lineno是必须的)。

同时最好在SourceInsight中也作一下设置,否则如果在Tornado中对文件进行修改,SourceInsight会提示文在外部被修改了,是否要重新装入,比较烦人,所以我们可以把这个提示去掉,方法是在SourceInsight菜单中选择Option->Preference中的File标签页,从上向下数去掉第三个复选框即可。

7参考文档

7.1《ReferenceManualforPC-lint/FlexeLint》GimpelSoftware

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2