使用gcov和lcov可实现C++单元测试覆盖率分析:1. 安装GCC、gcov、lcov并用-fprofile-arcs -ftest-coverage编译;2. 运行测试生成.gcda文件;3. 用lcov收集数据并生成HTML报告;4. 可集成至CI/CD持续监控。

在C++项目中进行单元测试覆盖率分析,常用工具是 gcov 和 lcov。gcov 是 GCC 自带的代码覆盖率分析工具,而 lcov 是对 gcov 的封装,能生成更直观的 HTML 报告。结合这两个工具,可以清晰地看到哪些代码被执行、哪些未被覆盖。
1. 环境准备与编译配置
要使用 gcov 和 lcov,首先确保已安装以下工具:
- GCC(支持 -fprofile-arcs -ftest-coverage 编译选项)
- gcov(通常随 GCC 安装)
- lcov(需单独安装)
在 Ubuntu/Debian 上可通过以下命令安装:
sudo apt-get install gcc gcov lcov编译 C++ 代码时必须添加特殊标志以启用覆盖率数据收集:
立即学习“C++免费学习笔记(深入)”;
g++ -fprofile-arcs -ftest-coverage -g -O0 your_test.cpp -o your_test- -fprofile-arcs:在运行时记录执行路径
- -ftest-coverage:生成 .gcno 文件用于覆盖率分析
- -g:包含调试信息
- -O0:关闭优化,避免代码被内联或删除影响覆盖率准确性
2. 运行测试并生成原始覆盖率数据
编译完成后运行你的可执行程序(即单元测试):
./your_test运行后会在当前目录生成多个 .gcda 文件(每个源文件一个),这些文件记录了实际执行情况。
此时你可以用 gcov 直接查看单个文件的覆盖率:
标签: 单元测试 c++ html git github ubuntu 工具 jenkins
还木有评论哦,快来抢沙发吧~