我已经成功建立了一个自动工具项目,其中的测试使用仪器进行编译,这样我就可以获得测试覆盖率报告。
成功“make check”后,我可以通过在源目录中运行 lcov 来获取报告。
我现在面临的问题是我想自动化此步骤。我想将其添加到“进行检查”或使其成为一个单独的目标“进行检查覆盖范围”。理想情况下,我想解析结果,如果覆盖率低于一定百分比,则失败。问题是我根本不知道如何添加自定义目标。
我得到的最接近的是找到 this示例 autotools 配置,但我看不到在该项目中的何处添加了目标“make lcov”。我只能在 m4/auxdevel.m4 中看到一些配置标志。
有什么建议吗?
最佳答案
显然,您可以在 Makefile.am 中向目标添加额外的步骤,这就是我最终得到的结果(受到#http://www.enlightenment.org/svn/e/trunk/ewl/Makefile.am 的启发):
#http://www.enlightenment.org/svn/e/trunk/ewl/Makefile.am
if ENABLE_COV
cov-reset:
@rm -fr coverage
@find . -name "*.gcda" -exec rm {} \;
@lcov --directory . --zerocounters
cov-report:
@mkdir -p coverage
@lcov --compat-libtool --directory . --capture --output-file coverage/app.info
@genhtml -o coverage/ coverage/app.info
cov:
@make cov-report
clean-local:
@make cov-reset
check:
@make cov
endif
检查中的“@make cov”会将“cov”目标添加到默认的“make check”目标。
关于Autotools在 'make check'之后自动调用lcov,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872164/