2010-07-02 409 views
11

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

+0

参见http://stackoverflow.com/questions/3555083/how-do-i-tell-gcov-to-ignore-un-hittable-lines-of-c-code – jchl 2012-01-05 16:59:11

回答

5

我通过运行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" 
} 
相关问题