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(#,
程
要
想完全的关闭该告警,使其在头文件和源文件中均不出现,请使用本选项
序中使用了会导致告警#的变量等,在分析源程序时还是会告警的,因此
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(
-w
警,然后打开部分告警
-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