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

Gradle JaCoCo排除规则未被SonarCloud识别,如何让其忽略指定文件夹?

解决SonarCloud未忽略JaCoCo排除文件夹的问题

你通过Gradle JaCoCo插件配置了排除列表,让这些文件夹不参与测试覆盖率计算,但执行gradle sonar后SonarCloud仍在处理这些文件——这是因为JaCoCo的排除规则只作用于自身的覆盖率报告,不会自动同步到SonarCloud的扫描逻辑,必须单独给SonarQube Gradle插件添加排除配置。

方案一:直接排除SonarCloud扫描目标

在build.gradle中添加SonarQube插件的配置块,用sonar.exclusions指定需要彻底忽略的文件路径,这样SonarCloud不会扫描这些文件的任何指标(包括代码质量、覆盖率):

sonarqube {
    properties {
        property "sonar.exclusions", """
            by/litvin/localsandbox/model/**/*,
            by/litvin/localsandbox/mapper/**/*,
            by/litvin/localsandbox/data/**/*,
            by/litvin/localsandbox/messaging/event/**/*,
            by/litvin/localsandbox/messaging/serializer/**/*,
            by/litvin/localsandbox/config/**/*,
            by/litvin/localsandbox/LocalSandboxApplication.*
        """.trim()
    }
}

注意路径用**/*匹配目录下所有层级的文件,而不是你之前用的/*(后者仅匹配当前目录的直接文件,子目录文件不会被排除)。

方案二:仅忽略覆盖率统计(保留代码质量扫描)

如果你希望SonarCloud继续扫描这些文件的代码质量,只是忽略覆盖率统计,就用sonar.coverage.exclusions代替:

sonarqube {
    properties {
        property "sonar.coverage.exclusions", """
            by/litvin/localsandbox/model/**/*,
            by/litvin/localsandbox/mapper/**/*,
            by/litvin/localsandbox/data/**/*,
            by/litvin/localsandbox/messaging/event/**/*,
            by/litvin/localsandbox/messaging/serializer/**/*,
            by/litvin/localsandbox/config/**/*,
            by/litvin/localsandbox/LocalSandboxApplication.*
        """.trim()
    }
}

额外注意事项

  1. 确保路径拼写和项目源码结构完全一致,避免因路径错误导致排除失效
  2. 执行gradle clean sonar命令,清理缓存后再重新扫描,避免旧配置残留
  3. 如果SonarCloud项目后台(网页端)也配置了排除规则,要和本地配置保持一致,否则可能出现冲突

内容的提问来源于stack exchange,提问作者Aleksei Litvin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:28:25