0

我正在使用 gcovr 来确定我的 C++ 代码的行和分支覆盖率。但是,有些类无法测试(由于对操作系统的依赖性),因此覆盖率为 0。我想从我的报告中排除这些。

我已将 GCOV_EXCL_START(和匹配的 GCOV_EXCL_STOP)注释添加到文件的开头和结尾。这成功地从分支覆盖中排除了注释之间的代码,但 gcovr 仍然报告这些文件的 0 行覆盖。

/** HEADER INCLUDES **/

/*
 * This file is excluded from coverage generation. It attempts to create CANSocket and ZMQSocket objects, which are
 * themself untestable. Therefore, this class is also untestable and cannot be covered.
 */
// GCOV_EXCL_START

/** CODE **/

// GCOV_EXCL_STOP

由于排除标记没有记录(我只是通过stackoverflow某处的评论发现它们),我不知道它们是应该只排除分支覆盖还是应该排除行覆盖。

我希望这里有人可以告诉我:

  1. 为什么这些排除标记没有覆盖线路覆盖范围,如果这是故意的,为什么?
  2. 无论如何,我如何将文件从行覆盖中排除,最好不必在 gcovr 命令中将它们指定为已排除。
4

0 回答 0