я использую googletest
в сочетании с gcovr
который производит некоторое странное поведение. У меня есть заголовочный файл foo.h
тот gcovr
У претензий есть несколько строк, которые не подпадают под тест. Эти строки являются определением класса и конструктором перемещения:
File Lines Exec Cover Missing
foo.h 42 40 95% 39,47
Где строка 39:
class foo
и строка 47:
foo(foo&&) = default;
Я попытался явно вызвать эту функцию в теле теста с std::move()
, но безрезультатно. Есть ли решение этой проблемы, или я застрял с отчетом о покрытии на 99%?
Должен отметить, что в этом заголовке нет реализации, кроме определения класса и семантики копирования / перемещения (которые все определены как default
); все функциональные тела находятся в foo.cpp
,
Похоже, что единственный способ удалить эти строки из отчета о покрытии как «непокрытый» — это удалить их из заголовка. На самом деле это ни на что не влияет, так как они просто устанавливают copy / move / dtor в default
, Везде, где они фактически реализованы или удалены, не отображается в отчете о покрытии.
Вы можете исключить некоторые строки из расчета покрытия специальными комментариями. Такое поведение недокументировано, но стабильно. Вы можете:
GCOVR_EXCL_LINE
GCOVR_EXCL_START
а также GCOVR_EXCL_STOP
,Маркер может начинаться с GCOVR
или же LCOV
в случае, если вы используете этот инструмент, а также. Маркеры исключения ветвей Lcov в настоящее время не поддерживаются.