如何告诉lcov忽略源文件中的行

我想知道是否有可能告诉lcov忽略源文件中的某些行,即。 不要将它们报告为未经访问过的。 我正在寻找一个可以放在代码中的解决方案,例如:

int some_method(char some_var, char some_other_var) { if(some_var == 'A') { if(some_other_var == 'B') { /* do some real stuff here */ } else { LCOV_DO_NOT_REPORT_NEXT_LINE // **<-- this?? ** NOT_IMPLEMENTED("A*") } } else { NOT_IMPLEMENTED("*") } 

和必要的背景:

像上面那样的一大段代码正在一系列unit testing中进行测试,但由于这段代码仍在开发中,因此有很多NOT_IMPLEMENTED("A*")宏只是在屏幕上显示一条消息行号/文件名并退出应用程序。 没有对未实现的分支进行测试,显然它们将在实现该function时编写。

然而,lcov会报告这些NOT_IMPLEMENTED行,并且它们在覆盖率报告中看起来非常难看(即:它们的红线比例很高)。

是我要求的可能,或者我们应该忍受这个?

您可以在源代码中使用以下内容作为注释。

来自http://ltp.sourceforge.net/coverage/lcov/geninfo.1.php

  • LCOV_EXCL_LINE
    • 包含此标记的行将被排除。
  • LCOV_EXCL_START
    • 标记排除部分的开头。 当前行是本节的一部分。
  • LCOV_EXCL_STOP
    • 标记被排除部分的结尾。 当前行不属于本节的一部分。