2015-05-26 4 views
74

Ich benutze SonarQube für die Codequalitätskontrolle und plötzlich baut, dass sonst Pass kann nicht analysiert werden und schlägt fehl.JaCoCo SonarQube inkompatible Version 1007

[INFO] [00: 00: 03,630] Analyzing /mySuperProject/target/jacoco.exec -> java.io.IOException: Inkompatible Version 1007

Wenn ich rufe Maven mit Debug bauen Schalter, diese Ursache enthüllt

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) 

Während jacoco ExecutionDataReader Inspektion, fand ich, dass Ausnahme von

geworfen wird

und von ExecutionDataWriter habe ich herausgefunden

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

Was ist die inkompatible Änderung und warum ist es passiert? Irgendwelche Ideen, um diese Herausforderung zu beheben?

+5

Ausgabe hat auf Sonarqube Java Plugin Seite angehoben worden: http://jira.codehaus.org/browse/SONARJAVA-1091 und sollte in der nächsten Version behoben werden. Dies ist eine bahnbrechende Veränderung auf der Seite von JaCoCo. Lassen Sie uns ein wenig Zeit, um es zu beheben. – benzonico

Antwort

73

Wie bereits erwähnt, ist dies auf einen Bruch in JaCoCo maven Plugin-Code zurückzuführen. Sie können (vorübergehend) angeben, die Version in Ihrem jenkins Maven Kommando:

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

z.B.

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

Dies war die Abhilfe, die uns geholfen haben. Aber wie die meisten Leute warte ich immer noch darauf, dass der Fix kommt.

+1

Netter Trick, in der Umgebung mit vielen Teilprojekten, die bis jetzt die sauberste Lösung war – Padvinder

+0

Closed JaCoCo Problem: http://jira.sonarsource.com/browse/SONARJAVA-1091 –

+1

Dies ist in der neuesten Version des SonarQube Java PlugIn –

16

Höchstwahrscheinlich wird dies durch das neueste jacoco-maven-plugin update verursacht. Alles funktionierte am 0.7.4.201502262128, aber heute wechselten wir zu 0.7.5.201505241946, was zu diesem Fehler führte.

+0

Ich sehe das auch. Haben Sie weitere Informationen dazu? –

1

Wie kdowbecki es erwähnt, ist dieser Fehler höchstwahrscheinlich auf ein Update von jacoco-maven-plugin zurückzuführen.

Ihr SonarQube verwendet höchstwahrscheinlich jetzt die neue Version von Jacoco Maven Plugin (wahrscheinlich die neue Version 0.7.5.201505241946), versucht aber tatsächlich, eine alte Version einer jacoco.exec zu lesen (in Ihrem Fall könnte es ein Jacoco sein) .exec generiert von jacoco maven plugin Version 0.7.4.201502262128), was zu einer von JaCoCo geworfenen Inkompatibilität führt.

Um dieses Problem zu beheben, sollten Sie sicherstellen, dass alle Ihre SonarQube/Jenkins-Jobs jedes Mal einen JaCoCo-Bericht generieren und nicht auf einer älteren Version von jacoco.exec beruhen, die möglicherweise von einem früheren Job generiert wurde.

29

Was ich getan habe, war die jacoco-Version in meinem Maven-Projekt anzugeben.

<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> 

Das behebt mein Problem!

+0

Ja, das hat funktioniert. Vielen Dank. – 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 

Dies wird neu generieren .exec Dateien von älteren Versionen von jacoco erstellt.

4

Versuchen Sie, das Java-Plugin im SonarQube Update Center zu aktualisieren, das funktioniert für mich.Ich habe das Java-Plugin von Version 2.4 auf die neueste Version 3.13.1 aktualisiert.

Sonarqube Update Center -> Plugin Updates -> Java