0

我发现我的 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:我尝试了各种设置声纳的值。. 变量(就声纳源、测试等属性而言,他们已在其网站的文档部分提到)

4

1 回答 1

0

目前唯一有效的属性是sonar.junit.reportsPath告诉java sonarqube 插件在哪里导入单元测试的结果。

对于 groovy,这是正在进行的工作,请参阅:http: //jira.sonarsource.com/browse/SONARGROOV-2

您提到的所有其他属性都不存在,也没有考虑在内。

于 2015-07-29T08:31:36.250 回答