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 是不是总是需要外部代码覆盖工具来显示声纳服务器上的覆盖范围?