首页 存档 技术 查看内容

干货丨最佳实践:Klocwork增量/VerifyCI检查 1.背景 2.实践效果 1.代码静态检查系统架 ...

2018-3-30 13:00 |来自: 互联网 1123 0

摘要: 导读 韩群对软件技术有着浓厚的兴趣,对Klocwork等代码静态检查工作做过深入研究,今天他为我们带来Klocwork在实际项目中的落地经验,相信会给大家带来启发 【摘要】 对于大型软件项目,依靠代码走查来保证代码质量 ...

导读


韩群对软件技术有着浓厚的兴趣,对Klocwork等代码静态检查工作做过深入研究,今天他为我们带来Klocwork在实际项目中的落地经验,相信会给大家带来启发



【摘要】

对于大型软件项目,依靠代码走查来保证代码质量效率极低,需要使用代码静态检查工具。在实际项目中,代码具有复杂的逻辑结构,为保障项目产品质量,已有的Pclint检查工具已经难以满足项目需求,2017年年初,项目引入了server版的Klocwork,经过DevOps团队成员半个月的努力,终于摸索出利用Klocwork实现建立检查基线、每日增量检查、集成到Verify CI的方法,本文将对其中的关键技术进行分享。

1.背景

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

1)Klocwork支持的语言种类多,能够分析C、C 和Java代码;

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

3)软件分析功能全面,既能分析软件的缺陷,又能进行可视化的架构分析、优化;

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

5)能够提供与多种主流IDE开发环境的集成;

6)能够分析超大型软件(上千万代码行);

然而,项目对代码静态检查工具的使用经验很少(仅使用过PClint),在DevOps团队经过半个月的努力下,终于将Klocwork与现有的CI系统集成,做到代码静态检查工具在项目中落地。


2.实践效果

【第一成果:建立Klocwork检查基线】

对特定Commit版本的项目代码进行全量检查,将检查结果上传数据库,建立检查基线,利用Klocwork提供的web api插件,将服务器端的检查结果导出输出json文件,解析该json文件,根据git托管工具的代码提交信息,逐一将问题对应到引入该问题的开发人员,其结果最终打包成HTML报告。

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

通过Jenkins每日定时触发,对库内代码进行检查,将检查结果与上述基线进行对比,利用web api插件将差异导出到json文件,解析该json文件,根据git托管工具的代码提交信息,逐一将问题对应到引入该问题的开发人员,其结果最终打包成HTML报告。

【第三成果:将Klocwork集成在Verify CI中】

利用Klocwork提供的conan插件,在项目的Pipeline中引入代码静态检查环节,在Verify CI中就可以检测到问题,做到有问题的代码不能入库,保证库内代码质量。


1.代码静态检查系统架构图

代码静态检查系统如下图所示,主要包括源码仓库、CI节点、Klocwork server和DevOps门户网站服务器。

源码仓库实现对项目代码的版本控制。目前,项目使用基于Git的源码仓库。

CI节点作为CI调度工具(Jenkins等)的Slave节点,当开发人员从本地仓库执行push操作时,CI调度工具会调度CI节点进行执行CI任务,在CI任务中会对开发人员的本地仓库代码进行增量静态检查,检查结果以邮件方式推送给代码提交人。

Klocwork server用来制作项目代码检查基线,并基于该基线实现每日增量检查,当CI节点执行CI任务时,为CI节点提供Klocwork license授权、检查规则,同时也能给DevOps门户网站服务器提供原始数据。

DevOps门户网站服务器从Klocwork server获取原始检查结果,根据git托管工具的代码提交信息,逐一将问题对应到引入该问题的开发人员,实现了CI资源的整合,给开发人员提供了一站式的服务。

2.建立Klocwork检查基线

建立Klocwork检查基线主要包含以下步骤:

1. 建立Klocwork工程

在Klocwork Server上创建Klocwork Project,主要采用两种方法:

1)网页登录Klocwork Server,登录帐号后,点击

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部