SonarQube - 没有倾倒JaCoCo执行数据

时间:2014-04-06 15:04:39

标签: jenkins-plugins sonarqube jacoco

我在jenkins工作中运行SonarQube(使用Post-build Actions)。 我遇到了JaCoCo的以下问题 -

[INFO] [16:57:43.157] Sensor JaCoCoSensor...
[INFO] [16:57:43.157] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/.../target/jacoco.exec
[INFO] [16:57:43.426] Sensor JaCoCoSensor done: 269 ms

因此,我的项目获得了0%的代码覆盖率。 无法找到未创建jacoco.exec的原因。

我没有" JaCoCo"配置为由maven运行(在我的pom.xml中)。 我知道在过去jacoco.exec无论如何都是创建的(可能是Sonar本身)。

我做错了什么?我是否需要在我的pom.xml中配置JaCoCo才能使用? 感谢。

2 个答案:

答案 0 :(得分:4)

来自网络Java Ecosystem

  

不再可能让SonarQube驱动执行   单元测试。您现在必须生成JUnit和代码覆盖率   (JaCoCo或Cobertura或Clover)在SonarQube之前报告   分析,然后向SonarQube提供这些报告。

所以你需要在pom.xml中包含Jacoco:

   <plugin>
       <groupId>org.jacoco</groupId>
       <artifactId>jacoco-maven-plugin</artifactId>
       <version>0.7.0.201403182114</version>
   <configuration>
       <destFile>${basedir}/target/jacoco-unit.exec</destFile>
       <dataFile>${basedir}/target/jacoco-unit.exec</dataFile>
   </configuration>
       <executions>
           ...
       </executions>
   </plugin>

将此数据文件提供给SonarQube:

sonar.jacoco.reportPath=target/jacoco-unit.exec

答案 1 :(得分:1)

根据此blog,您可以通过将以下插件部分添加到jacoco.exec(它对我有用)来启用pom.xml文件的创建:

<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.7.1.201405082137</version>
    <executions>
        <execution>
            <goals>
                <goal>prepare-agent</goal>
            </goals>
        </execution>
    </executions>
</plugin>