Java 代码覆盖率 Jacoco 与 Supper-Jacoco 对比及增强方案

一、背景

在 Java 代码覆盖率工具中,JaCoCo 是原生标准方案,而Supper-Jacoco是基于 JaCoCo 的增强版企业级解决方案。为满足 CI/CD 的集成需求,现对其进行调研分析。

工具对比

特性 JaCoCo(原生) Supper-Jacoco(增强版)
定位 基础的 Java 代码覆盖率库 企业级解决方案,基于 JaCoCo 二次开发
功能 提供行覆盖、分支覆盖等基本指标 在 JaCoCo 基础上,增加了自动化配置、覆盖率合并、历史趋势分析等
配置 需手动进行 XML 等配置 大幅简化配置流程,提供开箱即用的自动化能力
报告 标准 HTML/XML 报告 增强的 HTML 报告,支持定制化展示与趋势图
质量门禁 需自行实现 内置阈值检查,可作为流水线质量门禁

Supper-Jacoco 核心优势

二、Supper-Jacoco 现状与改造

1. 开源地址

原始项目地址(示例):https://github.com/didi/super-jacoco

2. 现存问题

  1. JDK 兼容性:仅支持 JDK 8,无法兼容 JDK 17/21 等高版本,制约了在生产环境的应用
  2. 功能与部署:部分组件已过时,且部署流程不够便捷

3. 针对性改造

为使其适用于当前技术栈,我们进行了以下关键修改:

三、改造后的 Supper-Jacoco 使用指南

1. 依赖条件:

部署服务已安装 jdk21
已安装 docker 并支持 docker compose

2. 修改后的项目地址

优化后的项目地址:https://github.com/daguideng/Super-Jacoco

3. 部署 super-jacoco

推荐使用 Docker 进行快速部署:
3.1. 下载地址https://pan.baidu.com/s/1HV3VRwd7Gh0gpwQDOoe8aQ?pwd=abcd 提取码: abcd

3.2. 修改配置:下载 clinet 并修改 jacocoAgent 相关配置

3.3. 重启 jacocoAgent 服务:chmod +x jacocoAgent.sh && bash jacocoAgent.sh

3.4. 部署 super-jacoco 服务

修改 docker-compose.yml 配置:本机 ip 、下载账号及密码

3.5. 运行 docker compose
chmod 755 ./sql
chmod 644 ./sql/init_database.sql

4. 试用

4.1.运行测试:手动测试应用或运行 jmeter 调用其接口

4.2. 打开网 Swagger 地址http://ip:8899/doc.html

4.3.查看代码覆盖率

-- 294332968@qq.com


↙↙↙阅读原文可查看相关链接,并与作者交流