1. 準備工作
因爲lcov只能運行在linux環境下。但是不想裝雙系統,也不想通過虛擬機來裝linux系統。幸好Win10新版已經支持linux子系統,除了沒有Linux的桌面,通過命令行來操作完全可以。
- 首先將win10操作系統升級到版本1809及以上。
- 控制面板 -> 程序和功能 -> 啓用或關閉windows功能,勾選下圖紅框所選條目。
- 重啓電腦,並打開Microsoft Store,搜索Linux。
- 選擇Ubuntu下載安裝
- 如果無法啓動Microsoft Store商量,可以如下嘗試:
- 以管理員方式打開PowerShell,輸入netsh winsock reset回車,再操作Microsoft Store。
- 以管理員方式打開PowerShell,輸入wsreset.exe回車,再操作Microsoft Store。
- 以管理員方式打開PowerShell,輸入get-appxpackage store | remove-Appxpackage回車刪除Microsft Store,再輸入 add-appxpackage -register “C:\Program Files\WindowsApps*Store*\AppxManifest.xml” -disabledevelopmentmode回車重新安裝商店。
- 安裝成功如下圖所示:
2. 配置Linux
- 啓動Ubuntu如下圖
- 根據提示輸出用戶名和密碼
- 升級ubuntu
因爲ubuntu沒有升級,與服務器連接可能不太順,安裝lcov容易失敗。輸入 sudo apt-get update回車等待升級。 - 安裝gcc,輸入sudo apt install gcc回車,等待安裝完成
- 輸入sudo apt install lcov回車,安裝lcov
3. 示例
3.1. 創建文件夾及文件
ubuntu下創建文件夾及文件都要通過命令行創建,不要通過windows創建(ubuntu可能無法識別)。
ubuntu的目錄在Windows下的目錄爲:C:\Users\用戶名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home
- 創建文件夾,利用命令:mkdir test
- 創建文件,利用命令:touch main.c
3.2. 編寫代碼
- 可以安裝vim,利用vim編寫代碼。
- 不習慣vim的人,可以直接用windows工具編寫代碼。
- 創建main.c
#include <stdio.h>
#include "fun.h"
int main(int argc, int* arg[]))
{
printf("This is %d!\r\n", Sum(argc));
return 0;
}
- 創建fun.h
#ifndef __A_HEADER_GUARD__
#define __A_HEADER_GUARD__
int sum(int nVal);
#endif
- 創建fun.c
#include <stdio.h>
int sum(int nVal)
{
if (nVal > 1)
return 2*nVal;
else
return 3*nVal;
}
4. 編譯運行統計覆蓋率
- 編譯源文件,並且添加覆蓋率統計參數,生成可執行文件main
gcc -fprofile-arcs -ftest-coverage fun.c main.c -o main
- 啓動可執行文件
./main
- 以源文件爲模板生成同名的覆蓋率文件
gcov -a main.c fun.c
- 統計當前目錄下的覆蓋率文件main.info
lcov -c -o main.info --rc lcov_branch_coverage=1 -d .
- 生成HTML圖表(能夠清晰顯示哪行代碼哪個分支沒有覆蓋到)
genhtml main.info --rc lcov_branch_coverage=1 -o main_result
- 生成的html可以直接在Windows中打開
- 更多信息可以參考gcov和lcov的幫助。