Исключение определенных функций из результатов покрытия gcov/lcov

Можно ли исключить определенные функции или строки кода из анализа покрытия gcov. Мой код содержит определенные функции, которые используются для отладки и не используются как часть моего набора тестов. Такие функции уменьшают процент покрытия, указанный gcov. Я хотел бы исключить эти функции из результатов. Если это невозможно через gcov, возможно, это возможно через lcov, но я не смог понять это. Ваша помощь приветствуется.

Ответ 1

Я отфильтровываю определенные исходные файлы, запуская вывод lcov -capture через простой awk script. Выход lcov -capture имеет очень простой формат, а awk script ниже фильтрует исходные файлы, соответствующие файлу_паттерна. Я думаю, что можно адаптировать script, чтобы сделать его фильтром вместо имен файлов.

BEGIN {
        record=""
}

/^SF/ {
        if ( match ($0, "file_pattern" ) ) {
            doprint = 0
        } else {
            doprint = 1
        }
}

/^end_of_record$/ {
        if ( doprint ) {
            print record $0
        }
        record = ""
        next
}

{
    record=record $0 "\n"
}