分析 diff 上下游调用的工具/想法
2022-06-29 本文已影响0人
TesterHome
本文由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
执行分析
通过docker
docker run --rm -v `pwd`:/usr/src/app williamfzc/linkediff:v0.2.1 linkediff run
常规方式
你需要安装 Python3 及 coca。
pip3 install linkediff
linkediff init
你会在你的项目目录下看到 .linkediff.json
配置文件,将其中 coca_cmd 指向 coca可执行文件 的路径即可。
linkediff run
结果
在运行完成后你可以看到一些结果文件,如 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在线交流。
想要学习更多关于测试/测试开发技术、测试管理和质量保障的干货知识?
想要结识质量行业大牛和业界精英?
欢迎关注第十届中国互联网测试开发大会·深圳站 >>