温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用Maven进行代码覆盖率分析

发布时间:2026-01-12 00:14:59 来源:亿速云 阅读:164 作者:小樊 栏目:编程语言

使用 JaCoCo 在 Maven 中进行代码覆盖率分析

快速上手

  • 在项目的 pom.xml 中加入 JaCoCo Maven 插件(推荐版本:0.8.7 或更高):
<build>
  <plugins>
    <plugin>
      <groupId>org.jacoco</groupId>
      <artifactId>jacoco-maven-plugin</artifactId>
      <version>0.8.7</version>
      <executions>
        <execution>
          <goals>
            <goal>prepare-agent</goal>
          </goals>
        </execution>
        <execution>
          <id>generate-report</id>
          <phase>test</phase>
          <goals>
            <goal>report</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>
  • 运行测试并生成报告:
mvn clean test
# 或单独生成报告
mvn jacoco:report
  • 打开报告:target/site/jacoco/index.html,查看按包、类、方法细分的覆盖率详情。

常用配置与门槛

  • 覆盖率门槛检查(未达标则构建失败):
<execution>
  <id>check-coverage</id>
  <goals>
    <goal>check</goal>
  </goals>
  <configuration>
    <rules>
      <rule>
        <element>PACKAGE</element>
        <limits>
          <limit>
            <counter>LINE</counter>
            <value>COVEREDRATIO</value>
            <minimum>0.80</minimum>
          </limit>
        </limits>
      </rule>
    </rules>
  </configuration>
</execution>
  • 常用指标:LINE(行)、BRANCH(分支)、METHOD(方法)、CLASS(类)、INSTRUCTION(指令)。
  • 按需调整报告阶段(例如绑定到 prepare-package)或输出格式(支持 HTML/XML/CSV),便于本地查看与 CI 集成。

集成 SonarQube

  • 确保已生成 JaCoCo 数据(如 jacoco.exec),执行分析并上传:
mvn clean install
mvn sonar:sonar
  • 在 SonarQube 项目页面即可查看覆盖率趋势与详情(需正确配置 SonarQube 服务器与凭证)。

常见问题与排查

  • 报告未生成或为空:确认已绑定 report 目标(如绑定到 test 或 prepare-package 阶段),并使用 mvn clean test 触发测试执行。
  • 多模块项目:为每个需要统计的模块都配置 JaCoCo 插件,或使用聚合/父 POM 统一管理执行与报告阶段。
  • 不修改 pom 的临时方式:
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install
  • 报告路径:默认 target/site/jacoco/index.html;若使用命令式生成,可随后执行 mvn jacoco:report。

其他工具选择

  • Cobertura:老牌工具,配置简单,报告默认在 target/site/cobertura/index.html;示例命令 mvn cobertura:cobertura。适合已有 Cobertura 流程的项目。
  • Emma:较早期工具,社区使用已减少,建议在新项目优先选择 JaCoCo。
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手