You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps中Jacoco代码覆盖率排除指定路径失效求助

解决Jacoco在Azure DevOps中排除指定路径的问题

你遇到的问题大概率是Jacoco通配符使用不正确导致的——你之前配置的-: com.ing.investment.remoteadvice.*.model.*只能匹配一级子包/类,而你的目标路径包含多级子结构,需要用**来匹配任意层级的内容。

正确的排除规则

针对你要排除的两个路径,应该使用以下两种写法之一:

方式1:斜杠分隔(更贴近文件路径)

-: com/ing/investment/remoteadvice/*/model/**
-: com/ing/investment/remoteadvice/*/enums/**

方式2:点分隔(更贴近包结构)

-: com.ing.investment.remoteadvice.*.model.**
-: com.ing.investment.remoteadvice.*.enums.**

这里的关键区别:

  • * 仅匹配单个层级的包或类
  • ** 匹配任意层级的子包、子类及所有嵌套内容

在Azure DevOps中的配置步骤

根据你使用的构建工具(Maven/Gradle),把规则添加到Jacoco插件的配置里:

Maven 配置示例

在pom.xml的jacoco-maven-plugin中加入excludes节点:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.10</version>
    <executions>
        <!-- 保留你已有的execution配置,比如prepare-agent、report等 -->
    </executions>
    <configuration>
        <excludes>
            <exclude>com/ing/investment/remoteadvice/*/model/**</exclude>
            <exclude>com/ing/investment/remoteadvice/*/enums/**</exclude>
        </excludes>
    </configuration>
</plugin>

Gradle 配置示例

在build.gradle的jacocoTestReport任务中添加excludes:

jacocoTestReport {
    reports {
        xml.required = true // 适配Azure DevOps的覆盖率导入
        html.required = true
    }
    excludes = [
        'com/ing/investment/remoteadvice/*/model/**',
        'com/ing/investment/remoteadvice/*/enums/**'
    ]
}

验证配置是否生效

  1. 重新触发Azure DevOps的构建任务,确保Jacoco报告被重新生成
  2. 打开构建后生成的Jacoco HTML报告,检查model和enums目录下的类是否已经从覆盖率统计中移除
  3. 如果仍未生效,检查包名/路径是否存在大小写错误,或者是否有其他Jacoco配置覆盖了当前规则

内容的提问来源于stack exchange,提问作者ramesh reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 08:02:35