内容发布更新时间 : 2025/1/11 21:24:49星期一 下面是文章的全部内容请认真阅读。
PCLint选项详解
说明: “-”
: 表示仅输出到文件stdout
“+” : 表示同时输出到文件stdout和stderr
: {-+}v[oish#][mf
使用格式
冗余信息指的是LINT过程中产生的一些与编译过程有关的信息,而不是指真正的告警信息、错误信息等。是否生成这些信息可以通过-v和+v选项来决定。+v是生成这些信息,-v是关闭这些信息,这组选项中除+v外,其它所有选项都可以关闭+v选项。
以下选项可以出现0或多个: o i s h #
: 输出命令行和注释行中包含的配置 : 输出所使用的配置文件名(lnt文件) : 输出内存消耗数量
: 输出严格的类型层次图(输出结果类似于DOS命令tree的结果) : 附加文件ID,用于判断文件是否相同
以下选项一次只能出现一个: m f
: 输出模块名(缺省就是输出模块名) : 输出所有文件名(此选项包含m选项) : 每条消息打印为int行(此选项包含f选项)
IV. 标志选项
说明: “+” : 表示打开该开关(即设置标志为1)
“-”
: 表示关闭该开关(即设置标志为0)
“++” : 表示增1 “--” : 表示减1
标志选项用于打开或关闭对某类语法情况的处理。后面两个选项(++和--)用于你想在局部改变开关取值,而不影响全局设置的情况。
例如你可以这样使用:
/*lint ++flb */ int printf( ); /*lint --flb */ fab
: 支持缩略式结构,如:s.a.b如果不会引起歧义的话,可以缩写为s.b。很少
有编译器支持这种功能。缺省值为OFF
fai
: 指针参数是否初始化(不初始化将告警),缺省值为ON
6
PCLint选项详解
fan fas fba fbc fbo fbu fcd fce fcp
: 是否支持匿名联合,用于结构变量的说明,对C缺省值为OFF,C++为ON : 是否支持匿名结构,类似于fan,缺省值同上 : Bit位寻址能力(可访问性),缺省值为OFF : 是否支持布尔类型常量0b...,缺省值为OFF : 是否允许bool, true, false关键字,缺省值为ON : 是否强制比特位域为无符号数,缺省值为OFF : 是否区分cdecl说明符,缺省值为OFF : 遇到#error时是否继续运行,缺省值为OFF : 强制使用C++处理方式,缺省值为OFF
+fcp表示其后的模块文件将被强制作为C++程序对待处理。-fcp表示按照扩展名使用缺省的处理方式。例如:lin +fcp a1.c a2.c a3.c -fcp a4.c a5.cpp,其中a1.c、a2.c和a3.c将被作为C++程序进行Lint,而a4.c和a5.cpp按照缺省的方式(C和C++)进行Lint。
fct fcu fdc fdh fdi fdl fdr feb
: 生成标签(说明:结构名、枚举名就是一种标签 Tag),缺省值为OFF : char型总是作为unsigned,缺省值为OFF
: C++中是否区分char、unsigned char、signed char,缺省值为ON : 是否为头文件名附加'.h',缺省值为OFF
: 是否从头文件目录(而非当前目录)开始搜索头文件,缺省值为OFF : 是否指针之差为long型数,缺省值为OFF,即int型数
: 检查函数的返回模式(返回值是否被使用等,旧风格的C),缺省值为OFF : 是否允许枚举类型做位域,缺省值为ON
fem : 是否支持非紧靠式修饰符,如:pascal int f();和int pascal f();对于某些编译
器只支持后一种紧靠式说明,缺省值为OFF
ffb ffd ffn ffo fhd fhg
: For语句生成代码块(Block),缺省值为ON : 是否使float拓宽为等于double,缺省值为OFF : 输出文件的全路径名,缺省值为OFF
: 在生成每条告警后是否调用fflush()立即存入文件,缺省值为ON : 是否采用增强型类型定义层次判断,缺省值为ON
: 是使用图形字符(ON)还是ASCII字符(OFF)来显示类型层次图,缺省
值为ON
fhs
: 是否自动将基于typedef的强类型形成类型层次,缺省值为ON
7
PCLint选项详解
fhx fie fil fim fiq fis
: 强索引类型是否通过类型层次相关,缺省值为ON : 等同枚举类型和整型,缺省值为OFF : 是否对标号进行缩排检查,缺省值为OFF : 能否使用-i包含多个包含路径,缺省值为ON
: 忽略缺省的限定词,如Large模式下的far就是可忽略的,缺省值为OFF : 整型常量是否有符号,如对常量0xFFFF,此标志为On时解释为负数,
Off时解释为正数,缺省值为OFF
fkp flb flc flf fll fln
: 是否使用K&R预处理方式(非ANSI的C标准),缺省值为OFF : 是否强制将其作为库程序代码对待,缺省值为OFF : 是否允许使用long char类型变量,缺省值为OFF : 是否分析库函数定义(C++),缺省值为OFF : 是否允许使用long long int类型变量,缺省值为OFF : 是否不忽略#line命令,缺省值为ON
fmd : 是否允许多次重复定义,缺省值为OFF fna fnc fnt fod fol fpa fpc
: (C++)是否允许使用操作符new[],缺省值为ON : 是否允许使用嵌套注释,缺省值为OFF
: (C++)class类中是否允许嵌套使用struct,union等,缺省值为ON : 生成Lob文件时是否输出所有对象声明用于模块间检查,缺省值为OFF : 生成Lob文件时是否输出所有库中对象,缺省值为OFF : 退出前是否暂停,缺省值为OFF
: 指针强制类型转换后是否保留左值特性,缺省值为OFF
例如:使int指针pi指向下一个字节的地址,标准用法是( * ( char ** ) &pi ) ++;一种普遍的简化方法是(( char * ) pi ) ++;但是后面一种用法对于标准C来说强制类型转化使pi失去了左值特性,因此无法对其进行++操作,如果你的编译器支持后一种写法,请将本开关置为ON。
fpm : 是否抑止“缺失精度”告警,缺省值为OFF fpn
: 是否假定所有指针均有可能为NULL,因此如果使用指针前不判断是否为
NULL的话就会告警,缺省值为OFF
fps
: 宏参数是否能在字符串内进行替换,用于非ANSI程序,对于ANSI标准有
#连字符可以完成同样功能,缺省值为OFF
8
PCLint选项详解
frb fsa fsc fsh fsu ftf ftr ful fva
: 是否自动为fopen调用增加参数\,缺省值为OFF : 是否允许结构赋值,缺省值为ON
: 是否将字符串作为const char *类型,缺省值为OFF : 是否使用共享式读文件打开,缺省值为OFF : 是否将字符串作为unsigned类型,缺省值为OFF : 是否处理未加工的模板函数,缺省值为OFF : 是否将文件名截断为8.3格式,缺省值为OFF : 是否支持unsigned long类型,缺省值为ON
: 是否将函数当作可变长参数函数处理,缺省值为OFF,
此参数为ON时表示不对该函数进行参数检查,这对于printf(),fprintf()等函数可以抑止参数告警(如515、516告警)
fvo fvr
: 是否支持void类型,缺省值为ON
: 返回方式是否可变(如不使用返回值等),缺省值为OFF
fwc : 是否将wchar_t作为标准类型,缺省值为OFF
fwu : 将wchar_t当作unsigned类型,缺省值为OFF,此选项设为ON将导致+fwc fxa
: 严格的数组类型检查,即对于数组参数只能传类型相同的数组实参,缺省
值为OFF
fxc fxf fxs
: 严格的字符类型检查,即对于char不能转化为int去匹配,缺省值为OFF : 严格的float类型检查,即对于float不能转化为double去匹配,缺省值为OFF : 严格的short类型检查,即对于short不能转化为int去匹配,缺省值为OFF
以上四个选项只用于非原型类的旧风格函数。 fzl fzu
: 定义sizeof()返回值为long,缺省值为OFF : 定义sizeof()返回值为unsigned,缺省值为ON
V. 输出格式选项
1.控制消息高度,使用格式为:-h[abfFrsm/
: 为每条消息的位置指示符,如果
果
: 表示将位置指示符放在源程序中错误行的前一行(
9
PCLint选项详解
b f F r s
: 表示将位置指示符放在源程序中错误行的下一行(
: 消息中总是包含文件信息,对于无法定位的行号使用MaxLine+1 : 对于针对源文件中同一行的多个错误消息,每个都重复显示行号 : 消息间空一行显示
m/
2.控制消息宽度,使用格式为:-width(
%f
: 文件名
: 对于源文件中由宏使用产生的错误,不显示该宏的定义
%m : 告警消息文本 %n %t %l %c
: 告警号
: 消息类型(Error,Warning等) : 行号 : 列号
%C : 列号+1
%(...%) : 如果错误发生在一个文件内,那么包含...信息 \\n \\t \\s \\a
: 回车 : Tab键 : 空格键
: 告警(ASCII 7) : 引号(“”) : 反斜线(' \\ ')
\\q \\\\
VI. 其它选项
-A
: 严格使用ANSI C/C++处理方式
-/+b : 抑止/重定向标语行(包括PCLint的版本号和Copyright信息)到stdout,此
选项必须放在命令行而不能放在配置文件中
10