2014-04-06 75 views
8

我在jenkins工作中使用SonarQube(使用Post-build Actions)。 我與JaCoCo發現了以下問題 -SonarQube - 沒有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是無論如何創建(可能由聲納本身)。

我在做什麼錯?我需要在我的pom.xml中配置JaCoCo才能使用它? 謝謝。

+0

你看過https://github.com/SonarSource/sonar-examples/tree/1fca5c965196c0f30ef8fa4c79ace36b40ec3753/projects/languages/java/code-coverage/ut/ut-maven-jacoco-runTests? – ZhekaKozlov

+0

我應該如何將它與我的jenkins工作一起使用? 我應該在作業配置中使用「-Pcoverage-per-test」? –

回答

4

從網絡Java Ecosystem

它不再可能讓SonarQube驅動 單元測試的執行。您現在必須在SonarQube 分析之前生成JUnit和代碼覆蓋率 (JaCoCo或Cobertura或Clover)報告,然後向SonarQube提供這些報告。

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

<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

根據這一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>