随着业务的日趋复杂,做全量回归也越来越困难
为了更加精确的定位后台项目改动所造成的影响,回归范围划定精确,提升测试效率
需要对 Java 代码提交影响面进行分析
除了少量相关英文文献,未从 Google 文献和 github 查找相关开源成熟的技术和方案。
文献:Chianti: A Tool for Change Impact Analysis of Java Programs
通过文献,结合个人开发经验,决定自主实现,主要面临的问题是 Java 文件解析和 diff 信息解析。
经过 Google 搜索找到了 python 相关的解析库,遂决定使用 python 开发此功能。
大致原理同 Idea 的 Find Usage 一致,通过代码改动定位代码影响,并不断遍历受影响的类和方法直至找到最上层的 controller 层
代码主要由 python 编写,主要涉及 2 个库:
通过 javalang 语法解析获取每个 Java 文件的 import class extends implements declarators methods 等信息
通过 unidiff 解析 git diff 信息(diff file, added_line_num, removed_lin_num)
然后根据文件增删的代码行去判断影响了哪些类和方法,不断遍历受影响的类和方法直至找到最上层的 controller 层
通过传入项目 git 地址 分支 两次的 commit id,即可分析出两次 commit id 之间代码改动所带来的影响,并生成树图数据方便展示影响链路。
工具集成至公司质量平台,运行效果如下
具体实现已封装上传 pypi,欢迎大家试用,提供意见反馈 jcci
github 项目地址:https://github.com/baikaishuipp/jcci ,期待大家的小星星~
讲了,又好像没讲
试了下,很不错,基本达到了预期效果,楼主威武!想问下,CCI result 除了用 echarts 展示,还有其他展示方式吗
试用 +1,很不错,期待大佬后续更新。
github 项目地址:https://github.com/baikaishuipp/jcci ,期待大家的小星星~
现在的做法是每次将生成的 CCI result 贴到 echarts 里,才能生成关系图,这种应用方式比较麻烦,也不太能做成自动化。对于这部分大佬有什么方案吗?
你看我的附图,我是将此功能集成到公司内部平台里,前端收集参数返回后台后调用 jcci 去分析,然后将分析结果返回给前端,前端用 echarts tree 接一下就可以了;
或者我在项目里加一个 html,分析完后打开就是树形图
你把这个 html 下载下来,浏览器打开后选择 cci result 文件,就可以了
https://github.com/baikaishuipp/jcci/blob/main/jcci-result.html
微信交流群
试用效果符合项目预期,大佬 666
只包含了静态分析吧,远程调用(RPC)的影响呢?
@tester @ 小土豆 @dubda @tangoliver @ 云深不知处 调研下关系图展示大家是否觉得更好?
请问:假设 A 被 BC 调用,A 修改后,是否可展示 BC 被影响?
试用了一遍很牛逼,结果符合预期。想试试放 flask 项目中,页面传参,方便推广到组里。逛逛论坛找到宝藏了