资源预览内容
第1页 / 共17页
第2页 / 共17页
第3页 / 共17页
第4页 / 共17页
第5页 / 共17页
第6页 / 共17页
第7页 / 共17页
第8页 / 共17页
第9页 / 共17页
第10页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
为了适应公司新战略的发展,保障停车场安保新项目的正常、顺利开展,特制定安保从业人员的业务技能及个人素质的培训计划pclint告警消除报告PCLint选项详解目录1错误信息禁止选项2变量类型大小选项3冗余信息选项4标志选项5格式输出选项6其它选项7编译器相关选项8各种使用说明库模块文件的使用汇编文件的处理强类型PCLint的预处理符选项的处理顺序使告警最大化9附录:PCLint在SourceInsight中的使用SourceInsight的正规表达式345589以下为PC-lintforC/C+(NT)Ver.版本配置参数的详细解释及用法举例。LINT选项可以放在注释中,例如:/*lintoption1option2.optionalcommentary*/选项可以有多行/lintoption1option2.optionalcommentary选项仅为一行选项间要以空格分开,lint命令一定要小写,并且紧跟在/*或/后面,不能有空格。如果选项由类似于操作符和操作数的部分组成,例如-esym(534,printf,scanf,operatornew),其中最后一个选项是operatornew,那么在operator和new中间只能有一个空格。选项还可以放在宏定义中,当宏被展开时选项才生效。例如:告警LINT的选项很多共有300多种,大体可分为以下几类:#defineDIVZERO(x)/*lint-save-e54*/(x)/0)/*lint-restore*/允许除数为0而不I.错误信息禁止选项说明:“-”:表示禁止输出相应的错误消息“+”:表示允许输出相应的错误消息“#”:允许使用通配符“?”和“*”除了900级别和1900级别的告警消息缺省是关闭的外,其它的告警消息缺省均是打开的。-e#:禁止输出告警号为#的消息-e(#):对于下一个表达式禁止输出告警号为#的消息!e#-e(#)-eai:整型数子类参数不一致,如:char/shortvs.int-ean:名义上的参数不一致,如:字节数相同的int和long等-eas:参数大小相同,如:如果int和pointer字节数相同,那么如果f()的参数应该是pointer的话,用f(3)整型数调用就会报错,设置此项可以关闭告警:在本行禁止输出告警号为#的消息:对当前的整个表达式禁止输出告警号为#的消息-eau:参数类型一致,但是符号类型不一致,如:unsignedint和int以上四个选项主要用于非原型的旧风格的C语言程序。其中eas涵盖了ean和eau。-efile(#,)对指定文件禁止输出告警号为#的消息-efunc(#,)对于函数Func,禁止输出告警号为#的消息-elib(#):对于库头文件禁止输出告警号为#的消息-elibsym(#)于程要想完全的关闭该告警,使其在头文件和源文件中均不出现,请使用本选项序中使用了会导致告警#的变量等,在分析源程序时还是会告警的,因此elib之处在于-elib(#)仅仅当分析头文件时不输出相应的告警,如果你在源:对于所有库头文件中的符号禁止输出告警号为#的消息,此告警不同-emacro(#,Symbol)对于宏Symbol,当其展开时禁止输出告警号为#的消息-emacro(#),Symbol)对于宏Symbol,当其展开时禁止输出告警号为#的消息,与上一个选项的区别是它会先将宏加上一对括号再判断,如:#defineDIVIDE(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()对库设置告警级别II.变量类型大小选项说明:不同的目标机、编译系统变量类型的的大小会有所不同,该类选项用于为目标机设置变量类型的大小。-sb#:设置一个字节的比特数,缺省值为8-sc#:sizeof(char),缺省值为1-slc#:sizeof(longchar),缺省值为2-ss#:sizeof(short),缺省值为2-si#:sizeof(int),缺省值为4-sl#:sizeof(long),缺省值为4-sll#:sizeof(longlong),缺省值为8-sf#:sizeof(float),缺省值为4-sd#:sizeof(double),缺省值为8-sld#:sizeof(longdouble),缺省值为16-sp#:sizeof(allpointers),缺省值为4和6-spN#-spF#:sizeofnearptrs,缺省值为4:sizeoffarptrs,缺省值为6-spND#:sizeofneardatapointer,缺省值为4-spNP#:sizeofnearprogpointer,缺省值为4-spFD#:sizeoffardatapointer,缺省值为6-spFP#:sizeoffarprogpointer,缺省值为6-spD#-spP#-smp#:sizeofdataptrs,缺省值为4和6:sizeofprogramptrs,缺省值为4和6,near为4,far为6:sizeofallmemberptrs,缺省值为4-smpD#:sizeofmemberptr(data),缺省值为4-smpP#:sizeofmemberptrs(prog),缺省值为4-smpNP#:sizeofmemberptr(NearProg),缺省值为4-smpFP#:sizeofmemberptr(FarProg),缺省值为4-sw#:sizeofwidechar,缺省值为2III.冗余信息选项PC-LINT中的各种错误信息都有一个相关的错误号,其中各个错误号的分配区间如下:表1:PC-LINT错误号区间分配注:其中200-299号告警为PC-LINT的内部错误,一般不会发生,C语法错误1未关闭注释(位置)2未关闭的引号3#else没有一个#if4太多的#if嵌套层次文件结束的时候,仍然有一个未关闭的注释存在,打开的这个注释位置将被显示出来。在行尾的时候,仍然存在一个同行的未关闭的引号。在一个区域内有一个#else,但是没有一个#if,#ifdef或#ifndef。检测出一个内部的限制,有关#if的嵌套层次(包括#ifdef和#ifndef)。5太多的#endif6堆栈溢出出现一个#endif,但不是#if或#ifdef或#ifndef.的。一个内置的不可展开的堆栈被过分扩展。可能是太多的嵌套的#if语句、#includes语句(包括所有的递归的#include语句),static块(有限制的括号)或#define置换。7不能打开include的文件:FileNameFileName是不能打开的include文件的名字。,可以见flagfdi(见章节标志选项),选项-i.(见章节其它选项)和章节INCLUDE环境变量。8未关闭的#if(位置)9太多的#else在#if(位置)一个#if(或#ifdef或#ifndef)没有遇到相应的#endif。位置是#if.的位置一个给定的#if包含一个#else,然后轮流流被紧跟另一个#else或一个#elif。错误消息给出#if语句条件包含异常的行号10期望的字符串字符串是期望的记号,期望的记号不能被发现。当一定的保留字没有被认出时,给出这条消息,例如:int_interruptf();将收到一个Expecting;messageatthef,因为它认为你想声明_interrupt。改正的方法是建立一个新的保留字使用+rw(_interrupt)。同样,保证使用正确的编译器选项文件。见章节奇怪的编译器.11超出大小范围12需要或filename13不好的类型类型形容词例如long、unsigned等等。不能应用到紧跟的类型。14符号Symbol以前定义过(位置)符号被定义第二次。提供出以前定义的位置,如果这是一个暂定的定义,这个消息可以用+fmdflag抑制。.15符号Symbol重新被声明(TypeDiff)(位置)符号被以前声明过或在其它模块定义过(其它位置)的类型和在当前位置的声明的类型不同。参数TypeDiffr提供了类型怎么不同的进一步信息(见章节17.信息).16不认识的名字一个#指示符后没有跟着一个可认识的单词。如果这不是错误使用+ppw选项(章节其它选项).17未被承认的名称Anon-parameterisbeingdeclaredwhereonlyparametersshouldbe.18符号重新声明(TypeDiff)和此位置冲突一个符号被重新声明。参数TypeDiff提供类型不同的进一步信息(见Chapter17.信息)。位置是先前定义的位置。19无效的声明一个类型独自的出现而没有相关的变量,类型不是struct、union和enum.一个双分号能导致这个:intx;20非法使用=一个函数声明后紧跟一个符号.21期望对于不确定大小的数组的初始化必须以一个左括号开始。22非法的操作符发现一个一元操作符紧跟一个操作数,这个操作符不是一个post操作符。23期望“:”-碰到一个?操作符,o但是没有紧跟一个期望的:操作符。24期望一个表达式,但是得到一个字符串发现一个在一个表达式开始的操作符,但是它不是一个一元操作符。25非法的常量在一个字符常量中遇到太多的字符。26期望一个表达式,但是得到一个字符串27非法的字符源代码中发现非法的字符。消息中提供十六进制代码。假定是一个空格。如果你使用奇怪的字符在标识符名称中,你将得到这个信息。你可以使用选项-ident(见章节其它选项.)28重定义一个符号给出的在以前声明的冒号前的标识符不是一个label.30期望一个常量期望一个常量,但是没有得到。可能是在case关键字后,数组维数、bitfield长度、枚举指、#if表达式等等.31重新定义一个符号数据对象或函数在此模块中以前定义过又被定义。32
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号