Как заставить Дженкинс, Сонар и плагин JaCoCo работать вместе для проектов плагинов Eclipse Tycho (или, может быть, Cobertura)? - PullRequest
8 голосов
/ 20 января 2012

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

  • Jenkins 1.448
  • Sonar 2.13
  • Jenkins Sonar Plugin 1.72
  • база данных MySql для Sonar

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

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

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

  • Дженкинс проверяетродительский проект из SVN
  • Jenkins строит проект и его модули, используя 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?

Ответы [ 3 ]

3 голосов
/ 27 января 2012

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

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

С какой стати рядом нет документации по этому поводу? Или почему так трудно найти?

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

3 голосов
/ 07 марта 2012

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

0 голосов
/ 21 января 2012

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

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

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

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

...