⑴ 如何获取单个测试用户的代码覆盖行数 c++
c/c++代码覆盖率总结,具体如下
1 安装工具:
安装lcov
[html] view plain
wget http://sourceforge.net/projects/ltp/files/Coverage%20Analysis/LCOV-1.12/lcov-1.12.tar.gz
解压;进入目录;make install即可
安装grove
[html] view plain
wget https://github.com/gcovr/gcovr/archive/3.2.tar.gz
解压;cp */scripts/gcovr /usr/bin即可
2 配置CMake文件
在CMakeList.txt增加如下配置
编译时增加参数
[html] view plain
-DENABLE_COVERAGE=ON
注意gcda和gcno文件,必要时交叉编译,指定gcda文件路径
[html] view plain
export GCOV_PREFIX="/src/gcov"
3 执行case,生成代码覆盖率文件
1 编译后拷贝bin文件启动,执行测试用例;
2 case运行完后,需要执行一次exit,才能生成gcda和gcno文件,如下
[html] view plain
pid=`ps -ef | grep $SERVER_NAME | grep -v "grep" | awk '{print $2}'`
echo $pid
gdb -q attach $pid
p __gcov_flush()
查看编译时的目录 即可看到gcno和gcda文件,可用来生成覆盖率报告。
4 生成报告
gcovr生成报告
xml文件
[html] view plain
gcovr -r . --output coverage.xml -xml-pretty
html文件:
[html] view plain
gcovr -r . --html-details -o coverage.html
lcov生成报告
html报告:
[html] view plain
lcov -c -o result.info -b . -d . //生成info文件
genhtml result.info -o Report //生成报告,在windows下打开里面的index.html文件即可