ros/ros2 测试代码覆盖率检测
写在前面
本文档是关于如何在ros/ros2的项目中检测测试代码的覆盖率。本文以ros2项目为例。
相关名词
gcc是linux平台下的C、C++ 编译器
编译参数:
-fprofile-arcs:使得编译后的文件运行生成弧跳变的次数和其他的概要信息,用于生成.gcda
-ftest-coverage:生成.gcno文件,汇总文件源码块信息和行号
生成文件:
.gcno:是由-ftest-coverage编译时产生的,它包含了重建基本块图和相应的块的源码的行号的信息
.gcda:是有-fprofile-arcs产生的,它包含了程序运行时生成执行次数
.gcov:文本格式的覆盖信息由gcno和gcda合并而成
gcov是配合gcc产生覆盖信息报告的工具;
lcov:是将gcov产生的报告信息,以更直观的方式显示出来工具.图表图文方式;
genhtml:把lcov产生的信息生成html
配置ros2项目
通用的编译配置项目
写一个通用的编译配置项目,这样在每一个需要检测测试代码覆盖率的项目中都可以直接使用,例:ros2_common
.
├── cmake
│ └── ros2_coverage.cmake
├── CMakeLists.txt
├── package.xml
└── ros2_common-extras.cmake
编译项目
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TY