代码走查工具PCLintNew讲课资料

上传人:yulij****0329 文档编号:139220383 上传时间:2020-07-20 格式:PPT 页数:71 大小:467KB
返回 下载 相关 举报
代码走查工具PCLintNew讲课资料_第1页
第1页 / 共71页
代码走查工具PCLintNew讲课资料_第2页
第2页 / 共71页
代码走查工具PCLintNew讲课资料_第3页
第3页 / 共71页
代码走查工具PCLintNew讲课资料_第4页
第4页 / 共71页
代码走查工具PCLintNew讲课资料_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《代码走查工具PCLintNew讲课资料》由会员分享,可在线阅读,更多相关《代码走查工具PCLintNew讲课资料(71页珍藏版)》请在金锄头文库上搜索。

1、代码走查工具PCLint,目 录,PC-Lint简介 PC-Lint基本使用方法 PC-Lint常用选项 PC-Lint在各种环境中的集成 PC-Lint常见告警分析及解决措施,PC-Lint简介,PC-Lint是Gimpel Software公司开发的一个一个C/C+静态语法检查工具,它不是一个Free 软件。一般来说,软件在编译连接通过后就可以使用PC-Lint做静态检查。 PC-Lint是一个命令行工具,在8.0版本里提供了300多个选项,1000多个告警。 本篇培训材料旨在引导读者入门,学会PC-LINT的基本使用方法,一些常见选项的使用,常见告警的分析及规避措施,希望可以起抛砖引玉的

2、作用,为读者深入掌握PC-Lint的使用打下基础。 本篇材料主要是以PC-Lint8.0在Windows上的使用为基础来做的。,PC-Lint基本使用方法,PC-Lint8.0主要由以下一些文件组成: Lint-nt.exe Windows下的执行文件 Msg.txt 全部选项帮助说明文件 PC-Lint.pdf PC-Lint的帮助文件 Config.exe 配置程序 Std.lnt 标准配置文件 Options.lnt选项配置文件 .Lnt子目录下的各种开发编译环境的配置文件 其他一些文件,PC-Lint基本使用方法,检查一个目录下的所有源文件可以使用以下方法: 如:lint-nt.exe

3、 -u -id:lint std.lnt d:ospvos*.cpp 跟前面不同的是这里将sample.c变成了d:ospvos*.cpp,使用*.cpp的意思是它会检查d:ospvos目录下的所有.cpp文件,但是它不能检查子目录下的文件,PC-Lint基本使用方法,要检查所有包括子目录的文件可以使用以下方法: lint-nt -id:lint std.lnt AllSource.lnt 在AllSource.lnt文件中可以放置如下: Moudule1-Dir*.cpp Moudule2-Dir*.cpp Moudule3-Dir*.cpp . 当检查所有文件时不需要使用-u选项,PC-L

4、int基本使用方法,PC-Lint配置文件介绍 PC-Lint使用那个配置文件是由命令行参数决定的,一般地都使用std.lnt文件,std.lnt文件中可以包含各种配置选项,还可以包含其他的配置文件,有点类似C的头文件,里面可以include许多其他头文件,不过PC-Lint配置文件包含其他配置文件不需要写include,直接写文件名就可以了。 每个配置文件里都可以包含配置选项,这些配置选项也可以放在命令行中,一般为使用方便,命令行中不要放很多选项,尽量都将选项放到配置文件中,PC-Lint基本使用方法,以下是VC下的配置文件样例 / Microtec 32-bit, -si4 -sp4, l

5、ib-w32.lnt / Standard lint options co-msc60.lnt /PC-Lint提供的对VC6的告警屏蔽文件 lib-w32.lnt /PC-Lint提供的对VC6库头文件的告警屏蔽文件 options.lnt -si4 -sp4 /用户自定义的选项文件 env-vc6.lnt /用户用来设置编辑环境的配置文件 -id:vc6vc98include /include 目录 -id:vc6vc98mfcinclude /include 目录,PC-Lint基本使用方法,一般来说,PC-Lint经常会有一些误报,为了消除这些误报,不得不将程序风格改动来规避,但有时候

6、怎么改写程序都有告警,比如说你定义了两个宏,前面那个宏里有一半大括号, 后面那个宏里有另一半大括号, 这时候一定会有告警,你不得不使用一些PC-Lint选项来屏蔽这些告警。 一般情况下,我们都将自己要写的选项放在Options.lnt文件中,PC-Lint基本使用方法,另外还有关于编辑环境的问题,如果把PC-Lint集成到某个编辑环境中,那么他输入的格式必须和对应环境吻合才能保证在鼠标点击(或双击)错误消息条目时可以自动定位到对应源代码行,一般来说这类配置都放置在env-xxx.lnt文件中,如VC6的时env-vc6.lnt, SourceInsight的是env-si.lnt PC-Lin

7、t本身提供了对各种编译器及对应库头文件的告警屏蔽文件,如co-msc60.lnt是对vc6的,lib-w32.lnt是对Win32库头文件告警的屏蔽配置文件,PC-Lint常用选项,-i选项 这个选项主要是用来设置include路径的 如:-iD:VC6VC98Include -e#选项 这个选项主要是用来屏蔽告警号为#的告警 如:-e818 表示不显示告警号为818的告警 -esym(#, 符号名)选项 这个选项主要是用来屏蔽告警号为#的某个符号的告警, 如-esym(39, std) -emacro(#,宏名称)选项 这个选项主要是用来屏蔽告警号为#的某个宏的告警,PC-Lint常用选项,

