Sonarqube + Jacoco - 声纳不会从属性中读取报告路径

Posted

技术标签:

【中文标题】Sonarqube + Jacoco - 声纳不会从属性中读取报告路径【英文标题】:Sonarqube + Jacoco - sonar does not read report path from properties 【发布时间】:2018-09-15 01:49:25 【问题描述】:

声纳扫描仪 - 3.1

Java 1.7

我正在尝试配置声纳属性以从多模块项目中获得覆盖。覆盖是在路径下生成的:Module/build/jacoco/test.exec,所以我想根据文档将它添加到sonar.properties文件中:

https://docs.sonarqube.org/display/PLUG/Code+Coverage+by+Unit+Tests+for+Java+Project

sonar.java.coveragePlugin=jacoco

sonar.jacoco.reportPaths=**/build/jacoco/*.exec

即使使用绝对路径,我也在尝试不同的组合,但似乎 sonar-scanner 根本看不到这个属性,并且总是查看默认路径。我总是在日志中获得以下信息:

INFO: JaCoCoSensor: JaCoCo report not found : path\target\jacoco.exec

INFO: JaCoCoSensor: JaCoCo IT report not found: path\target\jacoco-it.exec

它确实会从文件中读取其他属性,例如登录名、密码、语言、来源等。

此外,该项目基于 Gradle。

【问题讨论】:

【参考方案1】:

如果您使用 Gradle 构建,您应该 Analyze with Gradle。具体来说,不需要sonar-project.properties 文件。相反,您可以在 build.gradle 中配置 SonarQube 插件,其中大部分应该正常工作

【讨论】:

所以我实际上是在尝试用 gradle 来做,我已经为所有其他支持 Java 8 的项目进行了配置。它工作得很好,配置简单明了,但是当涉及到 java 中的项目时7 我在项目和不支持 java 7 的 sonarqube 之间遇到版本冲突。因此需要在 Java 7 中构建项目才能进行扫描,并且 sonarqube 需要 java 8,这给了我标准 java 错误:不支持的 major.minor 版本 52.0。据我所知,我们的服务器版本也设置为 Java 8。有什么我缺少的东西以及更好的方法吗?【参考方案2】:

您使用哪个版本的声纳?如果版本低于 6.2,则必须使用 sonar.jacoco.reportPath(不带 s)。

我不认为通配符被接受,所以如果 exec 在路径 Module/build/jacoco/test.exec 下,参数应该是:sonar.jacoco.reportPath=build/jacoco/test.exec

【讨论】:

以上是关于Sonarqube + Jacoco - 声纳不会从属性中读取报告路径的主要内容,如果未能解决你的问题,请参考以下文章

SonarQube + Jacoco - 无法读取 Koin 模块测试覆盖率

多个 Maven 模块声纳代码覆盖率在 sonarqube 中显示为零

SonarQube 是不是总是需要外部代码覆盖工具来显示声纳服务器上的覆盖范围?

SonarQube 没有获得单元测试覆盖率

Kotlin Setup 的 Sonar Jacoco 不生成代码覆盖率

声纳 jacoco hybris