我已经开始使用我正在构建到 CI 管道中的 Google Test 单元测试工具。是否有在 shell 中运行并允许我设置阈值并将其作为作业添加到管道中的代码覆盖工具?
作为引用,我来自 NodeJS 背景并使用如下管道:
- 短绒(eslint)
- 单元测试( Jasmine )
- 代码覆盖率(istanbul coverage && istanbul check-coverage)
我正在努力解决的问题是第三步。在 NodeJS 中,我可以设置可接受的阈值,如果不满足这些阈值,作业就会失败。
我希望为我的 C++ 代码复制这个。这可能吗?
最佳答案
代码覆盖率与您使用的测试框架无关。
在 Linux 上使用 C++,您必须使用特殊标志编译软件以启用代码覆盖,例如对于 g++,您必须设置参数 --coverage
(并且还建议禁用所有优化)。
当您随后运行测试程序时,您将获得大量包含覆盖率数据的文件。然后可以通过例如收集和评估这些。 lcov
.
lcov
可以用结果创建 HTML 页面,但也会将覆盖率分析的总和打印到 stdout
。因此,您必须构建一个脚本来运行 lcov
、过滤输出并根据测量的百分比报告错误或失败。
顺便说一句,您可以为 lcov
设置限制以定义覆盖率何时足够,但这仅用于 HTML 输出中的背景颜色。
关于这些主题中的每一个,您都可以在 Stackoverflow 上找到多个条目,以及如何完成这些任务。
关于c++ - 我如何从终端的谷歌测试套件中获取 C++ 代码超量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47902627/