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 路徑 + 轉換信息
頁面信息如下:可以清楚的看到當前的代碼哪一些分支沒有走到。
總結:
代碼覆蓋率在一定程度上可以幫助我們很好進行單元測試,我們可以將一些測試用例進行上述檢測,就可以知道測試用例是否能很好的覆蓋到代碼全部分支,進一步提高代碼的穩定性。