Для того, чтобы покрытие кода можно было измерить, необходимо собрать программу с опциями -fprofile-instr-generate -fcoverage-mapping. Эти опции говорят компилятору о необходимости вставки дополнительных инструкций для сбора статистики.
profdata – промежуточный файл llvm-cov, используемый для генерации отчёта.
Для генерации отчёта можно использовать
llvm-cov show .\tests.exe -instr-profile tests.profdata -format html -output-dir coverage_report -ignore-filename-regex=".*[/\]gtest[/\].*"
В результате исполнения данной команды будет создана директория coverage_report, в которой появится отчёт в формате HTML, в который не будут включены результаты, содержащие подстроку gtest (исключаем все логи про покрытие тестами самого gtest).
В случае приведённого выше кода статистика будет следующей:
Code coverage с gcov
Аналог: gcovr.
Установка: pip install gcovr
Идея аналогична llvm-cov – генерируются файлы профайлинга, а затем из них формируется отчёт.
Вариант описания CMakeLists.txt для автоматической сборки и формирования отчёта о покрытии кода: