PC-lint Plus是一种静态分析工具,通过分析C和C ++源代码来发现软件中的缺陷。与编译器一样,PC-lint Plus会解析源代码文件,执行语义分析,并构建一个抽象语法树来表示程序。PC-lint Plus采用各种机制,包括数据流分析,数值跟踪,读写分析,强类型检查,功能语义验证和许多其他技术,来提供对单个文件和整个项目强大而全面的分析。
PC-lint Plus正式版
推广使用的前提
- 通过对PC-lint在一定范围的试用,形成一个全平台统一的PC-lint检查选项模板,此模板应按照PC-lint不同的告警级别进行分类,按照从低到高逐渐提高告警级别的方式,一步一步改善程序质量。
- 根据不同的模板和不同的阶段制定出循序渐进的检查通过标准,如:确定在某一阶段要求改掉某类告警的百分比。
- 修改版本控制的流程,在模块并入版本前和版本提交测试前,增加通过PC-lint检查的要求,并按照通过标准进行执行。
- 制定特殊情况的处理流程(在小范围内确定要求关闭某个告警信息)。
注:PC-lint告警级别可以通过-w选项进行设置。
-wLevel:设置错误信息告警级别。
-w0oessagesexceptoratalrrors)
-w1rroressagesnly-oarningsrnformationals.
-w2rrorndarningessagesnly
-w3rror,arningndnformationalessagesthissheefault)
-w4llessages.
个人的使用方案
如果每一个开发人员都使用PC-lint对各自开发、修改的代码进行检查,可以按照各自目前使用的开发工具集成PC-lint的做法,这样不仅运行方便,而且对告警的定位和程序修改都很方便,但是要求必须使用平台统一的PC-lint选项模板,并且只能自行增加变量和头文件路径信息的定义,不能随意关闭告警信息。
子系统的检查人的使用方案
采用PC-lint结合makefile的方式,在流程的检查点由指定人员对平台各个子系统的代码进行检查,并把PC-lint的告警信息发送给相关人员进行处理,通过检查后才能进入下一个流程。
特殊情况处理方法
由于各子系统代码风格或个人编程风格的差异,可能存在统一选项文件中的某个选项在大部分代码中是非常严重,必须排查的,而在某类代码中是轻微的,或者虽然也严重但对它的修改将会涉及众多文件的修改,这种众多文件的修改在短期内无法完成,对于这类特殊情况将可以通过在代码中加pclint编译信息,屏蔽相关选项的检查。但对于这类特殊情况,需要制定流程,要求提交相关的说明。
在代码中加入编译信息屏蔽pclint检查的形式根据代码情况的不同有许多种,但对它的整理需要多人投入较长时间对pclint进行详细了解才能获得,此处只提供一种最简单的方法,下面以实例说明:
某段代码中有一句语句emset((void)(&(pVar->Data)),,izeof(A_Data));
被pclint检查出warning45,可疑的&使用,但在程序中经过确认这句话没有问题,而且由于其他原因的限制不能替换为符合pclint的格式,则在此语句的前后中加入如下pclint可理解的注释
/*linte545/emset((void)(&(pVar->Data)),,izeof(A_Data));*lint545/
/*linte545/表示在以后的语句中屏蔽e545的检查,/*lint545/表示在以后的语句中回复e545的检查。
通过这种方式即可在局部屏蔽pclint的检查。但程序中可能此语句非常多,对每个语句加注释会非常麻烦,目前还没有找到此情况下合适的方法。但对于宏,可以在宏定义中添加注释信息,如对于下面的宏定义
#defineIVZERO(x)((x)0)
希望屏蔽e545的检查,则在宏定义中添加注释
#defineIVZERO(x)*lintsavee54/(x)0)/*lintrestore/
相关内容推荐:
PC-lint Plus v1.3.5更新内容>>>
想要购买PC-lint Plus正版授权,或了解更多产品信息请点击【咨询在线客服】
标签:软件测试技术静态检测工具
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!