gcov統(tǒng)計代碼覆蓋率及前端工具lcov使用指導(dǎo)

gcov是在代碼運行時統(tǒng)計代碼覆蓋率的工具,隨著gcc一起發(fā)布的。它的使用很簡單,需要在編譯和鏈接時增加-fprofile-arcs -ftest-coverage生成二進制文件。gcov主要使用.gcno和.gcda兩個文件,.gcno是由-ftest-coverage產(chǎn)生的,它包含了重建基本塊圖和相應(yīng)的塊的源碼的行號的信息。.gcda是由加了-fprofile-arcs編譯參數(shù)的編譯后的文件運行所產(chǎn)生的,它包含了弧跳變的次數(shù)和其他的概要信息。


以測試samp3為例:有文件samp3.cpp、samp3.h、samp3_test.cpp(單元測試腳本)


1.編譯并鏈接samp3.cpp、samp3_test.cpp時增加參數(shù)-fprofile-arcs -ftest-coverage

除了生成可執(zhí)行文件test3之外,還生成了samp3.gcno和samp3_test.gcno二進制文件。

命令:g++ samp3.cpp samp3_test.cpp libgmock.a -fprofile-arcs -ftest-coverage -lpthread -o test3


2.執(zhí)行test3文件可生成*.gcda二進制文件



3.執(zhí)行命令gcov *.cpp

生成gcda文件之后執(zhí)行命令gcov *.cpp就會在屏幕上打印出測試的覆蓋率,并同時生成文件“*.cpp.gcov”,然后用vi打開就可以看見哪行被覆蓋掉了

如:執(zhí)行g(shù)cov samp3.cpp即打印出samp3文件的代碼覆蓋率為100%,同時生成文件samp3.cpp.gcov



4.vi *.cpp.gcov打開文件查看哪行被覆蓋掉了

如vi samp3.cpp.gcov可看到第7、8行被覆蓋了11次,除注釋空行外所有代碼均被覆蓋到了,覆蓋率100%。


5.github下載lcov源碼,直接make install 安裝

地址:https://github.com/linux-test-project/lcov.git

注:1.從windows上烤到linux上文件會存在CRLF,需要使用dos2unix *轉(zhuǎn)行成unix文件

2.沒有權(quán)限則使用sudo make install


6.在*.gcda目錄下執(zhí)行l(wèi)cov --directory? .? --capture --output-file app.info生成app.info文件


7. 執(zhí)行命令genhtml? -o? results? app.info生成results目錄


8.打開index.html



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容