java – Sonarqube:查看覆盖源的单元测试

我们在Bamboo中有一个CI设置,它运行Junit测试并使用Jacoco计算单元测试覆盖率.然后我们运行Sonar插件进行源代码分析.一切都很好,我们可以看到SonarCube服务器上的分析,包括覆盖范围,但我们希望确切地看到哪些测试覆盖了某些代码行.现在它只是说:由单元测试覆盖.

有没有办法做到这一点?

解决方法:

我在示例声纳项目中找到了答案:https://github.com/SonarSource/sonar-examples/tree/master/projects/languages/java/code-coverage/ut/ut-maven-jacoco.

Jacoco监听器必须配置为surefire插件.

     <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>

和依赖添加:

   <dependency>
      <groupId>org.sonarsource.java</groupId>
      <artifactId>sonar-jacoco-listeners</artifactId>
      <version>3.8</version>
      <scope>test</scope>
    </dependency>

还需要声纳插件的以下参数的某些组合:

sonar.java.surefire.reportspath 
sonar.junit.reportsPath
sonar.tests=src/test

最后一个签署了这笔交易

上一篇:java – SonarQube警告“单元测试的分支覆盖率不足”


下一篇:Kubernetes AdmissionWebhook匹配请求