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

Buğ*_*dik 11 c++ gcov lcov

是否可以从gcov覆盖率分析中排除某些功能或代码行.我的代码包含用于调试的某些函数,并且不作为我的测试套件的一部分进行操作.这些功能降低了gcov报告的覆盖率.我想从结果中排除这些功能.如果通过gcov无法实现,也许可以通过lcov,但我无法弄明白.非常感谢您的帮助.

Fab*_*ian 5

我通过一个简单的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"
}
Run Code Online (Sandbox Code Playgroud)