8

我有一个关于声纳预览模式下的代码覆盖率的问题。

我正在尝试为我们的项目配置声纳并探索声纳的预览和增量模式。我们的想法是在 CI 中由我们的开发人员管理的功能分支中以连续的方式运行它们。目标是在不压倒我们的 sonarcube 及其数据库的情况下为他们提供代码质量的线索。

我看到在预览模式下运行声纳时,它会生成 json 格式的报告,因为我坚持默认设置,它位于:

target\sonar\sonar-report.json

但是,此报告不包含有关代码覆盖率的任何信息,仅包含有关违规的信息。

所以,我的问题是如何在预览和增量模式下运行声纳时包含有关覆盖范围的信息?

互联网上有很多半正确的答案,但到目前为止我找不到有效的解决方案。

我使用最新可用的声纳立方体 (5.1.2) Maven 3.3.3 是我们的构建工具。

覆盖是 jacoco 驱动的,所以我运行以下命令:

自己运行测试

mvn org.jacoco:jacoco-maven-plugin:0.7.4.201502262128:prepare-agent clean install -Pcoverage-per-test

运行声纳:

mvn sonar:sonar -Dsonar.dynamicAnalysis=reuseReports -Dsonar.analysis.mode=preview -Dsonar.java.coveragePlugin=jacoco

至于 coverage-per-test 配置文件,我有以下配置:

<profile>
  <id>coverage-per-test</id>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <!-- Minimal supported version is 2.4 -->
        <version>2.13</version>
        <configuration>
          <properties>
            <property>
              <name>listener</name>
              <value>org.sonar.java.jacoco.JUnitListener</value>
            </property>
          </properties>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>org.codehaus.sonar-plugins.java</groupId>
      <artifactId>sonar-jacoco-listeners</artifactId>
      <version>1.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</profile>

我几乎是声纳世界的新手,所以任何帮助都将不胜感激。

非常感谢提前

4

1 回答 1

0

我将为通过预览模式搜索自己的问题而发现此问题的任何人添加答案:

我不相信预览模式用于记录结果,而是用于在合并之前评论功能分支上的问题等。

我在管道中处理这种情况的方式是我们构建模块并像 OP 一样预先收集覆盖数据,然后类似地重用来自 JaCoCo 的报告。然而不同的是,我们实际上是先进行预览模式分析,然后再进行全面分析,因为它做起来如此之快。

于 2018-06-15T13:18:22.117 回答