1. ホーム
  2. sonarqube

JaCoCo SonarQube非互換バージョン1007

2023-07-16 03:08:16

質問

SonarQubeをコード品質管理に使用していますが、合格するはずのビルドが突然解析できなくなり、失敗してしまいます。

[INFO] [00:00:03.630] /mySuperProject/target/jacoco.exec を解析中 -> java.io.IOException: 互換性のないバージョン 1007

maven buildにdebugスイッチを入れて起動すると、この原因が明らかになります。

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;

これは何ですか? 互換性のない変更 とは何ですか? この課題を解決するためのアイデアはありますか?

どのように解決するのですか?

すでに述べたように、これは 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

これが、私たちを助けてくれた回避策でした。しかし、他の人と同じように、私はまだ修正版が来るのを待っているところです。