欧普下载是国内较新、较齐、较安全的软件下载基地!
当前位置:首页 ›› 其他软件 ›› 编程相关 ›› pc lint(C/C++静态代码检测工具)下载

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

pc lint9[下载地址]
pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

PC Lint是GIMPEL SOFTWARE公司开发的一款专业的C/C++静态代码检查工具,可以检查未初始化变量、数组越界、空指针等编译器难以发现的潜在问题,可以大大提高代码效率的灵活性,侧重于代码的逻辑分析,是编程人员的最佳辅助工具,欢迎下载!

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

pc lint功能介绍

1、PC Lint是一种静态代码检测工具,可以说,PC-LINT是一种更加严格的编译器,不仅可以象普通编译器那样检查出一般的语法错误,还可以检查出那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误。

2、PC lint不但可以检测单个文件,也可以从整个项目的角度来检测问题,因为C语言编译器固有的单个编译,这些问题在编译器环境下很难被检测,而PC Lint在检查当前文件的同时还会检查所有与之相关的文件,可想而知,它会对我们有很大的帮助。

3、 PC lint支持几乎所有流行的编辑环境和编译器,比如Borland C++从1.x到5.x各个版本、Borland C++ Build、GCC、VC、watcomC/C++、Source insight、intelC/C++等等,也支持16/32/64的平台环境。

4、支持Scott Meyes的名著(Effective C++/More Effective C++)中说描述的各种提高效率和防止错误的方法。

pc lint安装配置教程

1.在本站下载pclint9.opdown.rar,解压缩(目录中的patch文件夹不用,因为它只能将PC-lint升级到9.0e )

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

2.点击pclint9setup.exe 进行安装,安装目录为C:\lint

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

3.安装之后勾选:I want to run the configration program now ,点击下一步,进入自动配置界面

4.欢迎界面,提示版权信息,点击“下一步”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

5.显示PC-lint命令行使用说明,点击“下一步”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

6.选择“创建一个新的STD.LNT”配置文件,这里使用默认路径,点击“下一步”,出现警告,选择“是”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

7.选择编译器,这里选择“Microsoft Visual C++ 2008(co-msc90.Int)”,点击下一步

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

8.选择内存模式。可以根据自己程序区和数据区的实际大小选择一个合适的内存模式,这里选择“32-bit Fat Model(-ms, -si4, -sp4)”,点击“下一步”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

9.选择所要的支持库的配置信息,选择我们常用的

Active Template Library(ATL),

Microsoft Foundation Class Library(MFC),

Standard Template Library(STL),

Windows 32-bit,

Windows NT

点击“下一步”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

10.选择是否支持为使用C/C++编程提出过重要建议的作者的一些关于编程的个人意见。根据自己喜好选择,这里左边选择第3个【Scott Meyers(Effective C++ More Effective C++ and Effective C++ 3rd Edition)】,右边选择第1个【Dan Saks】和第3个【MISRA 2004】。点击“下一步”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

11.选择如何包含头文件。选择Create -i options,选择下一步

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

12.选择工程所包含的头文件目录

选择Visual Studio 2010的安装目录下的头文件目录

“D:\VS2010\VC\include”

“D:\VS2010\VC\atlmfc\include”

当然也可以后期可以进入改lnt文件自己手动添加

(注:“VS2010”是我的Visual Studio 2010的安装目录)

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

13.提示lnt文件已经被创建过了,点击“确定”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

14.提示是否创建新的配置文件,选择“否”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

15.选择生成一个控制全局编译信息显示情况的选项文件,选“No”来生成该文件。点击“下一步”,点击“确定”。

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

16.选择所支持的集成开发环境,这里选择“(env-vc9.Int)Microsoft’s Visual C++.NET 2008”。点击“下一步”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

17.选择把LIN.BAT拷贝到任何一个Path目录下,这里选择“Prepend my PC-lint directory to my PATH(create LSET.BAT)”

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

18.提示LIN.BAT已经被创建,点击“确定”。完成安装配置。

19.将配置从Visual Studio 2008升级到Visual Studio 2010。

