Klocwork代码静态检查实践

来源:互联网 发布:二炮研究院 软件中心 编辑:程序博客网 时间:2024/06/07 09:35

Klocwork代码静态检查实践

笔者曾用过两年多的Klocwork,它通过静态分析的方法,自动检测代码内存泄漏、空指针引用、缓冲区溢出、数组越界等运行错误,相比一些免费的检查工具功能强大很多,对于项目代码质量的改进作用还是比较明显的。这里简单总结一下推广经验。

1. Klocwork工具介绍

Klocwork软件是Klocwork公司基于专利技术分析引擎开发的,综合应用了多种近年来最先进的静态分析技术。与其它同类产品相比,Klocwork产品具有很多突出的特征:

1Klocwork支持的语言种类多,能够分析CC++Java代码;

2)能够发现的软件缺陷种类全面,既包括软件质量缺陷,又包括安全漏洞方面的缺陷,还可以分析对软件架构、编程规则的违反情况;

3)能够分析软件的各种度量;

4)支持SVNGit等代码管理工具;

5)能够分析大小型软件,笔者所在的项目就是有上千万行代码的;

6)支持检查规则自定义;

7)可以与Pclint、行覆盖率、复杂度等现有的CI工具一起使用,做到代码静态检查工具在项目中落地。

2.推广步骤

【第一步:对检查规则进行定制】

由架构组组长牵头,成立Klocwork推进小组,并根据代码规范,调整检查规则。最开始有80多条检查规则,后来增加到120多条。

检查规则确定后,先试用一个月,这时没有规定哪些问题必须修改,由开发人员自己选择,主要是让大家先熟悉这个工具。

大家熟练后讨论了一些DOD:提交代码库前,本地要先通过Klocwork检查;致命、严重的问题必须清除,告警、轻微的问题选择修改;发布版本前,全部问题必须完成处理。

【第二步:实现Klocwork每日增量检查】

通过Jenkins每日12:0018:00定时触发,对库内新增代码进行检查,检查结果通过度量系统展示出来。也可以通过Klocworkweb页面查看引入该问题的开发人员。不过这个软件需要购买License,我们当时也只买了两个,大家共用。

【第三步:每日全量检查】

晚上12:00触发全量检测,与行覆盖率、复杂度、编译错误等工具一起对代码做全量检查,检查结果通过邮件发布到所有项目成员(具体人员可配置)。系统测试版本发布前,检测出的问题都必须完成处理(12级清零,34级选择修改)。

【第四步:研发中心层面推广】

我们的项目推广半年后,执行效果较好,省去了很多代码评审的活动,只对修改的关键核心代码进行会议评审。领导决定推广到研发中心其他项目团队。

当然刚开始推广也碰到很多问题,比如为了修改检查出来的问题,导致出现新的问题,还有就是刚开始有几千个检测异常,短期内很难处理完。这些通过阶段推进,都已逐渐解决,最主要的是大家养成合入代码前先完成代码检测的习惯,这样至少新合入的代码不会有太多问题,即使出现问题也知道要快速处理。

1 0
原创粉丝点击