从gcov/lcov覆盖结果中排除某些功能

14

能否从gcov覆盖率分析中排除某些函数或代码行?我的代码包含用于调试的某些函数,这些函数并没有在测试套件中被执行。这些函数会导致gcov报告的覆盖百分比降低。我希望从结果中排除这些函数。如果无法通过gcov实现,也许可以通过lcov实现,但我无法弄清楚如何操作。感谢您的帮助。


2
请参考 https://dev59.com/HHA65IYBdhLWcg3w7TaZ。 - jchl
1个回答

6
我通过运行 lcov --capture 的输出,使用一个简单的 awk 脚本来筛选掉特定的源文件。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"
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接