工具 | 功能 |
---|---|
gcov | 生成代码覆盖信息 |
lcov | 把文字的代码覆盖率信息转换成更直观的图形表格模式 |
- 编译选项
选项 | 功能 |
---|---|
-fprofile-arcs |
生成目标文件中添加覆盖信息 |
-ftest-coverage |
生成包含程序块和行号等信息.gcno 文件 |
-coverage |
-fprofile-arcs 与-ftest-coverage 组合 |
- 链接选项
选项 | 功能 |
---|---|
-fprofile-arcs |
生成目标文件中添加覆盖信息 |
-lgcov |
连接gcov动态库 |
- 编译代码文件
g++ -fprofile-arcs -ftest-coverage 源文件 -o 可执行文件
生成.gcno
文件
- 执行生成的可执行文件
./可执行文件
生成.gcda
文件
- 生成覆盖信息
gcov 源文件.cpp
生成源文件.cpp.gcov
文件
- 生成表格格式信息
lcov -d . -t '表格名称' -o '文件名称.info' -b . -c
- 生成HTML文件
genhtml -o 输出目录名 -t '表格名称' 文件名.info
lcov的安装
自动安装
- Ubuntu
sudo apt-get install -y lcov
手动安装
- 下载
- 解压
tar -zxvf lcov-版本.tar.gz
- 进入工作目录
cd lcov-版本
- 安装
make install
技巧
生成的代码覆盖率通常会包含标准库的覆盖率信息,可以给lcov加上选项-e /usr/include/*
排除标准库。