⑴ 如何獲取單個測試用戶的代碼覆蓋行數 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文件即可