19.1从官网下载配置文件(http://www.gimpel.com/html/ptch90.htm)

19.2找到env-vc10.lnt,co-msc100.h和co-msc100.lnt三个文件,分别下载(右击——>目标另存为)

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

19.3 进入到PC-Lint的安装目录下(C:\lint)删除属于配置VS 2008的对应文件(co-msc90.lnt,co-msc90.h和env-vc9.lnt),替换成VS 2010相对应的文件(env-vc10.lnt,co-msc100.h和co-msc100.lnt)

删除VS2008的对应文件

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

替换为VS2010的对应文件

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

19.4打开(C:\lint)目录下的std.Int,把关键字”co-msc90.Int“替换成”co-msc100.Int)。

20.更新PC-Lint版本。

20.1查看当前PC-Lint的版本:

进入命令提示符,进入PC-Lint的安装目录,输入“lint-nt -v”或者“lin”,显示当前版本为9.00a

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

20.2 升级PC-Lint:

在官网(http://www.gimpel.com/html/ptch90.htm)上下载更新文件

( 下载“lpatch.exe ”和从 “l9-a-b.lp” 至“l9-h-i.lp ” )

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

将它们全部拷贝到PC-Lint的安装目录下(C:\lint)

20.3写一个批处理文件:

在该目录下新建文本文档,在其中写入

lpatch l9-a-b.lp

lpatch l9-b-c.lp

lpatch l9-c-d.lp

lpatch l9-d-e.lp

lpatch l9-e-f.lp

lpatch l9-f-g.lp

lpatch l9-g-h.lp

lpatch l9-h-i.lp

pause

保存,重命名为“update.bat ”,点击运行

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程
pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

点击运行:

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

20.4查看升级后PC-Lint的版本:

进入命令提示符,进入PC-Lint的安装目录,输入“lint-nt -v”或者“lin”,显示当前版本为9.00i

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

至此,PC-Lint安装配置完成并成功从9.00a升级到9.00i 。

将PC-Lint 集成到Visual Studio 2010中

1.打开VS 2010,在Tools(工具)->External Tools(外部工具),选择”Add(添加)”。

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

2.测试单个文件的配置

Title(标题): PC-lint 9.0 Check Project

Command(命令): c:\lint\lint-nt.exe

Arguments(参数): -i”c:\lint” std.lnt env-vc10.lnt “(ItemFileName)(ItemExt)”

Initial Directory(初试目录): $(ItemDir)

勾选“使用输出窗口”,点击“确定”完成配置。

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

3.测试整个项目的配置

Title(标题): PC-Lint 9.0 Check Current File

Command(命令): c:\lint\lint-nt.exe

Arguments(参数): +ffn -i” c:\lint “std.lnt env-vc10.lnt “(TargetName)”InitialDirectory(初试目录):(ProjectDir)

点击“确定”完成配置。

pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程

4.参数说明

+ffn :可以找到所有文件

-i"c:\lint" :设置默认路径(根据自己的安装路径来填写)

sstd.lnt env-vc10.lnt "$(TargetName)" :设置lint-nt.exe参数,std.lnt为选择的配置文件;env-vc10.lnt 为vs2010环境下的输出格式;后面的"$(TargetName)"为文件的文件名包括文件的路径。工具的初始化目录为文件的目录$(ProjectDir)。

pc lint使用教程

1、pc-lint目录下几个重要的文件及程序

lint-nt.exe:PC-lint的可执行程序。

config.exe: PC-lint的配置文件程序。

pc-lint.pdf:PC-lint的PDF格式的在线手册,本文的大部分内容是从中得来的。

msg.txt: 对于错误消息编号的详细解释。

Lnt/: 这个目录下有些东西还是值得认识一下。

co-....lnt: 指定的编译器的可选编译文件。

co.lnt: 通用的可选编译文件。

sl-....c 非ANSI编译器的标准库文件模块

sl.c: 非ANSI编译器的通用标准库文件模块

env-....lnt:不同平台下的可选文件,包括MS Visual Studio和其他各种编辑工具。

lib-....lnt:可选文件, 特定的"有挑战性"的库文件。

au-....lnt: 可选文件, 作者们推荐的检测条件。

2、 PC-lint的介绍

2.2.1 错误信息编号

对于大部分的错误消息,PC-lint都提供了一个关联的错误编号。小于1000的错误编号是分配给C语言的,1000以上的错误编号则是分配给C++语言的。1000呢?呵呵,被保留了。先看一个表格。

C C++ 告警级别

语法错误(Syntax Errors) 1 - 199 1001 - 1199 1

内部错误(Internal Errors) 200 - 299 0

致命错误(Fatal Errors) 300 - 399 0

告警(Warnings) 400 - 699 1400 - 1699 2

提示(Informational) 700 - 899 1700 - 1899 3

可选信息(Elective Notes) 900 - 999 1900 - 1999 4

对于C语言,1~199是与语法错误;200~299是PC-lint内部错误,应该决不会发生的;300~399是致命错误,通常是由于超越了某些限制;400~699是警告消息,提示被检查的程序中可能存在错误;700~899是提示信息,这些提示信息可能有错误,也可能是合法的程序,取决于个人的编程风格;900~999则是一些称为可选信息,一般不会自动输出。

PC-lint提供了高级级别设置选项-wLevel,缺省的级别为3级。-w0, -w1 , -w2, -w3, -w4 分别可以生成上述表格中对应告警级别和级别更低的告警,其中级别越低告警越重要。同样,也提供了处理库函数的头文件告警级别的选项-wlib(Level),缺省的级别也是3级,级别对应的含义与前者一样。

2.2.2 选项的规则

通过使用加号"+"和减号"-",以注释的形式插入代码中,来恢复和屏蔽指定的被检查的选项。格式如下:

/*lint option1 option2 ... optional commentary */

或者

//lint option1 option2 ... optional commentary

注意:lint必须是小写,选项的一行不能超过80个字符,否则导致致命的错误,错误信息的编号就是323。如果选项确实有很长,可以通过换行的方式来实现。另外屏蔽和恢复的选项的代码可以放在宏定义中,宏被展开后,这些选项会生效。

2.2.3 选项中的空格

因为空格是用来分隔选项的,除此之外只能出现在圆括号的旁边或是空格自身被引用(例如operator new按语法要求中间就有空格)。举个例子:

-esym(534,printf,scanf,operator new)

-esym(534, printf, scanf, operator new)

-esym( 534 , printf , scanf , operator new )

对于第三个,空格出现在圆括号的旁边,也出现在自身被引用的地方(operator new)。另外operator和new之间出现两个空格也是不合法的,因为它违反了语法规则。另外,也可以使用双引号("")来保护空格,例如:

-"dWORD=unsigned short"

2.2.4 选项的分类

PC-lint的选项有300多种,可以分为下面几类:

(1)禁止错误信息

选项开头使用"-e"可以禁止指定的错误消息,使用"+e"恢复指定的错误消息。如果禁止消息,只不过不让消息输出,并不影响PC-lint的处理过程。顺便提一下前面提到的"-wLevl",这个选项是禁用指定级别及以上的消息的显示。

1)格式一:

