Windows通過gcc和lcov統計代碼覆蓋率

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. 編譯運行統計覆蓋率

  1. 編譯源文件,並且添加覆蓋率統計參數,生成可執行文件main

    gcc -fprofile-arcs -ftest-coverage fun.c main.c -o main

  2. 啓動可執行文件

    ./main

  3. 以源文件爲模板生成同名的覆蓋率文件

    gcov -a main.c fun.c

  4. 統計當前目錄下的覆蓋率文件main.info

    lcov -c -o main.info --rc lcov_branch_coverage=1 -d .

  5. 生成HTML圖表(能夠清晰顯示哪行代碼哪個分支沒有覆蓋到)

    genhtml main.info --rc lcov_branch_coverage=1 -o main_result

  6. 生成的html可以直接在Windows中打開在這裏插入圖片描述
  7. 更多信息可以參考gcovlcov的幫助。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章