Понимание мер покрытия кода SonarQube C
У меня есть установка SonarQube 5.6, использующая плагин C/C++ 3.12 для анализа нашего проекта. Я создал результаты покрытия (gcov), но пока только для одного из файлов приложения C. Охват составляет 98,3%. При анализе всего проекта результаты покрытия приложений "импортируются", и я могу отслеживать их в веб-интерфейсе.
На кодовой странице верхнего уровня папка, содержащая этот файл, показывает 98,3%, что, на мой взгляд, неверно, поскольку для всех остальных файлов C покрытие еще не доступно. Я пытался показать это в следующих сериях снимков:
(1) Дерево кодов верхнего уровня:
(2) Переход вниз по дереву "Реализация":
(3) Переход вниз по дереву "Реализация / Шаблон компонента":
(4) Переход вниз по дереву "Реализация / Шаблон компонента / код":
EXMPL.c имеет только (4):113 строк кода. По сравнению с общими строчками кода "Внедрение" (4):61 тыс., Это где-то около 0,2%. Тогда покрытие для EXMPL.c 98,3% в (1) неверно!
Мой проект состоит из нескольких приложений, EXMPL - одно из самых маленьких приложений в проекте. Поэтому я должен подготовить отдельные результаты покрытия для каждого приложения и "импортировать" их отдельно в сонар. Поэтому файлы результатов покрытия находятся в разных папках.
Возможно, что структура проекта или "неполный импорт" результатов покрытия являются причиной "неправильных" мер покрытия, но до сих пор я не нашел никакой полезной информации о том, как гидролокатор обрабатывает данные меры покрытия gcov.
Любая помощь или информация будут оценены. Спасибо
1 ответ
Ваше второе предположение верно: неполный импорт результатов покрытия искажает цифры. Линии, которые не включены в отчет о покрытии, не включаются в расчеты покрытия. Поскольку текущий отчет о покрытии включает только один файл, который покрыт на 93%, все цифры основаны на этом.