покрытие Google Move Move Constructor

я использую 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,

2

Решение

Похоже, что единственный способ удалить эти строки из отчета о покрытии как «непокрытый» — это удалить их из заголовка. На самом деле это ни на что не влияет, так как они просто устанавливают copy / move / dtor в default, Везде, где они фактически реализованы или удалены, не отображается в отчете о покрытии.

0

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

Вы можете исключить некоторые строки из расчета покрытия специальными комментариями. Такое поведение недокументировано, но стабильно. Вы можете:

  • исключить строку, содержащую GCOVR_EXCL_LINE
  • исключить область линий между GCOVR_EXCL_START а также GCOVR_EXCL_STOP,

Маркер может начинаться с GCOVR или же LCOV в случае, если вы используете этот инструмент, а также. Маркеры исключения ветвей Lcov в настоящее время не поддерживаются.

0

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