下载解压安装
我这里用的是 lcov-1.14.tar.gz
解压
tar -xzvf lcov-1.14.tar.gz
安装
cd lcov-1.14
make install
工作目录
~/Coverage2023/Code/source/source_dir
要被测试代码覆盖率的源文件 source file
~/Coverage2023/Code/source/source_dir/aaaaa.cpp
~/Coverage2023/Code/source/source_dir/ccccc.cpp
~/Coverage2023/Code/source/source_dir/zzzzz.cpp
临时性的替代当前环境的且含有coverage环境的so包
so包通过编译源代码生成
生成gcno文件 以及临时性的替代当前环境的且含有coverage环境的so包
如果您之前已经获得了所需文件,并且源代码尚未修改,则可以省略该步骤 直接去 2.2 step2 .
`工作目录`
`~/Coverage2023/Code/source/source_dir`
step1.1 在Makefile中以下选项中添加如下参数
(这里我的源文件执行时是通过Makefile 来写的,所以生成带coverage的so包时需要在Makefile中添加相关参数)
在 CFLAGS 和 CPPFLAGS 选项后添加 --coverage 参数
在 LFLAGS 选项后 添加 --coverage -lgcov 参数
CFLAGS = \
-XXX \
--coverage \ # 添加 --coverage 参数
CPPFLAGS = \
-XXX \
--coverage \ # 添加 --coverage 参数
LFLAGS = \
-XXX \
--coverage \ # 添加 --coverage 参数
-lgcov \ # 添加 -lgcov 参数
step1.2 使用 make 来编译
cd ~/Coverage2023/Code/source/source_dir
make
成功后将会生成so包以及源代码对应的gcno文件
so包
~/Coverage2023/CodeBin/lib/lib2023.so
gcno文件
~/Coverage2023/CodeBin/libsource_dir/aaaaa.gcno
~/Coverage2023/CodeBin/libsource_dir/ccccc.gcno
~/Coverage2023/CodeBin/libsource_dir/zzzzz.gcno
到现在为止,需要做代码覆盖率所需要的全部文件就已经准备好了
(1)source file
~/Coverage2023/Code/source/source_dir/aaaaa.cpp
~/Coverage2023/Code/source/source_dir/ccccc.cpp
~/Coverage2023/Code/source/source_dir/zzzzz.cpp
(2)so file
~/Coverage2023/CodeBin/lib/lib2023.so
(3).gcno files
~/Coverage2023/CodeBin/libsource_dir/aaaaa.gcno
~/Coverage2023/CodeBin/libsource_dir/ccccc.gcno
~/Coverage2023/CodeBin/libsource_dir/zzzzz.gcno
将so放在你想执行的测试程序所在的机器
(1)so file
如如下目录
~/CodeCoverage2023
libvast_ufs.so
(2)source file
~/CodeCoverage2023/Code/source_dir
(3).gcno files
~/CodeCoverage2023/CodeBin/libsource_dir
开始步骤
Here are the steps to do code coverage
在需要执行测试程序所在的机器上替换so包
Through this step, we can get the test report
/Code_coverage_UFS/lcov.sh [cov_info_name] [cov_report_name]
~/CodeCoverage2023/lcov.sh [cov_info_name] [cov_report_name]
如果没有输入参数, 那么默认生成的info 文件名字为 coverage.info , 默认生成的覆盖率文件夹名字为 coverage_report
比如 coverage info name:HelloUFS.info report name:HelloUFS_report
/Code_coverage_UFS/lcov.sh HelloUFS.info HelloUFS_Report
我们可能会在很多程序上都测试了代码覆盖率, 现在这些都是独立的,
如果我们需要合并, 形成一份完整的代码覆盖率报告
~/CodeCoverage2023/merge.sh coverage1.info coverage2.info [cov_info_name] [cov_report_name]