Импортировать покрытие кода из PHPUnit в sonarqube

#php #sonarqube #phpunit #code-coverage

#php #sonarqube #phpunit #покрытие кода

Вопрос:

У меня проблема с импортом рапорта покрытия кода из PHPUnit в Sonarqube.

  • SonarCube V7.4
  • PHPUnit 5.7.2
  • PHP 7.3.4.1

phpunit.xml

  <logging>
        <log type="coverage-clover" target="_reports/logs/clover.xml"/>
        <log type="coverage-xml" target="_reports/coverage/coverage.xml"/>
        <log type="testdox-text" target="_reports/testdox/executed.txt"/>
 </logging>
  

sonar-project.proporties

 sonar.tests=tests
sonar.php.coverage.reportPaths=tests/_reports/logs/clover.xml
  

После запуска тестов в phpunit отчеты генерируются должным образом в tests/_reports.
После запуска analize с помощью sonar анализ завершается успешно без сбоев, но покрытие не отображается.

Я не знаю, где я делаю ошибку в своих конфигурациях. Что я могу сделать, чтобы повторно использовать его? Заранее благодарю вас.

Ответ №1:

PHPUnit 5.7.2 генерирует покрытие xml с абсолютным путем, если вы используете vagrant или docker, а затем запускаете sonar в Windows, проверяя, действительны ли эти пути. В следующий раз запустите sonar с флагом -X, чтобы получить больше информации.

Комментарии:

1. Спасибо вам, вы правы, я использую vagrant, и проблема была с путями.

2. У меня была такая же проблема с Docker. Чтобы исправить это, я запустил sonar-scanner из контейнера с проектом, где пути к классам были сгенерированы PHPUnit. После этого у меня появилось покрытие в SonarQube.