Как игнорировать заголовочные файлы в выводе gcov?

Я использую gcov и gcovr для генерации покрытия кода тестами (тесты выполняются с помощью google test ++).
Итак, я компилирую с опциями -ftest-покрытие -fprofile-arcs, а затем запускаю gcovr (который сам запускает gcov).
Однако в моем выводе у меня есть файлы cpp с покрытием 100%, но также и файлы .h, даже если у них нет исполняемого кода, и, следовательно, они имеют выход покрытия 0%.

Этот 0% ничего не значит, и, следовательно, я хотел бы удалить файлы .h из выходных данных покрытия. Я ничего не могу найти по этому поводу …

Я уже пытаюсь добавить: -e «* .h» к параметрам govr, чтобы исключить файлы с расширением .h, но это не работает (фактически исключает все …).

У кого-нибудь есть идея?

Спасибо !!

1

Решение

Я тоже боролся с этим, сейчас нашел правильное решение. Вот пример и способ работы:

Когда вы запустите 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

повеселись!

0

Другие решения

Просто используйте -e, чтобы исключить ваши файлы ..

Ваша команда будет выглядеть

gcovr -r . -e "include.*" --html --html-details -o $result_dir/result.html

Это исключит все включаемые файлы вашего проекта.

0

По вопросам рекламы [email protected]