我在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才能使用? 感谢。
答案 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>