PCLint选项详解 下载本文

内容发布更新时间 : 2024/11/15 12:22:08星期一 下面是文章的全部内容请认真阅读。

PCLint选项详解

PCLint选项详解

1

PCLint选项详解

目 录

1 错误信息禁止选项 2 变量类型大小选项 3 冗余信息选项 4 标志选项 5 格式输出选项 6 其它选项

7 编译器相关选项 8 各种使用说明

8.1 库模块文件的使用

8.2 汇编(非C、C++)文件的处理 8.3 强类型

8.4 PCLint的预处理符 8.5 选项的处理顺序 8.6 使告警最大化

9 附录:PCLint在Source Insight中的使用9.1 Source Insight的正规表达式

2

3 4

5 5 8 9

13 14 14 15 15 17 17 17 18 18

PCLint选项详解

以下为PC-lint for C/C++ (NT) Ver. 7.50v版本配置参数的详细解释及用法举例。 LINT选项可以放在注释中,例如:

/*lint option1 option2 ... optional commentary */ 选项可以有多行 //lint option1 option2 ... optional commentary

选项仅为一行

选项间要以空格分开,lint命令一定要小写,并且紧跟在/*或//后面,不能有空格。如果选项由类似于操作符和操作数的部分组成,例如-esym(534, printf, scanf, operator new),其中最后一个选项是operator new,那么在operator和new中间只能有一个空格。

选项还可以放在宏定义中,当宏被展开时选项才生效。例如: 告警

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

#define DIVZERO(x) /*lint -save -e54 */ ((x) /0) /*lint -restore */

允许除数为0而不

I. 错误信息禁止选项

说明: “-”

: 表示禁止输出相应的错误消息

“+” : 表示允许输出相应的错误消息 “#” : 允许使用通配符“?”和“*”

除了900级别(900-999)和1900(1900-1999)级别的告警消息缺省是关闭的外,其它的告警消息缺省均是打开的。

-e#

: 禁止输出告警号为#的消息

-e(#) : 对于下一个表达式禁止输出告警号为#的消息 !e# --e(#)

-eai : 整型数子类参数不一致,如:char/short vs. int

-ean : 名义上的参数不一致,如:字节数相同(都是32位)的int和long等 -eas : 参数大小相同,如:如果int和pointer字节数相同,那么如果f()的参数应该

是pointer的话,用f(3)整型数调用就会报错,设置此项可以关闭告警 : 在本行禁止输出告警号为#的消息

: 对当前的整个表达式禁止输出告警号为#的消息

-eau : 参数类型一致,但是符号类型不一致,如:unsigned int和int

以上四个选项主要用于非原型的旧风格的C语言程序。其中eas涵盖了ean和eau。

3

PCLint选项详解

-efile(#,)

对指定文件禁止输出告警号为#的消息

-efunc(#,) 对于函数Func,禁止输出告警号为#的消息 -elib(#) : 对于库头文件禁止输出告警号为#的消息 -elibsym(#) 于

想完全的关闭该告警,使其在头文件和源文件中均不出现,请使用本选项

序中使用了会导致告警#的变量等,在分析源程序时还是会告警的,因此

elib之处在于-elib(#)仅仅当分析头文件时不输出相应的告警,如果你在源: 对于所有库头文件中的符号禁止输出告警号为#的消息,此告警不同

-emacro(#,Symbol) 对于宏Symbol,当其展开时禁止输出告警号为#的消息

-emacro((#),Symbol)对于宏Symbol,当其展开时禁止输出告警号为#的消息,与上一个选项的

区别是它会先将宏加上一对括号再判断,如:#define DIVIDE( n , m ) n / m 那么它会在宏展开时将n / m看作( n / m )来处理。用处不是很大。

-epn : 名义上的指针不一致,如:对于指向字节数大小相同的变量的指针 -eps : 指针指向的类型不同,但大小字节数相同 -epu : 指针指向的类型仅仅符号不一致 -epp : 指针指向的类型不确定 -epuc -epnc

: 指针指向的字符串类型,其符号不一致 : 指针指向的字符串类型,仅仅名义上不同

-esym(#,Symbol) 对于指定的符号Symbol(可以是变量名、函数名等),禁止输出告警号为

#的消息,符号Symbol中可以使用通配符*和?。-e#的级别比较高,因此对 于-e714 +esym( 714,alpha ),后一个选项将不起作用

-etd() 对于TypeDiff类型,忽略不同地方对其的类型定义不同,用于旧风格C

-w : 设置告警级别(0,1,2,3,4),0表示不打印任何告警消息,用于先关闭所有告

警,然后打开部分告警

-wlib() 对库(文件)设置告警级别

4

PCLint选项详解

II.

变量类型大小选项

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

-sb# : 设置一个字节的比特数,缺省值为8 -sc# : sizeof(char),缺省值为1 -slc# : sizeof(long char),缺省值为2 -ss# : sizeof(short),缺省值为2 -si# : sizeof(int),缺省值为4 -sl# : sizeof(long),缺省值为4 -sll# : sizeof(long long),缺省值为8 -sf# : sizeof(float),缺省值为4 -sd# : sizeof(double),缺省值为8 -sld#

: sizeof(long double),缺省值为16

-sp# : sizeof(all pointers),缺省值为4和6 -spN# -spF#

: size of near ptrs,缺省值为4 : size of far ptrs ,缺省值为6

-spND# : size of near data pointer,缺省值为4 -spNP# : size of near prog pointer,缺省值为4 -spFD# : size of far data pointer,缺省值为6 -spFP# : size of far prog pointer,缺省值为6 -spD# -spP# -smp#

: size of data ptrs,缺省值为4和6

: size of program ptrs,缺省值为4和6,near为4,far为6 : size of all member ptrs,缺省值为4

-smpD# : size of member ptr (data),缺省值为4 -smpP# : size of member ptrs (prog),缺省值为4 -smpNP# : size of member ptr (Near Prog),缺省值为4 -smpFP# : size of member ptr (Far Prog),缺省值为4 -sw# : size of wide char,缺省值为2

III.

冗余信息选项

5