2015-05-26 16 views
74

Tôi đang sử dụng SonarQube để kiểm soát chất lượng mã và đột nhiên xây dựng mà nếu không vượt qua không thể được phân tích và thất bại.JaCoCo SonarQube phiên bản không tương thích 1007

[INFO] [00: 00: 03,630] Phân tích /mySuperProject/target/jacoco.exec -> java.io.IOException: Không tương thích phiên bản 1007

Khi tôi gọi maven xây dựng với debug công tắc, nguyên nhân này được tiết lộ

Caused by: java.io.IOException: Incompatible version 1007. 
at org.jacoco.core.data.ExecutionDataReader.readHeader(ExecutionDataReader.java:127) 
at org.jacoco.core.data.ExecutionDataReader.readBlock(ExecutionDataReader.java:107) 
at org.jacoco.core.data.ExecutionDataReader.read(ExecutionDataReader.java:87) 
at org.sonar.plugins.jacoco.AbstractAnalyzer.readExecutionData(AbstractAnalyzer.java:134) 
at org.sonar.plugins.jacoco.AbstractAnalyzer.analyse(AbstractAnalyzer.java:107) 

Trong khi kiểm tra jacoco ExecutionDataReader, tôi thấy ngoại lệ được ném từ

if (version != ExecutionDataWriter.FORMAT_VERSION) { 
    throw new IOException(format("Incompatible version %x.",Integer.valueOf(version))); 
} 

và từ ExecutionDataWriter Tôi đã phát hiện ra

/** File format version, will be incremented for each incompatible change. */ 
public static final char FORMAT_VERSION = 0x1007; 

này thay đổi không tương thích là gì và tại sao nó xảy ra? Bất kỳ ý tưởng nào về cách khắc phục thử thách này?

+5

Issue đã được nâng lên trên SonarQube bên java plugin: http://jira.codehaus.org/browse/SONARJAVA-1091 và cần được cố định trong phiên bản tiếp theo. Đây là một thay đổi đột phá về phía JaCoCo. Hãy để chúng tôi một chút thời gian để có thể sửa chữa nó. – benzonico

Trả lời

73

Như đã đề cập, điều này là do sự cố trong mã trình cắm maven JaCoCo. Bạn có thể (tạm thời) chỉ định phiên bản trong lệnh maven jenkins của bạn như:

clean org.jacoco:jacoco-maven-plugin:<version>:prepare-agent install 

ví dụ:

clean org.jacoco:jacoco-maven-plugin:0.7.4.201502262128:prepare-agent install 

Đây là giải pháp giúp chúng tôi. Nhưng cũng giống như hầu hết mọi người, tôi vẫn đang chờ đợi sự sửa chữa.

+1

Mẹo hay, trong môi trường có nhiều tiểu dự án là giải pháp sạch nhất cho đến nay – Padvinder

+0

Sự cố đã đóng của JaCoCo: http://jira.sonarsource.com/browse/SONARJAVA-1091 –

+1

Điều này được sửa trong phiên bản mới nhất của SonarQube Java PlugIn –

16

Rất có thể đó là do cập nhật plugin mới nhất của jacoco-maven-plugin. Mọi thứ đã hoạt động trên 0.7.4.201502262128 nhưng hôm nay chúng tôi chuyển sang 0.7.5.201505241946 dẫn đến lỗi này.

+0

Tôi cũng thấy điều này. Bạn có thêm thông tin về điều này không? –

1

Như kdowbecki đã đề cập đến nó, lỗi này rất có thể là do bản cập nhật của plugin jacoco-maven.

SonarQube của bạn rất có thể hiện đang sử dụng phiên bản mới của Plugin Jacoco Maven (có lẽ là 0.7.5.201505241946 mới) nhưng thực sự đang cố gắng đọc phiên bản cũ của một jacoco.exec (trong trường hợp của bạn có thể đọc một câu đố .exec được tạo bởi jacoco maven plugin phiên bản 0.7.4.201502262128) dẫn đến sự không tương thích được ném bởi JaCoCo. Để khắc phục vấn đề này, bạn nên đảm bảo rằng tất cả các công việc SonarQube/Jenkins của bạn tạo báo cáo JaCoCo mỗi lần và không dựa vào phiên bản cũ hơn của jacoco.exec có thể đã được tạo bởi công việc trước đó.

29

Điều tôi đã làm là chỉ định phiên bản jacoco trong dự án maven của tôi.

<jacoco-maven-plugin.version>0.7.4.201502262128</jacoco-maven-plugin.version> 

    <plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>${jacoco-maven-plugin.version}</version> 
    </plugin> 

Điều đó khắc phục được sự cố của tôi!

+0

Vâng, điều đó đã hiệu quả. Cảm ơn. – djangofan

5

Run:

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install 
mvn org.jacoco:jacoco-maven-plugin:prepare-agent clean install -Pcoverage-per-test 
mvn sonar:sonar 

này sẽ tái tạo .exec file được tạo bởi phiên bản cũ của jacoco.

4

Hãy thử cập nhật plugin Java trong Trung tâm cập nhật SonarQube, điều này phù hợp với tôi.Tôi đã cập nhật plugin Java từ phiên bản 2.4 lên phiên bản 3.13.1 mới nhất.

Update Center SonarQube -> Plugin cập nhật -> Java

Các vấn đề liên quan