歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux 代碼覆蓋率 檢測

Linux 代碼覆蓋率 檢測

日期:2017/3/1 10:07:02   编辑:Linux編程

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 路徑 + 轉換信息

頁面信息如下:可以清楚的看到當前的代碼哪一些分支沒有走到。

總結:

代碼覆蓋率在一定程度上可以幫助我們很好進行單元測試,我們可以將一些測試用例進行上述檢測,就可以知道測試用例是否能很好的覆蓋到代碼全部分支,進一步提高代碼的穩定性。

Copyright © Linux教程網 All Rights Reserved