zoukankan      html  css  js  c++  java
  • 覆盖率平台(5)- 增量代码覆盖率

    前言:

    如前面一篇介绍的,增量代码覆盖率用的 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.增量

     

     

     

  • 相关阅读:
    html控件使用
    托盤
    托盘的实现
    ws2s函数
    网络验证
    右上角X灰化
    如何模拟一个http请求并把response的内容保存下载下来,导出到excel中(结尾福利)
    排序的几种算法(一):冒泡排序
    python中的break eturnpasscontinue用法
    python中socket模块详解
  • 原文地址:https://www.cnblogs.com/dannyyao/p/13476922.html
Copyright © 2011-2022 走看看