13

是否可以从 gcov 覆盖率分析中排除某些函数或代码行。我的代码包含某些用于调试的函数,并且没有作为我的测试套件的一部分来执行。此类功能会降低 gcov 报告的覆盖率。我想从结果中排除这些函数。如果不能通过 gcov,也许可以通过 lcov,但我无法弄清楚。感谢您的帮助。

4

1 回答 1

6

我通过一个简单的 awk 脚本运行 lcov --capture 的输出来过滤掉某些源文件。lcov --capture 的输出格式非常简单,下面的 awk 脚本会过滤掉与 file_pattern 匹配的源文件。我认为可以调整脚本以使其过滤函数而不是文件名。

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"
}
于 2010-09-02T12:16:34.210 回答