Я использую gcov и gcovr для генерации покрытия кода тестами (тесты выполняются с помощью google test ++).
Итак, я компилирую с опциями -ftest-покрытие -fprofile-arcs, а затем запускаю gcovr (который сам запускает gcov).
Однако в моем выводе у меня есть файлы cpp с покрытием 100%, но также и файлы .h, даже если у них нет исполняемого кода, и, следовательно, они имеют выход покрытия 0%.
Этот 0% ничего не значит, и, следовательно, я хотел бы удалить файлы .h из выходных данных покрытия. Я ничего не могу найти по этому поводу …
Я уже пытаюсь добавить: -e «* .h» к параметрам govr, чтобы исключить файлы с расширением .h, но это не работает (фактически исключает все …).
У кого-нибудь есть идея?
Спасибо !!
Я тоже боролся с этим, сейчас нашел правильное решение. Вот пример и способ работы:
Когда вы запустите gcov, используйте опцию -o cover.xml, затем откройте файл. Найдите имя файла, который вы хотите исключить, и скопируйте имя файла.
Откройте в браузере следующую ссылку и скопируйте все имя файла в ту часть, которая гласит: TEST STRING
https://regex101.com/
Теперь, где написано: РЕГУЛЯРНОЕ ВЫРАЖЕНИЕ, создайте регулярное выражение, которое делает все имя файла СИНИЙ. Убедитесь, что это выражение не относится к другим файлам, которые необходимы для отображения в вашем отчете о покрытии.
Вот несколько основных правил: Обычно для «некоторых символов» вы можете использовать «. *», Что не имеет ничего общего с файлами типа * .cpp, где вы хотите видеть файлы cpp! Так что если вы хотите исключить что-либо вроде «include», то можете использовать «.включают.Msgstr «Это также исключит некоторые имена файлов, такие как include.cpp
Поскольку . имеет значение в регулярных выражениях, используйте. Поэтому, если вы хотите исключить файлы «.h», используйте «. *. H» Пример, который работает для меня: (исключите включаемые файлы и тестовую среду, а linux включите каталог и исключите файлы jenkins)
Также я хочу исключить любой файл cpp, имеющий слово test, что я могу сделать с этим «.тест [_- [A-Z | A-Z].каст»
Пример из реальной жизни:
gcovr --xml -e ".*unit_test\.cpp" -e ".*\.h" -e ".*usr/include/.*" -e ".*jenkins.*" -e ".*test[_-|A-Z|a-z]*\.cpp" -o coverage.xml
повеселись!
Просто используйте -e, чтобы исключить ваши файлы ..
Ваша команда будет выглядеть
gcovr -r . -e "include.*" --html --html-details -o $result_dir/result.html
Это исключит все включаемые файлы вашего проекта.