2015-05-26 4 views
74

Я использую SonarQube для контроля качества кода, и вдруг сборки, которые в противном случае прошли бы, не могут быть проанализированы и не пройдены.JaCoCo SonarQube несовместимая версия 1007

[INFO] [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 стороне Java Plugin: http://jira.codehaus.org/browse/SONARJAVA-1091 и должно быть зафиксировано в следующем выпуске. Это нарушение на стороне JaCoCo. Давайте немного потрудиться, чтобы исправить это. – benzonico

ответ

73

Как уже упоминалось, это связано с перерывом в коде плагина JaCoCo maven. Вы можете (временно) указать версию в вашей Дженкинс команды 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

+0

Закрытая проблема JaCoCo: http://jira.sonarsource.com/browse/SONARJAVA-1091 –

+1

Это исправлено в последней версии Java-модуля SonarQube –

16

Скорее всего это вызвано последним обновлением jacoco-maven-plugin. Все работало на 0.7.4.201502262128, но сегодня мы переключились на 0.7.5.201505241946, что привело к этой ошибке.

+0

Я тоже это вижу. У вас есть больше информации об этом? –

1

Как упоминалось в 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, которая могла быть сгенерирована предыдущим заданием.

29

Что я сделал, это указать версию jacoco в моем проекте 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> 

Это исправить мою проблему!

+0

Да, это сработало. Благодарю. – djangofan

5

Пробег:

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.

4

Попробуйте обновить плагин Java в Центре обновления SonarQube, это работает для меня.Я обновил плагин Java с версии 2.4 до последней версии 3.13.1.

Центр обновления SonarQube -> Plugin Updates -> Java

Смежные вопросы