sonarqube作为代码质量的管理平台,它在代码覆盖率,重复率,问题数等方面依据常用的工程化标准进行评估。作为开源的社区版本,要满足按人员分组统计当前代码的覆盖率这个需求,还得动手二开才能实现。MVN作为日常项目代码的组织工具,天然支持插件来定制相关的需求。目前待完成清单:
1 定义数据模型
覆盖率(包含覆盖率文件地址,行数,作者,是否覆盖,提交哈希,提交日期)
对应/target/site/jacoco/jacoco.xml这个文件的属性,像作者等提交信息来源于git
开发者分组(作者,总行数,覆盖行数,文件指标(覆盖率文件地址,总行数,覆盖行数))
对应生成的分组覆盖率报告
2 实现一个自定义的MVN插件
3 定义一个对象,需要实现以下方法
解析JaCoCo XML报告
添加代码作者信息
按开发者汇总数据
生成Excel报告
创建汇总工作表
创建开发者详情工作表
是否是覆盖的包
主要类图
依赖定义:
POM定义
自定义插件入口函数:
这里主要是读取当前MVN里面配置的忽略包(不作代码覆盖率检测)
CoverageTracker作为主要核心类,前面的UML图作了简单说明,大家可以对着描述进行理解。打包完成就会生成一个插件类型的JAR
这里的packageing的类型要写对,同时在当前插件的POM里面还要定义一个别名,方便第三方使用这个插件。
如果我现在有一个项目要使用该插件,首先在插件结点下增加
执行MVN构建的命令mvn coverage-count-plugin:coverage-count
注意,该指令首先要基于SONARQUBE进行构建生成的报告文件进行分析。
下面是实际的效果
导出的EXCEL