-e# 禁止指定的错误消息,#代表数字或是数字匹配符,错误消息的编号为#。

+e# 恢复指定的错误消息,错误消息的编号为#。

举个例子:

/*lint -504*/

...Code.....

/*lint +504*/

第一行关闭了编号为504的错误消息,最后一个行则重新打开了编号为504的错误消息。其中数字也可以包含匹配符号,'?'匹配单个字符,"*"匹配多个字符。

比如:

(1)-e7???, 则关闭了700~799这个范围内的错误消息。

(2)-e1*, 则关闭了所有以1开头的编号的错误消息。

同样匹配符也能使用在-esym, -elib, -elibsym, -efile, -efunc, -emacro, -etemplate, -e(#), --e(#), -e{#} and –e{#}.

2)格式二:

-e(#[,#]...) 为下一个表达式禁止指定的错误消息,在这个表达式结束后被禁止的错误消息自动恢复,#代表数字或是数字匹配符,错误消息的编号为#。

举个例子:

a = /*lint -e(413) */ *(char *)0;

它等价于下面的语句:

a = /*lint -save -e413 */ *(char *)0

/*lint -restore */;

前一种方法更简单且更有效。

3)格式三:

--e( # [,#]... ) 比上面的那个管的更宽一些,它对整个表达式有效,举个例子就明白它与上面的区别了。

举个例子:

a = /*lint --e(413) */ *(int *)0 + *(char *)0;

整个表示式是指*(int *)0 + *(char *)0,下个一表达式指的是*(int *)0。区别一目了然,例子中将禁止两个编号为413 的错误消息, 如果使用 -e(413) ,则只禁止第一个编号为 413 的错误消息。

4)格式四:

