我发现我的 Sonar 实例 5.1 或 5.1.1(带有最新的 sonar-runner 2.x)停止在项目的仪表板上显示部分单元测试信息(单元测试小部件)。
我拥有的属性是(在 Gradle 的 sonarRunner > sonarProperties 部分):
property "sonar.junit.reportsPath", "build/test-results/UT"
property "sonar.surefire.reportsPath", "build/test-results/UT"
要修复它,我还必须包含以下属性:
property "sonar.java.junit.reportsPath", "build/test-results/UT"
property "sonar.java.surefire.reportsPath", "build/test-results/UT"
仅供参考:我所有的单元测试报告都放在build/test-results/UT文件夹下,所有集成测试结果文件都放在 unedr build/test-results/IT文件夹等。
我想知道这是由于我使用的 Gradle 版本(2.3)还是由于 SonarQube 的更高版本(4.5+),因为我同时拥有 SQ 5.1 和 5.1.1 实例。我知道 SonarQube 团队从 SonarQube 版本 4.12 开始支持多语言
从 SonarQube 4.2 开始,可以对多语言项目进行分析。
现在,它提出了一个问题。对于基于 Groovy 的项目获取相同的单元测试信息,我需要使用:
property "sonar.groovy.junit.reportsPath", "build/test-results/UT"
property "sonar.groovy.surefire.reportsPath", "build/test-results/UT"
如果我的项目有 Groovy 代码而不是 java,类似的东西?
使用双引号搜索“**sonar.java.junit.reportPath ”** 显示在 Google 中未找到任何结果,如果我可以在不使用“双引号”的情况下再次运行搜索,它会迫使我尝试查看 google 结果(对于此属性)。
在 SonarQube 网站“搜索框”中执行相同操作显示:
没有找到sonar.java.junit.reportPath的结果。请尝试以下建议之一:
虽然在 Gradle 中,但在里面
sonarRunner task {
.. inside ..
sonarProperties {
... section ... where I define various sonar props..
}
...
}
我可以定义 sonar.junit.reportPath、sonar.java.junit.reportPath 以及类似的 sonar.surefire.reporPath 和 sonar.java.surefire.reportPath 并且在 Gradle 中运行 sonarRunner 任务时,它不会出错。因此,它让我相信属性变量是有效的。
对于基于 Java 和 Groovy 的混合项目(即 Java 中的源代码但 Groovy 中的测试),运行 sonarRunner 或独立 sonar-runner 命令也存在问题。设置sonar.language=java,grvy
没有帮助。我在 stackoverflow 上发布了这个问题,但到目前为止,我还没有完美的结果/答案来说明如何为 Groovy 项目启动和运行一个完整的声纳仪表板,就像我为 Java 项目获得的一样。
Groovy 项目 - Sonar - 发布项目和单元 + 集成测试代码覆盖率数据
PS:我尝试了各种设置声纳的值。. 变量(就声纳源、测试等属性而言,他们已在其网站的文档部分提到)