一癞己、iOS 工程配置
參考:https://www.cnblogs.com/zhouxihi/p/11175244.html
二继低、gcno 文件生成及上傳
gcno 上傳時(shí)的參數(shù)列表:
- branch(分支名)
- commitId(當(dāng)前App對(duì)應(yīng)的代碼最后一次提交的commitId)
三舰攒、 gcda文件生成及上傳
gcda 上傳時(shí)的參數(shù)列表:
- uuid(app 的 uuid骨坑,用于標(biāo)識(shí)不同設(shè)備)
四、數(shù)據(jù)解析層
負(fù)責(zé)向數(shù)據(jù)采集層拿到指定版本的覆蓋率中間文件副编,然后生成對(duì)應(yīng)的全量覆蓋率數(shù)據(jù)煮寡、增量覆蓋率數(shù)據(jù)。
1. info 文件生成
拿到gcno 和 gcda 文件后趾诗,我們可以使用 LCOV 工具(基于gcov )來生成這個(gè)源代碼文件的覆蓋率信息蜡感。
方案一:直接生成本路徑下所有的(不推薦)
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)容:
- TN:測(cè)試用例名稱
- SF:源碼文件路徑
- FN:函數(shù)名及行號(hào)
- FNDA:函數(shù)名及執(zhí)行次數(shù)
- FNF:函數(shù)總數(shù)
- FNH:函數(shù)執(zhí)行數(shù)
- DA:代碼行及執(zhí)行次數(shù)
- LF:代碼總行數(shù)
- 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/
??