c++代码覆盖率怎么看 c++ gcov和lcov使用【工具】

admin 百科 17
C++代码覆盖率需用gcov生成数据、lcov生成HTML报告,关键在编译(-O0 -g -fprofile-arcs -ftest-coverage)、运行(正常退出生成.gcda)、收集(lcov三步操作)三者路径与环境严格一致。

c++代码覆盖率怎么看 c++ gcov和lcov使用【工具】-第1张图片-佛山资讯网

看C++代码覆盖率,核心是用 gcov 生成基础覆盖率数据,再用 lcov 整理成直观的HTML报告。关键不是跑通命令,而是编译、运行、收集三步都得对上源码路径和构建环境。

编译时必须加覆盖率支持标志

只加 -fprofile-arcs -ftest-coverage 不够,还容易和优化冲突。推荐这样编译:

  • 关闭优化:-O0(否则 gcov 可能跳过某些行,导致“未执行”误报)
  • 保留调试信息:-g(让 lcov 能准确定位源码行)
  • 启用覆盖率:-fprofile-arcs -ftest-coverage
  • CMake 用户可在 CMakeLists.txt 中设:set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fprofile-arcs -ftest-coverage")

运行程序后自动生成 .gcda 文件

可执行文件运行完,会在每个被编译的源文件同级目录(或指定输出目录)生成 .gcda 文件——这是实际执行轨迹数据。注意:

  • 程序必须正常退出(returnexit()),异常终止可能不写 .gcda
  • 多次运行会累加数据,适合合并多个测试用例的结果
  • 若用 make clean 清除了 .gcda,覆盖率就丢了,别手滑

用 lcov 生成可视化 HTML 报告

分三步走,顺序不能错:

立即学习“C++免费学习笔记(深入)”;

标签: html 工具 ai c++ 解决方法

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~