码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 分析 diff 上下游调用的工具/想法


    本文由williamfzc发表于TesterHome论坛,点击原文链接可查看作者的更多文章并与ta在线交流。

    背景与效果

    在研发流程中无论是 code review、MR 基本都绕不开 code diff 的存在,而人眼很难准确评估 diff 的影响规模。

    linkediff 可以在无需编译的情况下对你的代码进行解析,指出diff的影响范围:

    通过脑图可以看到:

    • 对 UTGen.java 发生了三块变更
    • 64-216行这块影响了 methodsToCases 方法
    • 这个方法调用了近40个方法,并被2个方法调用

    他同时也生成易处理的JSON文件便于与其他系统(如CI)配合。

    使用

    当前只支持java项目。

    进入你自己的工程

    git clone https://github.com/jacoco/jacoco
    cd jacoco
    
    • 1
    • 2

    执行分析

    通过docker

    docker run --rm -v `pwd`:/usr/src/app williamfzc/linkediff:v0.2.1 linkediff run
    
    • 1

    常规方式

    你需要安装 Python3 及 coca。

    pip3 install linkediff
    linkediff init
    
    • 1
    • 2

    你会在你的项目目录下看到 .linkediff.json 配置文件,将其中 coca_cmd 指向 coca可执行文件 的路径即可。

    linkediff run
    
    • 1

    结果

    在运行完成后你可以看到一些结果文件,如 ldresult.json, ldresult.xmind。结合自身需要进一步处理即可。

    设计与讨论

    智能diff功能存在我的TODO里很久了,之前的设计是:

    • tree-sitter(这里选型有很多) 转 ast graph
    • ast graph -> 更高层级的、通用 graph
    • raw diff 生成
    • 代入 graph 抠出整条调用上下游

    而后来偶然发现了 coca ,发现已经将第二步与第四步完成了。所以趁着休息日摸鱼把这个最小可体验版本写(拼)出来了。

    这个版本可能只会被用于验证价值与试水,如果有一定使用场景再考虑具体选型与适配。当前版本自由参与,结构也非常简单,欢迎PR但请不要花费太多时间。欢迎各类建议。

    项目地址

    https://github.com/williamfzc/linkediff

    本文由williamfzc发表于TesterHome论坛,点击原文链接可查看作者的更多文章并与ta在线交流。

    今日份的知识已摄入~

    想要学习更多关于测试/测试开发技术、测试管理和质量保障的干货知识?
    想要结识质量行业大牛和业界精英?
    欢迎关注第十届中国互联网测试开发大会·深圳站 >>

  • 相关阅读:
    2022年最新uniapp学习,从零基础到实战项目,unicloud数据后台快速打造uniapp小程序项目
    如何使用 Tensor.art 实现文生图
    SQL 中delete与truncate的区别
    【每日一题Day338】LC2582递枕头 | 模拟+数学
    一周速学SQL Server(第五天)
    论<script> 标签可以直接写在 HTML 文件中的哪些位置?(可以将 <script> 标签直接插入到 HTML 文件的任何位置)
    java并发编程-实现线程的方法
    2023工博会 | 上海添力网络营销公司 | 助力工业品线上推广
    MySQL 索引介绍和最佳实践
    提高IT运维效率,深度解读京东云AIOps落地实践(异常检测篇)
  • 原文地址:https://blog.csdn.net/Testerhomee/article/details/125514981
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号