JaCoCo增量代碼覆蓋率搭建手冊

JaCoCO環(huán)境部署 + SpringBoot項目源代碼 + 全量代碼覆蓋率搭建:http://www.itdecent.cn/p/9f60ee7192fd
方案原理:
  1. 收集兩個版本的差異代碼
  2. 生成report階段判斷代碼是否是增量代碼,報告里只統(tǒng)計增量代碼
使用開源工具:

基于git和svn的差異代碼獲取
code-diff: git clone https://gitee.com/Dray/code-diff.git

對jacococli.jar包進行二次開發(fā)
jacoco: git clone https://gitee.com/Dray/jacoco.git

實戰(zhàn)步驟:
  1. 修改項目代碼(新增或修改類、方法),然后提交代碼到git平臺
  2. 將新改動的項目代碼打包生成jar包。項目根目錄下,命令執(zhí)行
    mvn clean package
  3. 項目啟動命令中加入jacocoagent,啟動項目
    java -javaagent:/Users/zhangjiangying/Downloads/jacoco-addtional/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=localhost,append=true -jar /Users/zhangjiangying/Downloads/jacoco-addtional/demo-0.0.1-SNAPSHOT.jar
  4. 服務(wù)啟動后,在瀏覽器上調(diào)用幾個接口觸發(fā)代碼覆蓋
    用二次開發(fā)的jacococli.jar包生成exec文件
    java -jar /Users/zhangjiangying/Downloads/jacoco-addtional/org.jacoco.cli.jar dump --address localhost --port 6300 --destfile ./jacoco_tcp_1.exec
  5. 通過code-diff獲取差異代碼
    部署工具代碼(code-diff: git clone https://gitee.com/Dray/code-diff.git)到本地
    修改修改application.yml配置文件中Git的賬號、密碼,并確保git上的項目訪問權(quán)限是public
  6. 啟動項目,然后訪問http://127.0.0.1:8085/doc.html,在差異代碼模塊下,調(diào)用【git獲取差異代碼】接口,入?yún)懭胍葘Φ膬蓚€版本的commitID號,再加上項目的git地址,調(diào)用此接口,可獲取差異代碼【"uniqueData"】字段
    image.png

    image.png
  7. 生成差異代碼覆蓋統(tǒng)計的report,在【"--diffCode"】后加入【"uniqueData"】信息
    java -jar /Users/zhangjiangying/Downloads/jacoco-addtional/org.jacoco.cli.jar report /Users/zhangjiangying/Downloads/jacoco-addtional/jacoco_tcp_1.exec --classfiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/target/classes --sourcefiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/src/main/java --html diff-report001 --diffCode "[{\"classFile\":\"com/example/demo/GameController\",\"lines\":[{\"endLineNum\":17,\"startLineNum\":0,\"type\":\"INSERT\"}],\"methodInfos\":[{\"endLine\":10,\"methodName\":\"run\",\"parameters\":[],\"startLine\":7},{\"endLine\":13,\"methodName\":\"swim\",\"parameters\":[],\"startLine\":12},{\"endLine\":16,\"methodName\":\"jump\",\"parameters\":[],\"startLine\":15}],\"moduleName\":\"\",\"type\":\"ADD\"},{\"classFile\":\"com/example/demo/HelloController\",\"lines\":[{\"endLineNum\":25,\"startLineNum\":23,\"type\":\"REPLACE\"},{\"endLineNum\":30,\"startLineNum\":28,\"type\":\"REPLACE\"}],\"methodInfos\":[{\"endLine\":26,\"methodName\":\"footballPlayer\",\"parameters\":[],\"startLine\":23},{\"endLine\":31,\"methodName\":\"pingpangstar\",\"parameters\":[],\"startLine\":28}],\"moduleName\":\"\",\"type\":\"MODIFY\"}]" --encoding=utf-8
    image.png

    image.png

    image.png

    image.png
  1. 生成全量代碼統(tǒng)計的reprot,可進行對比
    java -jar /Users/zhangjiangying/Downloads/jacoco-addtional/org.jacoco.cli.jar report /Users/zhangjiangying/Downloads/jacoco-addtional/jacoco_tcp_1.exec --classfiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/target/classes --sourcefiles /Users/zhangjiangying/Downloads/jacoco-0.8.9/lib/jacoco_demo/src/main/java --html report002 --encoding=utf-8
    image.png

    image.png

    image.png

參考code-diff工具原版:https://blog.csdn.net/tushuping/article/details/112613528
參考視頻:https://www.bilibili.com/video/BV1tr4y1i7f1?p=9&vd_source=35fc7fde72f5261003f3893e6be02e18

最后編輯于
?著作權(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)容