随笔 - 227  文章 - 0 评论 - 34 阅读 - 64万

前言:

如前面一篇介绍的,增量代码覆盖率用的 diff-cover插件。但是展示效果不好,而且还要先生成全量的xml报告;展示效果,与全量报告不一样,在平台上的展示效果看起来很怪异。绕了一大圈,还是要改造jacoco。

实现:

俗话说,站在巨人的肩膀上,才能站得高,望得远,跑得快!直接拿 https://github.com/fang-yan-peng/diff-jacoco 进行改造

同时参考:

1.jacoco-实战篇-增量覆盖率

2.接口测试 服务端代码覆盖率统计平台实现 (全量、变更)

 

改造点(前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.增量

 

 

 

 

 

 

 

 

posted on   蛋尼  阅读(1516)  评论(4编辑  收藏  举报
编辑推荐:
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· .NET 依赖注入中的 Captive Dependency
· .NET Core 对象分配(Alloc)底层原理浅谈
阅读排行:
· 开箱你的 AI 语音女友「GitHub 热点速览」
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(二):用.NET IoT库
· 几个自学项目的通病,别因为它们浪费了时间!
· C#钩子(Hook) 捕获键盘鼠标所有事件 - 5分钟没有操作,自动关闭 Form 窗体
· 特斯拉CEO埃隆.马斯克的五步工作法,怎么提高工程效率加速产品开发?
点击右上角即可分享
微信分享提示