Pregunta JaCoCo SonarQube versión incompatible 1007


Estoy usando SonarQube para el control de calidad del código y, de repente, las compilaciones que de lo contrario pasarían no pueden analizarse y fallan.

[INFO] [00: 00: 03.630] Analizando /mySuperProject/target/jacoco.exec ->   java.io.IOException: versión incompatible 1007

Cuando invoco maven build con el interruptor de depuración, esta causa se revela

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)

Al inspeccionar el ExecutionDataReader de jacoco, descubrí que se lanza una excepción

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

y de ExecutionDataWriter me enteré

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

Que es esto cambio incompatible y por qué sucede? ¿Alguna idea de cómo solucionar este desafío?


74
2018-05-26 12:57


origen


Respuestas:


Como ya se mencionó, esto se debe a una interrupción en el código de complemento de JaCoCo maven. Puedes (temporalmente) especificar la versión en tu comando jenkins maven como:

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

p.ej.

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

Esta fue la solución que nos ayudó. Pero como la mayoría de las personas, todavía estoy esperando que llegue la solución.


74
2018-05-26 19:10



Lo que hice fue especificar la versión de jacoco en mi proyecto de 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>

Eso soluciona mi problema!


31
2018-05-26 13:45



Lo más probable es que se deba a la última actualización de jacoco-maven-plugin. Todo funcionaba en 0.7.4.201502262128 pero hoy cambiamos a 0.7.5.201505241946, lo que dio como resultado este error.


16
2018-05-26 13:16



Correr:

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

Esto volverá a generar .exec archivos creados por versiones anteriores de jacoco.


6
2017-10-21 16:56



Intenta actualizar el complemento de Java en SonarQube Update Center; esto funciona para mí. Actualicé el plugin de Java de la versión 2.4 a la última 3.13.1.

SonarQube Update Center -> Actualizaciones de complementos -> Java


6
2018-05-10 08:03



Como lo mencionó kdowbecki, este error probablemente se deba a una actualización de jacoco-maven-plugin.

Su SonarQube probablemente esté utilizando la nueva versión de Jacoco Maven Plugin (probablemente el nuevo 0.7.5.201505241946), pero en realidad está tratando de leer una versión anterior de un jacoco.exec (en su caso, podría estar leyendo un jacoco.exec generado por jacoco maven plugin versión 0.7.4.201502262128) que resulta en una incompatibilidad lanzada por JaCoCo.

Para solucionar este problema, debe asegurarse de que todos sus trabajos de SonarQube / Jenkins generen un informe de JaCoCo cada vez y no confíe en una versión anterior de jacoco.exec que pueda haber sido generada por un trabajo anterior.


2
2018-05-26 13:39