前言:
如前面一篇介绍的,增量代码覆盖率用的 diff-cover插件。但是展示效果不好,而且还要先生成全量的xml报告;展示效果,与全量报告不一样,在平台上的展示效果看起来很怪异。绕了一大圈,还是要改造jacoco。
实现:
俗话说,站在巨人的肩膀上,才能站得高,望得远,跑得快!直接拿 https://github.com/fang-yan-peng/diff-jacoco 进行改造
同时参考:
改造点(前2点属于bug修复):
1.增加git用户名、密码,解决git diff无权限问题。此处硬编码,有追求的同学可自行抽取
2.解决报错 Duplicate key org.jacoco.core.internal.diff.MethodInfo。用重载的方法
3.入库有问题,直接干掉db相关代码。覆盖率数据,直接由平台入库
4.干掉dump二进制文件的代码。自行生成exec文件,再传入路径
5.报告:只显示/统计,有变更的类
5.1)org.jacoco.core.analysis.Analyzer 增加如下方法
/** * add by danny.yao 2020/08/13,只分析有变化的代码 * @param file * classes 路径 * @throws IOException */ public void analyzeClass(final File file) throws IOException { if (file.isDirectory()) { for (final File f : file.listFiles()) { analyzeClass(f); } } else { final InputStream in = new FileInputStream(file); try { analyzeClass(in, file.getPath()); } finally { in.close(); } } }
5.2)org.jacoco.startup.ReportGenerator的方法 analyzeStructure 中,改为调用上面的新方法
5.3)org.jacoco.report.internal.html.page.SourceHighlighter 整个文件还原为 jacoco的官方源码,同时把测试类 SourceHighlighterTest.java 中报错代码注释掉
报告效果(同一个服务分支,增量/全量对比):
1.全量
2.增量
开心工作,认真生活;回望来时路,脚印三两,笑声无数...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?