Как заставить Jenkins, Sonar и плагин JaCoCo работать вместе для проектов плагинов Eclipse Tycho (или, может быть, Cobertura)?

моя настройка:

  • Дженкинс 1.448
  • Сонар 2.13
  • Плагин Jenkins Sonar 1.72
  • база данных MySql для Sonar

У меня есть следующий проект:

  • Проект плагина Eclipse
  • используя Maven
  • несколько модулей (родительский проект maven, проект исходного плагина, проект тестового фрагмента)
  • простой тест JUnit, тестирующий класс исходного проекта плагина

Каков процесс на данный момент:

  • Дженкинс извлекает родительский проект из SVN
  • Дженкинс строит проект и его модули, используя Maven и Tycho.
  • Jenkins использует Surefire для выполнения тестов и создания отчета.
  • Jenkins использует плагин Jenkins Sonar для запуска mvn sonar: sonar для выполнения анализа кода
  • Статический анализ кода выполняется для каждого модуля
  • JaCoCo терпит неудачу

Сонар имеет доступную статистику статического анализа кода и показывает процент успешных испытаний. Единственное, чего не хватает, - это покрытия кода JaCoCo ... или, может быть, даже покрытия кода Cobertura.

На данный момент мне все равно, я просто хочу, чтобы одна из этих вещей дала результаты покрытия кода.

Cobertura, похоже, не может дать результаты, возможно, потому что либо - он не может инструментировать код - он ищет инструментальный код в неправильном месте - он не может справиться с Tycho или отдельной настройкой исходного / тестового кода

JaCoCo должна иметь возможность "отслеживать" покрытие кода на лету, но его результат

[INFO] [17:44:04.708] Sensor JaCoCoSensor...
[INFO] [17:44:04.717] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/jobs/testPlugin/workspace/testSource/target/jacoco.exec
[INFO] [17:44:04.854] Sensor JaCoCoSensor done: 146 ms

[INFO] [17:44:10.587] Sensor JaCoCoSensor...
[INFO] [17:44:10.587] Project coverage is set to 0% as no JaCoCo execution data has been dumped: /var/lib/jenkins/jobs/testPlugin/workspace/testTest/target/jacoco.exec
[INFO] [17:44:10.631] Sensor JaCoCoSensor done: 44 ms

[INFO] [17:44:12.402] Sensor JaCoCoSensor...
[INFO] [17:44:12.402] Project coverage is set to 0% as build output directory doesn't exists: /var/lib/jenkins/jobs/testPlugin/workspace/testParent/target/classes
[INFO] [17:44:12.402] Sensor JaCoCoSensor done: 0 ms

Что я делаю неправильно? Нужно ли мне где-нибудь включать JaCoCo в моем pom.xml? Нужен ли мне верный огонь? Что мне нужно сделать, чтобы использовать Cobertura?


person danowar    schedule 20.01.2012    source источник


Ответы (3)


Я нашел страницу с примером многомодульного проекта tycho (отдельный исходный и тестовый проекты). После копирования некоторых свойств и конфигураций ...

похоже, что теперь я использую плагин maven jacoco для создания отчета о покрытии кода jacoco, а затем сообщаю Sonar, где найти отчет и повторно использовать его.

Почему, черт возьми, для этого почти нет документации? Или почему так сложно найти?

https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/tycho-example

person danowar    schedule 27.01.2012

Вы можете посмотреть сообщение в блоге, которое я написал несколько месяцев назад: http://mdwhatever.free.fr/index.php/2011/09/quality-analysis-on-eclipse-plugins-with-tycho-sonar-jacoco-and-swtbot/

person xavier.seignard    schedule 06.03.2012

Когда инструментальный код завершен, нужно обязательно запустить тот конкретный код, который генерирует инструментарий. Я не использовал вашу настройку, но ваша ошибка кажется очень похожей на то, что я получил, когда заставлял работать покрытие кода Clover; Мне нужно было без промедления запустить тесты из каталога, в котором хранился скомпилированный инструментальный код.

Кроме того, я обнаружил, что указание параметра -X в командной строке Maven неоценимо, поскольку чтение журналов каждого плагина во время сборки показывает, где именно он ищет то, что пытается найти.

Редактировать:

Инструментированный код должен быть скомпилирован, прежде чем surefire сможет работать с ним, поэтому вам нужно указать каталог после компиляции, а не сам инструментированный источник.

person SpellingD    schedule 20.01.2012
comment
Как мне сообщить Sonar, Cobertura или JaCoCo, где искать инструментальный код? - person danowar; 27.01.2012