-e{ # [, #] …} 对下一个语句或者声明有效

举个例子:

//lint -e{715} suppress "k not referenced"

void f( int n, unsigned u, int k )

{

//lint -e{732} suppress "loss of sign"

u = n; // 732 not issued

//lint -e{713} suppress "loss of precision"

if(n)

{

n = u; // 713 not issued

}

} // 715 not issued

通过例子可以看出,这种格式放在函数之前,则对整个函数产生作用,放在赋值语句前则只对赋值语句起作用,放在if或while前面,则对这一段语句起作用。在C++的类定义或命名空间声明前放这么个选项,则将整个类或命名空间内的代码中指定的错误消息给禁止了。

5)格式五:

--e{ # [, #] … } 对于其所处的 {} 号区域内的整个代码体有效。 {} 号区域可能是复杂的语句、函数体、C++的类,结构体或联合体的定义、C++的命名空间等。如果这个选项放在一个模块前,而模块前没有 {},则对整个模块生效。

6)格式六:

!e# 仅对其所在行有效。

if( x = f(34) ) //lint !e720

y = y / x;

在这个例子中,仅对那一行禁止编号为720 的错误消息。看一下C语言的代码的用法:

if( x = f(34) ) /*lint !e720 */

y = y / x;

如果有更多的错误信息要禁止,而又无法使用通配符,则可以使用下面的方法:

n = u / -1; //lint !e573 !e721

7)格式七:

-ealetter 参数不匹配禁止

8)格式八:

