PCLINT 简明使用手册.docx
- 文档编号:23571453
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:17
- 大小:326.72KB
PCLINT 简明使用手册.docx
《PCLINT 简明使用手册.docx》由会员分享,可在线阅读,更多相关《PCLINT 简明使用手册.docx(17页珍藏版)》请在冰豆网上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PCLINT 简明使用手册 简明 使用手册