web-dev-qa-db-fra.com

JaCoCo SonarQube version incompatible 1007

J'utilise SonarQube pour le contrôle de la qualité du code et des constructions soudaines qui passeraient sinon ne peuvent pas être analysées et échouent. 

[INFO] [00: 00: 03.630] Analyse de /mySuperProject/target/jacoco.exec -> Java.io.IOException: version incompatible 1007

Lorsque j'appelle maven build avec un commutateur de débogage, cette cause est révélée

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)

Lors de l'inspection de jacoco ExecutionDataReader, j'ai constaté que cette exception est levée de 

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

et de ExecutionDataWriter j'ai découvert 

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

Qu'est-ce que ce changement incompatible et pourquoi cela se produit-il? Des idées pour résoudre ce problème?

77
Padvinder

Comme déjà mentionné, cela est dû à une rupture dans le code du plug-in JaCoCo maven . Vous pouvez (temporairement) spécifier la version dans votre commande jenkins maven comme suit:

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

par exemple.

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

C’est la solution de contournement qui nous a aidés. Mais comme la plupart des gens, j'attends toujours que le correctif arrive.

75
deketim

Ce que j'ai fait était de spécifier la version jacoco dans mon projet maven.

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

Cela corrige mon problème!

32
Rémi Roy

Cela est probablement dû à la dernière mise à jour de jacoco-maven-plugin. Tout fonctionnait sur 0.7.4.201502262128 mais aujourd'hui nous sommes passés à 0.7.5.201505241946, ce qui a entraîné cette erreur.

16
Karol Dowbecki

Essayez de mettre à jour le plug-in Java dans le centre de mise à jour SonarQube, cela fonctionne pour moi. J'ai mis à jour le plugin Java de la version 2.4 à la dernière version 3.13.1.

Centre de mise à jour SonarQube -> Mises à jour des plugins -> Java

6
dereck

Courir:

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

Cela recréera les fichiers .exec créés par les anciennes versions de jacoco.

6
Babken Vardanyan

Comme le mentionnait kdowbecki, cette erreur est probablement due à une mise à jour de jacoco-maven-plugin.

Votre SonarQube utilise probablement la nouvelle version de Jacoco Maven Plugin (probablement le nouveau 0.7.5.201505241946), mais tente en réalité de lire une ancienne version d’un fichier jacoco.exec (dans votre cas, il s'agit peut-être d'un fichier jacoco.exec généré par jacoco maven plugin version 0.7.4.201502262128) entraînant une incompatibilité générée par JaCoCo.

Pour résoudre ce problème, vous devez vous assurer que tous vos travaux SonarQube/Jenkins génèrent un rapport JaCoCo à chaque fois et ne comptez pas sur une version plus ancienne de jacoco.exec qui aurait pu être générée par un travail précédent.

2
Pom12

Pour moi cela, en faisant un mvn install

Error while creating report: Cannot read execution data version 0x1006. This version of JaCoCo uses execution data version 0x1007

signifiait que j'avais créé un archétype mais que celui-ci incluait accidentellement le répertoire cible contenant d'anciens fichiers jacoco (ou avait été coché dans git par accident). Faire un mvn en premier (et en vérifiant cela) a résolu le problème. Je suppose que jacoco est réticent à remplacer le fichier jacoco.exec par un nouveau fichier lorsqu'il n'y a pas de tests unitaires à exécuter ou quelque chose du genre, de sorte que l'ancien fichier est préservé et utilisé pour le rapport jacoco. FWIW ...

En général, cela signifie une incompatibilité version entre le générateur et le journaliste.

0
rogerdpack

J'ai changé pom.xml comme

groupId=org.jacoco
artifactId=jacoco-maven-plugin
version=0.8.4-SNAPSHOT

ça a fonctionné pour moi

0
Bhanu