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() } }
额外注意事项
- 确保路径拼写和项目源码结构完全一致,避免因路径错误导致排除失效
- 执行
gradle clean sonar命令,清理缓存后再重新扫描,避免旧配置残留 - 如果SonarCloud项目后台(网页端)也配置了排除规则,要和本地配置保持一致,否则可能出现冲突
内容的提问来源于stack exchange,提问作者Aleksei Litvin
相关产品推荐
相关产品推荐