8、-dname=value 这个选项主要是用来定义一个宏的 如:-dWIN32, -dalpha=0 -sp# 表示指针的尺寸大小是#字节 如:-sp4表示指针是4个字节大小 -si# 表示int的尺寸大小是字节 如:-si4表示int型是4个字节大小 -t# 设置Tab键的大小为#个空格,缺省是8,PC-Lint常用选项,-sem选项 这个选项主要是用来消除一些语义上的告警 比如说在一个函数A里面分配了内存,这时调用了另一个函数AddNode将分配的内存保存起来了,因此在函数A里面没有释放内存,如果使用PC-Lint检查会有内存泄漏方面的告警,因为PC-Lint不知道函数AddNode将分配的

9、内存保存起来了,要消除这个告警就要用到-sem选项了。假设AddNode的第2个参数是用来保存分配内存,用法如下 -sem(AddNode, custodial(2) 这里custodial关键字是表示保存的意思,2是表示第2个参数。 -sem选项还有些其他用法,大家可以看PC-Lint自带的pc-lint.pdf文件,里面有详细的解析,PC-Lint常用选项,-function(function0, function1, )选项 这个选项一般情况下主要是用来表示function1及后面省略掉的函数和function0有类似的行为。 如:-function(malloc, mymalloc1,

10、 mymalloc2)表示mymalloc1, mymalloc2和malloc有类似的行为,因为malloc是用来分配内存的,所以pc-lint在检查mymalloc1和mymalloc2时也会想检查malloc一样看是否有释放掉 象上一页里已经定义了AddNode为保存内存的函数,如果碰到还有一个函数AddEvent也是有保存内存的功能,我们除了可以使用-sem(AddEvent, custodial(2)外,也可以使用-function(AddNode, AddEvent), 效果是一样的。不过要注意的是AddEvent保存内存的参数也要和AddNode一样是第2个。,PC-Lint常用

11、选项,-format选项 这个选项主要是用来设置输出告警消息格式的,以便于可以和编辑环境格式一样,便于自动定位到告警对应的源代码 如对SourceInsight, -format选项的使用如下:-format=%f %l %t %n: %m“ 这里%f表示文件名 %l表示代码行号 %t表示告警类型,如warning, error等 %n表示PC-Lint的告警号 %m表示PC-Lint输出的告警文本信息,PC-Lint常用选项,-fallthrough 这个选项主要是用在switch case中没有使用break的情况 可以在代码中使用/lint fallthrough来消除没有使用break

12、的告警 -save 保存错误抑制状态 如:在代码中使用 /lint save e429则表示从这行开始之后的代码抑制429告警的出现,直到使用/lint restore来进行恢复后才会重新出现429告警 -restore 重新设置错误抑制状态,使用-save选项抑制的告警将重新恢复,在使用了-save选项后一定要记住使用-restore进行恢复,否则可能有许多告警就被屏蔽调不出现了。,PC-Lint常用选项,其他一些常用选项还有 -elib 抑制库头文件的告警 -elibsym 抑制库头文件中某个符号的告警 -wlevel 设置告警级别 -efile 用来抑制一个或多个文件里的告警 -efun

13、c 用来抑制一个或多个函数里的告警 +rw 设置保留关键字 等等。 象-efile, -wlevel这些告警不要轻易使用 这些选项的具体用法请看pc-lint.pdf文件,PC-Lint在各种环境中的集成,PC-Lint在各种环境中的集成方法原理都是一样的,只要掌握前面讲的基本用法,知道如何用命令行来检测单个文件,一个目录下的所有文件,许多目录下的所有文件等,然后再结合各种环境的具体设置,就可以很方便地将PC-Lint集成到各种应用环境中了。 下面将以VC6, SourceInsight, UltraEdit, Tornado四种环境为例讲述如何集成PC-Lint,PC-Lint在各种环境中的

14、集成,在vc环境中集成 在VC的Tools 菜单中, 按 Customize 会出现下一页出现的对话框 先在上面的列表框里增加一个条目,里面填上PC-Lint80, 文本内容可以是其他的,由你自己决定。 然后在Command:这一栏中输入PC-Lint的执行文件名,要带上目录 再在Arguments:一栏里填上 -u -iC:Lint std.lnt $(FileName) 这里$(FileName)表示VC窗口里当前打开的文件名 你也可以将它改成$(FileDir)*.cpp表示检查当前打开文件同一目录下的所有.cpp文件,通常用于检查一个模块 还可以改成AllSource.lnt, 象前面

15、讲过的一样,AllSource.lnt是一个放置有所有文件的配置文件,这时要将-u去掉。,PC-Lint在各种环境中的集成,PC-Lint在各种环境中的集成,再在Initial Directory一栏里填上$(FileDir) 最后再将use output window打上勾就完成了将PC-Lint集成到VC环境中,PC-Lint在各种环境中的集成,在SourceInsight3.1中的集成 在SourceInsight3.1中集成PC-Lint过程如下: 1)从Options菜单中选择“Custom Commands”命令项。 2)点Add键会出现下面的Add New Custom Comm

16、and对话框 在New command name:栏中输入“PC-lint80 ”,原则上这个名称可以随便起,只要你能搞清楚它的含义就可以了,然后按OK按钮。,PC-Lint在各种环境中的集成,3)在Run栏中输入“d:lintlint-nt -u -ic:lint std.lnt env-si %f”其中d:lint是你PC-LINT的安装目录, %f是表示当前打开的文件。如果要Lint多个文件则需要使用配置文件,在配置文件里包含多个文件,将%f改成你自己的配置文件即可。 4)在Output栏中选择“Iconic Window”、“Capture Output”。 5)在Control栏中选择“Save Files First”、将缺省打了勾选上的“Pause When Done”改成不选择。 6)在Source Links in Output栏中选择“Parse Links in Output”、“File,then Line”。 7)在Pattern栏中将缺省设置改成( *) (0-9+)就大功告成了

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号