colcon收集测试结果的扩展。
colcon-lcov-result的Python项目详细描述
Colcon LCov结果
为colcon-core提供聚合的扩展 使用LCOV覆盖率结果。
lcov是gcc覆盖测试工具的图形前端 gcov,生成以下内容 覆盖率指标:
- 报表覆盖率
- 功能覆盖范围
- 分行覆盖率
有关详细信息,请参见this paper 以及this Wikipedia page。
用法
使用colcon:
$ colcon build \ --symlink-install \ --cmake-args \ -DCMAKE_CXX_FLAGS='-fprofile-arcs -ftest-coverage'\ -DCMAKE_C_FLAGS='-fprofile-arcs -ftest-coverage'
- 另请参见colcon-mixin和 colcon-mixin-repository 对于简短的命令(--mixincoverage-gcc)
为零覆盖率创建基线:
$ colcon lcov-result --initial
- 此步骤是可选的,但有助于显示未被 测试
运行测试:
$ colcon test
收集lcov结果:
$ colcon lcov-result Reading tracefile /home/user/workspace/my_cool_ws/lcov/total_coverage.info Summary coverage rate: lines......: 78.6% (44 of 56 lines) functions..: 94.4% (34 of 36 functions) branches...: 37.0% (34 of 92 branches)
通过在浏览器中打开lcov/index.html来浏览覆盖率报告
将覆盖计数器归零并重新运行测试:
$ colcon lcov-result --zero-counters $ colcon lcov-result --initial $ colcon test $ colcon lcov-result Reading tracefile /home/user/workspace/my_cool_ws/lcov/total_coverage.info Summary coverage rate: lines......: 78.6% (44 of 56 lines) functions..: 94.4% (34 of 36 functions) branches...: 37.0% (34 of 92 branches)
提示和技巧
- 在本地运行时,使用--packages-select选项生成
相关套餐的覆盖信息
- 这还将禁止对未生成的包发出警告 具有覆盖标志或测试未运行的
- --verbose标记可用于打印每个 分析结果时的单个包装
故障排除
运行colcon lcov-result--initial时出现以下警告意味着 包不是用正确的标志生成的:
--- stderr: my_pkg geninfo: WARNING: no .gcno files found in /home/user/workspace/build/my_pkg - skipping! ---
- 这个包不会出现在最终结果中。使用--packages-skip抑制 警告
运行colcon lcov-result时出现以下警告意味着没有测试 为那个包裹跑步
[0.576s] ERROR:colcon.colcon_lcov_result.task.lcov:lcov: ERROR: no valid records found in tracefile /home/user/workspace/build/my_pkg/coverage.info --- stderr: my_pkg geninfo: WARNING: no .gcda files found in /home/user/workspace/build/my_pkg - skipping! ---
- 该包将显示在最终结果中,覆盖率为0%。使用--packages-skip 从总数中抑制这些包
已知问题
- 聚合所有结果文件的最后一步可能会很慢,具体取决于 关于分析的包数