-efile( #, file [, file] ... ) inhibits and

+efile( #, file [, file] ... ) re-enables

9)格式九:

-efunc( #, Symbol [, Symbol] ... ) inhibits and

+efunc( #, Symbol [, Symbol] ... ) re-enables

10)格式十:

-elib( # [, #] ... ) inhibits and

+elib( # [, #] ... ) re-enables

11)格式十一:

-elibsym( # [, # ] ... ) inhibits

+elibsym( # [, # ] ... ) re-enables

12)格式十二:

-emacro( #, symbol, ... )

+emacro( #, symbol, ... )

13)格式十三:

-emacro( (#), symbol, ... )

--emacro( (#), symbol, ... )

-emacro( {#}, symbol, … )

--emacro( {#}, symbol, … )

14)格式十四:

-esym( #, Symbol [, Symbol] ... ) inhibits and

+esym( #, Symbol [, Symbol] ... ) re-enables

禁止和恢复指定的符号的错误消息。举个C++的例子(实际应用中不太可能出现):

class X

{

void f(double, int);

};

分析结果中会提示某行的member X::f(double, int)没有被引用,为了屏蔽这个消息,你可以使用

-esym( 754, X::f )

符号的完整签名为X::f(double, int),然而符号的名字为X::f,而且可以使用符号的名字来禁止错误消息的出现。另外,-esym 和 -e# 选项是独立的,举个例子:

-e714 +esym( 714,alpha )

对于alpha来说,它禁止了编号为714的错误消息,第二个选项并不会恢复编号为714的错误消息,除非前面有个对应的-esym(714,alpha)。

15)格式十五:

-etd( TypeDiff [, ...] ) inhibits

+etd( TypeDiff [, ...] ) re-enables

16)格式十六:

-etemplate( # [,#] ... )

+etemplate( # [,#] ... )

禁止和恢复在扩展模板(expanding templates)时的错误消息。

(2)变量类型大小和对齐选项

1)变量类型大小选项

这组选项允许设置各种变量类型的大小和对齐方式。由于默认的设置于绝大多数的编译器都是一致的,所以这些参数的单独设置通常是没有必要的。使用变量类型大小的选项是为了特定的架构,而不是本地架构。举个例子,你需要为嵌入式系统设置int和pointers通常为16位,那么你应该指定:

lint -si2 -sp2 ...

下面的列表,#号代表一个小的整型值,仅举几个:

-sb# 字节的位数为#,默认的是-sb8,

-sbo# sizeof(bool)就变为一个参数了,默认值为1,

-sc# sizeof(char) 就变为 #,默认值为1,

-slc# sizeof(long char) 就变为 #,默认值为2,

...

2)对齐选项

仅有两个可选择的注释信息来检测不规律的对齐,它们的错误编号是958和959,详细的介绍就省略了吧。

(3)冗长信息选项

冗长信息选项采用-v和+v开头来控制,冗长信息指的是在检测过程中产生的一些与编译过程有关的信息,或者说,冗长信息与编译过程中消息的频率和种类有关。如果使用-v,则冗长信息进被发送到标准输出,而是用+v,冗长信息进则会被发送到标准输出和标准错误中。如果要将错误信息重定向到一个文件中,并想要在终端查看冗长信息和被解释后的错误消息,+v选项是非常有用的。

(4) 标志选项

采用+f,++f,-f,--f开头开介绍标志位。一个标志位在内部采用一个整型值表达。通过认为:

ON 假如整型值大于0

OFF 假如整型值小于或等于0

默认设置时1为ON,0为off,对于的关系如下:

+f...:通过把标志为设置为1而把它设置为ON

-f...:通过把标志为设置为0而把它设置为OFF

++f...:标志位增1

--f...:标志位减1

后面两个选项在只设置局部标志而不影响全局设置时,非常有用。

(5)消息显示选项

消息显示选项用于定义消息输出的格式。

1)控制错误消息的高度。

-h选项被用来控制消息的高度,通常的格式如下:

-h[F][f][a][r][mn][m][m/M/][I]N

s 表示每条消息后的空格。其他的就不介绍了。

2)控制错误消息的宽度。

格式如下:

-width(W,Indent)

例如:-width(99,4)

3)消息格式化选项

格式如下

-format=...

3)附加信息选项

格式如下:

-append(errno,string)

(6)其他选项

1)-A 要求严格使用ANSI C/C++处理。

其他的不介绍了。

2.2.5 库文件检查

这里的库文件时指那些编译后的库文件,比如标准的I/O库,又比如第三方的库文件,例如windows的库文件。关注库文件的重要特色是因为以下两点:

(1)库文件的源代码通常不可获得。

(2)库文件在多个正被你使用pc-lint检查的程序中使用。

库的头文件描述了库的部分或完整的接口。举个例子:

hello.c

#include

main()

{

HelloWorld();

printf( "hello world/n" );

}

如果没有"#include "这一行代码,使用PC-lint检查上述代码,PC-lint会抱怨printf()既没有声明也没有定义,会给出编号为718错误信息。如果"stdio.h"被当做一个库文件的头文件,那么PC-lint不会要求给出printf()的源代码。

(1)格式一:

+libclass( identifier[, identifier] ... )

用来指定名为identifier的头文件当做库头文件。identifier是其中下面之一:

angle: 所有尖括号包含起来的头文件

foreign:所有在搜索列表中目录下的头文件

ansi:标准ANSI C/C++ 的头文件

all:所有头文件

默认情况下,+libclass(angle,foreign) 是有效的,这也是为什么hello.c的代码没有要求给出printf()源代码的原因。

(2)格式二:

+libdir( directory [, directory] ... )

-libdir( directory [, directory] ... )

指定目录的。

(3)格式三:

+libh( file [, file] ... )

-libh( file [, file] ... )

增加或移出那些已经被 +libclass 和 +/-libdir 已确定的头文件,以达到要求或不要求给出源代码。举个例子:

+libclass( ansi, angle )

+libh( windows.h, graphics.h )

+libh( os.h ) -libh( float.h )

要求所有的ansi和angle(除了float.h),还有那三个windows.h, graphics.h, os.h也会被当做库头文件。

2.2.6 强类型检查

什么是强类型?C/C++的变量都有类型,不同类型之间的赋值可能会产生告警,可以说C/C++变量的类型是强类型。有强类型,自然有弱类型。比如一些脚本语言,它们的变量就不存在具体的类型,可以相互之间赋值,它们就是弱类型语言。为什么在使用PC-lint对C/C++进行检查时,要进行强类型检查呢?因为有诸如使用typedef定义的数据类型,可以避开编译器的类型检查。举个例子:

typedef int Count;

typedef int Bool;

Count n;

Bool stop;

...

n = stop ;

对于这段代码,编译器是不会告警的,但是最后一行代码是错误的。所以,强类型检查选项是必要的。

强类型检查选项"-strong"和附加选项"-index"可以完全的或部分的对typedef定义的数据类型进行强类型检查,保证相同类型的变量才能相互赋值。

(1)强类型检查选项strong的格式如下:

-strong( flags[, name] ... )

name是强类型,flags是指定的属性,flags参数可以是A、J、X、B、b、l和f。如果name被省略,所有使用typedef定义的数据类型的flags的属性不能被其他的-strong选项所识别。

flags参数 弱化字符

A i 忽略初始化

r 忽略Return语句

p 忽略参数传递

a 忽略赋值操作

c 忽略将常量赋值(包括整数常量、常量字符串等)给强类型的情况

z 忽略Zero赋值

X 当把强类型的变量赋值给其他变量的时候进行类型检查。弱化参数i, r, p, a, c, z同样适用于X并起相同的作用。

J 当强类型与其它类型进行运算时(逻辑运算、关系运算、数学运算等)进行检查

e 忽略==、!=和?:操作符

r 忽略>、>=、<和<=

o 忽略+、-、*、/、%、|、&和^

c 忽略该强类型与常量进行以上操作时的检查

z 忽略该强类型与Zero进行以上操作时的检查

B 类型是Boolean,一般情况下只能使用一个name(指格式中的name), 而且它应该和其他flags联合使用。

B选项有两个作用:

1. 出于强类型检查的目的,每一个Boolean操作符都采用返回一个和Type兼容的类型。Boolean操作符就是那些显示

为true或false,也包括前面提到的四种关系运算符和两种等于判断符,取反操作符!,二元操作符&&和||。

2. 在所有需要判断Bolean值的上下文中,比如if语句和while语句,都应该检查这个强类型,否则产生告警。

b 仅仅假定每一个Bolean类操作符都将返回一个与Type类型兼容的返回值。与B选项相比,b选项的限制比较宽松。

l 库标志,当强类型的对象从库函数中获得值,或者将强类型对象的值作为参数传递给库函数等情况下,不产生告警。

f 与B或b连用,表示不应该将1位长度的位域当做Boolean类型,否则表示1位长度的位域被缺省假定为Boolean类型。

这些选项顺序对功能没有影响,但是A和J选项的弱化字符必须紧跟在它们之后。B选项和b选项不能同时使用,f选项必须搭配B选项或b选项使用,如果不指定这些选项,-strong的作用就是仅仅声明type为强类型而不作任何检查。下面用一段代码演示-strong选项的用法:

//lint -strong(Ab,Bool) <选项是以注释的形式插入代码中>

typedef int Bool;

Bool gt(int a, b)

{

if(a) return a > b; // OK

else return 0; // Warning

}

代码中,Bool被声明成强类型,如果没有指定b选项,第一个return语句中的比较操作就会被认为与函数类型不匹配。第二个return语句导致告警是因为0不是Bool类型,如果添加c选项,例如-strong(Acb,Bool),这个告警就会被禁止。

(2) 另一个强类型检查选项是index,格式如下:

-index( flags, ixtype, sitype [, sitype] ... )

这个选项是对strong选项的补充,它可以和-strong选项一起使用。这个选项指定ixtype是一个排他的索引类型,它可以和强索引类型sitype的数组(或指针)一起使用,ixtype和sitype被假定为后来使用typedef声明来定义的的类型名称。flags可以是c或d,c允许将ixtype和常量作为索引使用,而d允许在不使用ixtype的情况下指定数组的维数(Dimensions)。

常见错误

1. 在PC-lint的Configuration向导结束后,会在PC-lint的安装目录下生成std.lnt文件,里面有一行:

options.lnt -si4 -sp4

如果按照“静态代码检查工具PC-Lint“走完所有的标准配置的话,options.lnt会自动生成,但无内容(注释除外),如果中间某一步skip了,可能该文件就不会生成,这时就需要手动创建一个options.lnt文件,或在std.lnt中注释掉options.lnt,否则会在使用PC-lint时会出现找不到options.lnt的错误。

PC-lint的安装包下面还有一个options.lnt文件(非自带),可以直接拷贝到PC-lint安装路径下替换掉原来的文件,里面我已经加了一些屏蔽错误项作为示例。

2. 在使用PC-lint的过程当中,如果发生某个库头文件找不到的错误,可以打开std.nt文件,在后面添加该头文件所在的全路径,格式如下:

-i"D:/WinDDK/7600.16385.0/inc"

3. PC-lint不支持Unicode Codepage 1200和1201,请使用Unicode (UTF-8 with signature) - Codepage 65001.

下载pc lint(C/C++静态代码检测工具) v9.0最新版 附安装配置教程
本地下载地址:
本地电信下载
本地电信下载
本地联通下载
本地联通下载
本地迅雷下载
本地迅雷下载
移动用户下载
移动用户下载

版权声明:本站提的序列号、注册码、注册机、补丁等均来自互联网,仅供学习交流之用,请在下载后24小时内删除。

猜您喜欢
相关文章
软件评论
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,与本站立场无关!
    登录   注册