JaCoCo SonarQube 비 호환 버전 1007


78

저는 코드 품질 관리를 위해 SonarQube를 사용하고 있으며, 그렇지 않으면 통과 할 수있는 빌드를 갑자기 분석 할 수없고 실패합니다.

[정보] [00 : 00 : 03.630] /mySuperProject/target/jacoco.exec 분석 중-> java.io.IOException : 호환되지 않는 버전 1007

디버그 스위치로 maven 빌드를 호출하면이 원인이 드러납니다.

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)

jacoco ExecutionDataReader를 검사하는 동안 예외가 발생하는 것을 발견했습니다.

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

그리고 ExecutionDataWriter에서 나는

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

호환되지 않는 변경 은 무엇 이며 왜 발생합니까? 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?


5
SonarQube 자바 플러그인 측에서 문제가 발생했습니다 : jira.codehaus.org/browse/SONARJAVA-1091 , 다음 릴리스에서 수정되어야합니다. 이것은 JaCoCo 측의 주요 변경 사항입니다. 문제를 해결할 수 있도록 잠시 시간을 내십시오.
benzonico

답변:


77

이미 언급했듯이 이는 JaCoCo maven 플러그인 코드가 중단 되었기 때문입니다. (일시적으로) jenkins maven 명령에서 다음과 같이 버전을 지정할 수 있습니다.

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

예 :

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

이것이 우리에게 도움이 된 해결 방법이었습니다. 그러나 대부분의 사람들과 마찬가지로 나는 여전히 해결책이 오기를 기다리고 있습니다.


1
지금까지 가장 깨끗한 솔루션이었던 많은 하위 프로젝트가있는 환경에서 멋진 트릭
Padvinder

1
이것은 SonarQube 자바 플러그인의 최신 버전에서 해결
thomas.mc.work

1
SonarQube 5.1.1에서 여전히이 오류가 발생합니다. 최신 SonarQube Java 플러그인을 강제하는 방법은 무엇입니까?
davidfmatheson

3
내 SonarQube 인스턴스 <SONAR_URL> / updatecenter / updates
davidfmatheson

32

내가 한 일은 내 maven 프로젝트에서 jacoco 버전을 지정하는 것이 었습니다.

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

내 문제가 해결되었습니다!


17

최신 jacoco-maven-plugin 업데이트로 인해 발생했을 가능성이 높습니다. 모든 것이 0.7.4.201502262128에서 작동했지만 오늘은 0.7.5.201505241946으로 전환하여이 오류가 발생했습니다.


나는 이것도보고있다. 이것에 대한 더 많은 정보가 있습니까?
자레드 버로우

6

운영:

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

이렇게하면 .exec이전 버전의 jacoco에서 만든 파일 이 다시 생성됩니다.


6

SonarQube Update Center에서 Java 플러그인을 업데이트하십시오. Java 플러그인을 버전 2.4에서 최신 3.13.1로 업데이트했습니다.

SonarQube 업데이트 센터-> 플러그인 업데이트-> Java


2

kdowbecki가 언급했듯이이 오류는 jacoco-maven-plugin의 업데이트로 인한 것 같습니다.

SonarQube는 현재 Jacoco Maven 플러그인의 새 버전 (아마 새 0.7.5.201505241946)을 사용하고있을 가능성이 높지만 실제로는 이전 버전의 jacoco.exec를 읽으려고합니다 (귀하의 경우에는 다음에서 생성 된 jacoco.exec를 읽을 수 있습니다. jacoco maven 플러그인 버전 0.7.4.201502262128)로 인해 JaCoCo에서 비 호환성이 발생합니다.

이 문제를 해결하려면 모든 SonarQube / Jenkins 작업이 매번 JaCoCo 보고서를 생성하는지 확인하고 이전 작업에서 생성되었을 수있는 이전 버전의 jacoco.exec에 의존하지 않아야합니다.


0

나를 위해, 할 때 mvn install

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

내가 아키 타입 생성을했지만 아키 타입이 실수로 오래된 jacoco 파일이있는 대상 디렉토리를 포함했음을 의미합니다 (또는 실수로 git에 체크인되었습니다). 먼저 mvn clean을 수행하고 확인하면 문제가 해결되었습니다. jacoco는 실행할 단위 테스트가 없거나 이와 유사한 것이 없을 때 jacoco.exec 파일을 새 파일로 덮어 쓰는 것을 꺼리므로 이전 파일이 보존되고 jacoco 보고서에 사용하려고 시도합니다. FWIW ...

일반적으로 생성기와보고자 의 버전이 일치하지 않음 을 의미합니다 .


0

pom.xml을 다음과 같이 변경했습니다.

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

그것은 나를 위해 일했다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.