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

Posted

技术标签:

【中文标题】从 gcov/lcov 覆盖结果中排除某些功能【英文标题】:Excluding certain functions from gcov/lcov coverage results 【发布时间】:2011-03-10 22:52:44 【问题描述】:

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

【问题讨论】:

另见***.com/questions/3555083/… 【参考方案1】:

我通过一个简单的 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"

【讨论】:

以上是关于从 gcov/lcov 覆盖结果中排除某些功能的主要内容,如果未能解决你的问题,请参考以下文章

使用 gcov/lcov/gcovr 在 Android APK 下获取代码覆盖率

有没有办法从业力覆盖文本报告器结果中排除所有 100% 或阈值的文件?

使用 Cobertura 从代码覆盖中排除方法

SonarQube 代码覆盖率 - 排除某些类

如何在颤振测试覆盖率中排除文件?

如何验证某些排除类和 jacoco 插件的最小覆盖率?