sonar.coverage.jacoco.xmlReportPaths属性通配符支持未按预期生效问题
SonarQube jacoco.xml通配符配置不生效的常见原因
你配置的
sonar.coverage.jacoco.xmlReportPaths=**/jacoco.xml不生效、仅绝对路径可用的问题,通常由以下几个原因导致:
- 通配符匹配基于扫描执行的工作目录计算
通配符路径是相对于SonarQube扫描命令执行时的工作目录进行匹配,而非系统根目录或固定的项目根目录。如果你的jacoco.xml生成在子模块的深层目录(比如子模块名/target/site/jacoco/jacoco.xml),仅配置**/jacoco.xml可能会因为扫描器的层级匹配限制、或中间目录被排除规则拦截,导致匹配失败。如果在父工程目录执行扫描,建议写全路径后缀的通配符,比如**/target/site/jacoco/jacoco.xml。 - 版本兼容性问题
SonarQube 7.x及更早版本对多层级通配符**的支持存在已知缺陷,该属性的通配符匹配逻辑在8.5及以上稳定版本才完成统一修复。如果你使用的是低版本的SonarQube服务端、或sonar-scanner扫描器,都会出现通配符不生效的问题。 - 排除规则拦截了匹配路径
如果你在SonarQube配置中设置了sonar.exclusions、sonar.coverage.exclusions规则,且规则匹配到了jacoco.xml所在的目录,扫描器会直接忽略该路径下的所有文件,即使通配符配置正确也无法识别到覆盖率文件。 - 扫描进程无文件读取权限
如果jacoco.xml所在目录的读权限没有开放给SonarQube扫描进程,扫描器会跳过该文件,最终表现为覆盖率为0,和通配符不生效的表现完全一致。
你可以在扫描命令中添加-X参数开启调试日志,搜索JaCoCoSensor相关的日志条目,就能直接看到扫描器实际匹配到的覆盖率文件路径,快速定位是匹配失败还是读取失败。
内容的提问来源于stack exchange,提问作者Sai
相关产品推荐
相关产品推荐

