如何识别 Makefile 中 gcov 的 < x % 覆盖率?

How to recognize < x % coverage in gcov in Makefile?

我正在尝试定义一个 make 目标,它断言测试覆盖率为 x%,即如果文件的测试覆盖率 < x% 则失败,但我似乎没有找到 gcov 返回码的控件,我想避免解析它的输出。

我的 make 当前目标是

GCOV = gcov

coverage:
    $(MAKE) CFLAGS='-g -O0 --coverage'
    $(MAKE) check
    cd src && $(GCOV) -o .libs/ *.c # there're no .gcno files in lib which means that gcov can't be run on them; gcov only seems to work in the current directory

我在 Ubuntu 15.04 上使用 gcov 4.9.2。

Gcov 不支持此功能,但您可以使用 gcovr(3.4 或更高版本)之类的 gcov 包装器。如果你 运行

$ gcovr --fail-under-line 80

并且项目中的行覆盖率低于 80%,则 gcovr 命令将以非零状态退出(有关详细信息,请参阅 documentation)。有一个类似的 --fail-under-branch 选项来要求最小分支覆盖。您可以使用 --filter 正则表达式来 select 只有您感兴趣的文件。