Почему SonarQube 5 с покрытием JaCoCo 0,0%?

Я с трудом пытаюсь интегрировать отчет JaCoCo в SonarQube 5.0.1 для нашего проекта. Всегда читаю 0,0% покрытия в SonarQube.

TeamCity 9 сгенерировал файлы testresults.xml и jacoco.exec, которые я использую для бегуна сонара. TeamCity отображает покрытие, поэтому с файлом exec все в порядке. А анализ кода Java работает в основном в SonarQube (FindBugs, PMD и т. Д.)

У меня есть многомодульный проект, который все еще создается с помощью Ant. Модульные тесты для «основного» проекта находятся в собственном проекте под названием «junit». Используется библиотека JUnit 4, но тесты по-прежнему JUnit 3.

Вот соответствующие (?) Свойства, которые я использую в файле "sonar-project.properties":

core.sonar.tests                           = ../junit/src
core.sonar.junit.reportsPath               = /tmp/testresults.xml
core.sonar.core.coveragePlugin             = jacoco
core.sonar.jacoco.reportMissing.force.zero = false
core.sonar.jacoco.reportPath               = /tmp/jacoco.exec

Префикс свойства «core» обусловлен тем, что они настраивают модуль «core».

Пути должны быть правильными. Но там написано: «WARN - Reports path not found: /tmp/testresults.xml» Путь правильный, я не знаю, почему появляется это предупреждение.

Нужны ли мне бинарные файлы для покрытия в SonarQube? Я не компилировал код.

Или в чем может быть причина того, что SonarQube показывает 0% покрытия после того, как я запустил sonar-runner?


person Andreas Gryphius    schedule 17.03.2015    source источник


Ответы (1)


Во-первых: /tmp/testresults.xml это не имеет отношения к покрытию, а связано с импортом результатов тестирования (количество тестов, успешные тесты).

Нужны ли мне бинарные файлы для покрытия в SonarQube? Я не компилировал код.

Ответ на ваш вопрос заключается в этом допросе: Да. Чтобы вычислить покрытие при чтении файла отчета JaCoCo .exec, анализатору JaCoCo (используемому в подключаемом модуле java) требуется входной поток файла .class, поэтому для импорта отчетов JaCoCo требуется байт-код. Поэтому, пожалуйста, скомпилируйте свой проект и предоставьте файлы классов через свойство sonar.java.binaries.

person benzonico    schedule 18.03.2015
comment
Слишком рано нажата кнопка возврата ... Теперь я вижу данные о покрытии в SonarQube. Процент не такой, как в TeamCity, я думаю, что забыл исключения и включения. Теперь я также использую ту же версию JaCoCo при создании файла покрытия, как это использует SonarQube. В другом форуме кто-то писал, что есть проблемы совместимости. Однако после нескольких изменений я буду использовать другую версию JaCoCo для создания файла покрытия (на самом деле TeamCity делает это со своей собственной версией JaCoCo). Тогда я буду знать, действительно ли мне нужна точная версия JaCoCo. - person Andreas Gryphius; 25.03.2015
comment
К счастью, для этого не требуется точно такая же версия JaCoCo (SonarQube и TeamCity). Итак, я предполагаю, что компиляция отсутствовала. Но все же у меня есть другой процент для показателей покрытия в SonarQube по сравнению с показателями, отображаемыми в TeamCity, по какой-то неизвестной причине, и мне нужно выяснить, почему это так. - person Andreas Gryphius; 25.03.2015
comment
Кстати, похоже, я неправильно понял, что sonar.junit.reportsPath указывает на конкретный файл, но, похоже, он должен указывать на папку. - person Andreas Gryphius; 01.04.2015