gcc/g++內建了gcov 工具可以自動產生一個執行程式碼涵蓋範圍資訊的檔案gcda。只需要帶編譯宏 -fprofile-arcs-ftest-coverage 就可以產生gcno檔案
具體的資訊可見
http://gcc.gnu.org/onlinedocs/gcc-3.3.6/gcc/Gcov-Intro.html#Gcov-Intro
天主要介紹利用gcov產生的檔案產生比較直觀的web頁面的一款工具lcov ,可以官網http://ltp.sourceforge.net/coverage/lcov.php去下載這款工具我下的是 這個版本。好了廢話不多說,我們通過一個簡單的例子來看看如何使用這款工具。
1.安裝lcov
# tar -zxvf lcov-1.10.tar.gz
#make install
這樣就可以有兩個工具 lcov genhtml 可以直接敲命令看看協助資訊 --help 你懂得。。
2.測試cpp檔案
#include"stdio.h"#include"string.h" int Test(int i){ if(i>0) { printf("iu>0\n"); } else{ printf("i < 0\n"); } return 0;} int main(){ Test(1); return 0;}
可以看到產生了一個test.gcno的檔案
3.運行程式
./ok
產生了gcda檔案
4.執行lcov 組建檔案
lcov -d . -t ok -o coverage.info -b . -c
-d 後面帶 執行程式(ok)的目錄 -o 表示組建檔案
自此產生網頁的條件已經完全具備
5.產生網頁端
genhtml -o result coverage.info
-o 路徑 + 轉換資訊
頁面資訊如下:可以清楚的看到當前的代碼哪一些分支沒有走到。
總結:
程式碼涵蓋範圍在一定程度上可以協助我們很好進行單元測試,我們可以將一些測試案例進行上述檢測,就可以知道測試案例是否能很好的覆蓋到代碼全部分支,進一步提高代碼的穩定性。