ROS1 配置代码覆盖率

ROS1 配置代码覆盖率

ROS1 的 CMakeLists 模板中自带了集成 gtest 测试框架的注释说明,只需要按注释修改 CMake 脚本就可以搭好测试环境。下面附上测试主函数供参考。

cpp 复制代码
#include <gtest/gtest.h>

int main(int argc, char** argv) {
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

然而,想要知道测试的代码覆盖率就较为麻烦。下面给出操作方法。

  1. 安装 lcov

    bash 复制代码
    sudo apt install lcov
  2. 修改 CMakeLists.txt,增加覆盖率编译选项和链接选项。

    cmake 复制代码
    option(COVERAGE "Enable coverage flags" OFF)
    if(COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU")
      message(STATUS "Coverage enabled (GCC + gcov)")
      add_compile_options(-O0 -g --coverage)
      add_link_options(--coverage)
    endif()
  3. 编写脚本,一键完成测试、覆盖率统计、覆盖率报告生成。

    bash 复制代码
    #!/usr/bin/env bash
    lcov --directory build --zerocounters
    catkin_make -DCMAKE_BUILD_TYPE=Debug -DCOVERAGE=ON run_tests
    lcov --rc lcov_branch_coverage=1 --directory build --capture --output-file lcov.info
    
    lcov --rc lcov_branch_coverage=1\
        --remove lcov.info \
        '/opt/ros/*' \
        '/usr/*' \
        '*/devel/*' \
        '*/build/*' \
        '*/test/*' \
        '*/gtest/*' \
        --output-file lcov.info
    genhtml lcov.info --output-directory build/coverage_html --branch-coverage

    运行以上脚本后,就可以打开 build/coverage_html/index.html 查看测试报告了。

    在 VSCode 中安装 Live Preview 扩展,可以直接在 VSCode 中预览 HTML 报告。

  4. 在 VSCode 中安装 Coverage Gutters 扩展,然后运行 Coverage Gutters: Watch 命令。

    运行该命令后,就可以在编辑器看到代码覆盖情况了。

相关推荐
湫兮之风9 小时前
C++: Lambda表达式详解(从入门到深入)
开发语言·c++
奔跑吧邓邓子9 小时前
【C++实战(54)】C++11新特性实战:解锁原子操作与异步编程的奥秘
c++·实战·c++11新特性·原子操作·异步编程
Mr_WangAndy9 小时前
C++设计模式_结构型模式_适配器模式Adapter
c++·设计模式·适配器模式·c++设计模式
bkspiderx9 小时前
C++设计模式之结构型模式:代理模式(Proxy)
c++·设计模式·代理模式
bkspiderx11 小时前
C++设计模式之行为型模式:解释器模式(Interpreter)
c++·设计模式·解释器模式
倔强菜鸟12 小时前
2025.8.10-学习C++(一)
开发语言·c++·学习
ZXF_H12 小时前
C/C++预定义宏与调试日志输出模板
开发语言·c++·日志·调试·预定义宏
2401_8414956413 小时前
【数据结构】顺序表的基本操作
数据结构·c++·算法·顺序表·线性表·线性结构·顺序表的基本操作
小糖学代码13 小时前
STL的list模拟实现(带移动构造和emplace版本)
c语言·数据结构·c++·windows·list
王嘉俊92513 小时前
Qt 入门:构建跨平台 GUI 应用的强大框架
c语言·开发语言·c++·qt·入门·cpp