2020-10-13

一、iOS 工程配置

參考:https://www.cnblogs.com/zhouxihi/p/11175244.html

二、gcno 文件生成及上傳

gcno 上傳時的參數(shù)列表:
  • branch(分支名)
  • commitId(當(dāng)前App對應(yīng)的代碼最后一次提交的commitId)

三、 gcda文件生成及上傳

gcda 上傳時的參數(shù)列表:
  • uuid(app 的 uuid,用于標(biāo)識不同設(shè)備)
截屏2020-10-14 下午9.48.47.png

四、數(shù)據(jù)解析層

負(fù)責(zé)向數(shù)據(jù)采集層拿到指定版本的覆蓋率中間文件,然后生成對應(yīng)的全量覆蓋率數(shù)據(jù)、增量覆蓋率數(shù)據(jù)。

1. info 文件生成

拿到gcno 和 gcda 文件后,我們可以使用 LCOV 工具(基于gcov )來生成這個源代碼文件的覆蓋率信息。
方案一:直接生成本路徑下所有的(不推薦)

lcov -c -o test.info -d .

??方案二:(有贊方案)制定文件生成,然后合并info

生成覆蓋率:lcov -c --derive-func-data -d $SOURCE -o $DEST_INFO
篩除數(shù)據(jù):lcov -r $SOURCE_INFO '$REGEX' -o $DEST_INFO
合并覆蓋率:lcov -a $SOURCE_INFO_0 -a $SOUCE_INFO_n -o $DEST_INFO

覆蓋率信息.info 文件包含以下內(nèi)容:

  1. TN:測試用例名稱
  2. SF:源碼文件路徑
  3. FN:函數(shù)名及行號
  4. FNDA:函數(shù)名及執(zhí)行次數(shù)
  5. FNF:函數(shù)總數(shù)
  6. FNH:函數(shù)執(zhí)行數(shù)
  7. DA:代碼行及執(zhí)行次數(shù)
  8. LF:代碼總行數(shù)
  9. LH:代碼執(zhí)行行數(shù)

2. 合并覆蓋率(info合并)

lcov -a $SOURCE_INFO_0 -a $SOUCE_INFO_n -o $DEST_INFO

3. lcov文件過濾

git 導(dǎo)出版本之間差異文件:
//查看
git diff 456bcb 93593a --name-only

//導(dǎo)出 test.txt為文件目錄
git diff >test.txt 456bcb 93593a --name-only

//差異文件打包
$ git diff 9d093d01c59cd6f9d0051094a2a7aec27ed3d3e7 003e66916c0567c971e9c315cac69f11b2ffee34 --name-only | xargs tar -czvf ../update.tar.gz

  • 移除制定目錄
    需要用到--remove參數(shù),以刪除include目錄下所有文件信息為例 :
 lcov --remove all.info '*/include/*' '' -o result.info

// all.info  總的覆蓋率信息     result.info 篩選后的覆蓋率信息
  • 篩選固定目錄
    需要用到--extract參數(shù),以指定samples目錄為例:
 lcov --extract test.info '*/Dealer-Ios/classess/MVVM/MVVM-LaunchVC/View/*' -o result.info
 
 //all.info  總的覆蓋率信息     result.info 篩選后的覆蓋率信息

五、數(shù)據(jù)可視化

負(fù)責(zé)將數(shù)據(jù)解析層生成的覆蓋率數(shù)據(jù),以可視化的方式(HTML)展示出來。LCOV 工具支持基于同一份 gcno 加上多份 gcda 的合并,因此,單版本多設(shè)備的全量代碼覆蓋率可可以很快的生成。

genhtml result.info -o output/

??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容