Я не могу получить отчеты о покрытии для работы в SonarQube. У меня есть проект C ++, для которого я использую build-wrapper-linux-x86-64 вместе с сонарным сканером. Базовый статический анализ для исходного кода, кажется, работает, но нет ничего о покрытии тестового кода, о котором сообщалось в SonarQube.
В рамках одного и того же рабочего процесса я использую lcov и genhtml для составления отчета о покрытии модульных тестов, поэтому я уверен, что большинство шагов покрытия кода выполняются правильно. Когда я вручную просматриваю файлы .gcov, в первом столбце я вижу количество прогонов, поэтому там есть данные.
Мой код организован в модули. Файл sonar-project.properties включает в себя следующее:
# List of the module identifiers
sonar.modules=Module1,Module2
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# This property is optional if sonar.modules is set.
sonar.sources=./Sources,./Tests
HeliosEmulator.sonar.sources=./Application,./Sources,./Tests
sonar.cfamily.build-wrapper-output=build_output
# Existing reports
sonar.cfamily.build-wrapper-output=build_output
#sonar.cfamily.cppunit.reportsPath=junit
sonar.cfamily.gcov.reportsPath=.
#sonar.cxx.cppcheck.reportPath=cppcheck-result-1.xml
#sonar.cxx.xunit.reportPath=cpputest_*.xml
sonar.junit.reportPaths=junit
Я также хотел бы, чтобы результаты модульного теста отображались под инструментами Sonar. Поскольку я использую платформу CppUTest, у меня пока нет результатов теста xunit или junit. Это можно рассматривать как отдельную проблему, но, поскольку я не могу найти много документации о том, как использовать сканер cfamily в Интернете, я не знаю, актуальны ли перечисленные тесты.
Я забыл правильно настроить систему CI. Файлы .gcov не существовали для работы, на которой выполнялся сонар-сканер. Они существовали только в тестовом задании, которое генерировало отчет о покрытии. Отсутствие файлов в задании сканера означает, что он не может создать отчет о покрытии.
Когда я устанавливаю систему GitLab CI, которую я использую, чтобы сохранить файлы .gcov как артефакты, внезапно начала работать отчетность о покрытии.
Файлы .gcov были сгенерированы тестовым заданием и должны быть переданы в задание сонарного сканера через хранилище артефактов. Это потому, что GitLab CI не разделяет рабочую область между зависимыми заданиями, и вы должны явно указать, какие файлы должны быть скопированы.
Других решений пока нет …