【发布时间】:2015-06-10 17:16:37
【问题描述】:
我想在我的 cmake 项目中使用代码覆盖工具 (lcov)。 我在这里阅读了示例https://github.com/bilke/cmake-modules/blob/master/CodeCoverage.cmake 使用 'add_test()' cmake 函数将测试添加到我的项目中。
我想创建一个自定义目标,称为“test_coverage”,当被调用执行时应该运行所有测试,收集它们的覆盖率数据并在目录“code_coverage”中生成 html(使用 genhtml)。
有没有办法获得项目中所有测试的列表及其目录路径,以便在自定义目标“test_coverage”中单独执行每个测试并收集其覆盖率数据?
【问题讨论】:
-
根据您的描述,我假设您已经阅读过Detailed guide on using gcov with CMake/CDash?。但是你有没有看到例如github.com/stepcode/stepcode/blob/master/lcov.cmake ?
CTest知道/可以在 CMake 的二进制输出目录中提取测试列表,并使用其脚本模式ctest -S ...您可以自动化整个构建、测试和收集覆盖数据过程。 -
@Florian 我在 lcov.cmake 示例中没有看到 ctest_coverage 调用?另外,你是说你可以在没有脚本(-S)的情况下执行覆盖率分析吗?你能举一个例子来说明如何做到这一点吗?我对所有测试目标的总体覆盖率分析感兴趣。
-
也许我们正在使用的这个模块对你有用:code.cor-lab.de/projects/rsc/repository/entry/cmake/Modules/…。它使用 lcov 和 gcovr 生成报告。自动收集测试目标仍然无济于事,但可能会节省一些时间来编写覆盖逻辑。