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

如何识别<;Makefile中gcov的x%覆盖率?,makefile,gcov,Makefile,Gcov,我试图定义一个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

我试图定义一个
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不支持这一点,但您可以使用类似(3.4版或更高版本)的gcov包装器。如果你跑

$ gcovr --fail-under-line 80

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

获得覆盖率的唯一方法是询问
gcov
或解析输出。不,请不要删除!这个答案对很多人来说似乎是一个有用的路标——我通过查看gcovr推荐人发现了它:)感谢你的PRs,即使它们没有合并——他们提出了一个有用的方向!