2014-04-06 16 views
8

Tôi đang chạy SonarQube trong công việc jenkins (sử dụng Hành động sau xây dựng). tôi nhận được vấn đề sau đây với JaCoCo -SonarQube - không có dữ liệu thực thi JaCoCo nào đã bị bán phá giá

[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 

Kết quả là, tôi nhận được mã số bảo hiểm 0% đối với các dự án của tôi. Không thể tìm thấy lý do tại sao jacoco.exec không được tạo.

Tôi không có "JaCoCo" được định cấu hình để chạy bởi maven (trong tệp pom.xml của tôi). Tôi biết rằng trong quá khứ các jacoco.exec đã được tạo ra anyway (có lẽ bởi Sonar chính nó).

Tôi đang làm gì sai? Tôi có cần cấu hình JaCoCo trong tệp pom.xml của mình để nó hoạt động không? Cảm ơn.

+0

Bạn đã xem https://github.com/SonarSource/sonar-examples/tree/1fca5c965196c0f30ef8fa4c79ace36b40ec3753/projects/languages/java/code-coverage/ut/ut-maven-jacoco-runTests chưa? – ZhekaKozlov

+0

Tôi nên sử dụng nó bằng công việc jenkins của mình như thế nào? Tôi nên sử dụng "-Pcoverage-per-test" trong cấu hình công việc ở đâu? –

Trả lời

4

Từ web Java Ecosystem:

Nó không còn có thể để cho SonarQube lái xe thực hiện các kiểm tra đơn vị. Bây giờ bạn phải tạo JUnit và mã bảo hiểm (JaCoCo hoặc Cobertura hoặc Clover) báo cáo trước khi phân tích SonarQube và sau đó nạp SonarQube với các báo cáo đó.

Vì vậy, bạn cần phải bao gồm Jacoco trong 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> 

Và cung cấp cho tập tin dữ liệu này để SonarQube:

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

Theo blog này, bạn có thể kích hoạt việc tạo ra jacoco.exec tệp bằng cách thêm phần plugin sau vào số pom.xml của bạn (nó hoạt động cho tôi):

<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> 
Các vấn đề liên quan