首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
SAAS
ToB门户
了解全球最新的ToB事件
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
微博
Follow
记录
Doing
博客
Blog
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
排行榜
Ranklist
相册
Album
应用中心
qidao123.com ToB IT社区-企服评测·应用市场
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
【代码可视化实践】代码变更影响分析
返回列表
发新帖
【代码可视化实践】代码变更影响分析
[复制链接]
发表于 2024-1-10 11:00:19
|
显示全部楼层
|
阅读模式
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
×
1.前言
2.场景
先用2个常见的开发场景来还原描述为什么我们需要“
代码
变更影响分析”。
场景1
:修改了方法①逻辑,以为只会影响入口A便只回归了相关的场景,上线后发现影响了入口B的逻辑,造成了线上事故;
场景2
:修改了方法②逻辑,并回归了所有已知的流量入口,但上线一段时间后出现了大量异常告警,原来是影响了定时任务和MQ消费逻辑;
其他等等......
“
代码
变更影响分析”具体的可以描述为:
如何感知
代码
改动造成
功能
逻辑变化的影响范围,具体到影响了哪些类、方法、入口以及调用拓扑。
3.方案
针对需求,下面给出一种基于源码静态分析的实现方案。
4.实现
下面阐述基于Java8的具体实现方案
4.1 方法调用拓扑生成
基本思路
使用JGit拉取远程仓库到本地后使用JavaParser对源码进行分析,从而得到类、方法和方法调用信息,基于此构建方法调用拓扑图。
实现步骤
步骤一
:使用JGit将远程仓库拉取到本地
步骤二
:设置JavaParser
配置
并解析项目所有源码文件
步骤三
:遍历所有类文件获取类、方法和方法调用信息
步骤四
:识别项目入口类和方法(示例代码仅实现了spring http入口识别)
步骤五
:将入口方法作为起始节点,基于方法和调用关系生成方法调用拓扑图
(用来解析的代码示例在src/main/java/com/analysis/code/example包下)
4.2 代码变更影响分析
基本思路
通过Git Diff获取变更影响了哪些Java类文件,然后对变更前后的类文件进行源码解析得到类方法列表并对比前后差异得到变更影响的方法节点,最后结合之前生成的方法拓扑信息得到变更影响拓扑图。
实现步骤
步骤一
:使用JGit获取分支变更影响了哪些文件
步骤二
:使用JavaParser对变更前后的Java文件进行解析,获取变更前后类的方法列表
步骤三
:依次对照变更前后方法体信息(去除了注释影响,并格式化了代码),得到变更影响了哪些方法
步骤四
:结合方法拓扑生成变更影响结果
5.总结
越早评估出改动的影响面将更容易把风险扼杀在摇篮里,以更小的成本避免事故的发生。本文提供了一种"代码变更影响分析"
功能
的粗粒度实现方案,综合运用了Git、源码分析、可视化图表等技术。不过针对愈发复杂的业务现状,文中描述的
功能
还比较初级,还需要按场景进行针对性的增强和细化,从而真正做到对开发者有帮助。
6.参考
JavaParser
JGit-CookBook
Graphviz
Graphviz-Java
作者:京东科技 谢骁
回复
使用道具
举报
返回列表
浏览过的版块
数据仓库与分析
反转基因福娃
+ 我要发帖
登录后关闭弹窗
登录参与点评抽奖 加入IT实名职场社区
去登录
微信订阅号
微信服务号
微信客服(加群)
H5
小程序
快速回复
返回顶部
返回列表