本文由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/jacococd jacoco

执行剖析

通过docker

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

惯例形式

你须要装置 Python3 及 coca。

pip3 install linkedifflinkediff 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...

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

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