我发现我的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文件夹下,所有集成测试结果文件都在build/test-results/IT文件夹下,等等。
我想知道这是由于Gradle版本,我正在使用(2.3)或它是由于SonarQube(4.5+)的更新版本,因为我有sq5.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"**使用双引号显示在谷歌中没有发现结果,它迫使我尝试查看谷歌结果,如果我可以再次运行搜索而不使用"双引号(用于此属性)。
在SonarQube网站做同样的"搜索框"显示:
sonar.java.junit.reportPath未找到结果。请尝试以下建议之一:
虽然在Gradle中,inside
sonarRunner task {
.. inside ..
sonarProperties {
... section ... where I define various sonar props..
}
...
}
我可以定义sonar.junit。同样,sonar.java.junit.reportPath和sonar.surefire. reportPath和sonar.java.surefire.reportPath在Gradle中运行sonarRunner任务时,它不会出错。因此,它使我相信属性变量是有效的。
对于一个基于Java和Groovy的混合项目,运行sonarRunner或独立的sonar-runner命令也有问题(例如,源代码在Java中,测试在Groovy中)。设置sonar.language=java,grvy
没有帮助。我在stackoverflow上发布了这个问题,但是到目前为止,我还没有一个完美的结果/答案,关于如何像在Java项目中那样为Groovy项目启动和运行一个完整的声纳仪表板。
Groovy项目- Sonar -发布项目和单元+集成测试代码覆盖率数据
PS:我已经尝试了设置声纳的各种值。。变量(就声纳源、测试等属性而言,他们在网站的文档部分提到过)
目前使用的唯一有效属性是sonar.junit.reportsPath
,它将告诉java sonarqube插件在哪里导入单元测试的结果。
对于groovy,这是正在进行的工作,参见:http://jira.sonarsource.com/browse/SONARGROOV-2
您提到的所有其他属性都不存在,也没有被考虑在内。