智能一代云平台(八):代码依赖分析系统

​强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan

【前言】

        最近刚接手维护一个老并大的项目,项目目前功能基本完成;我们的目标是将其打造成为一款稳定云产品平台,当然功能实现远远不够,还需要相应的优化;说到优化不得不提是对系统的代码分析,代码分析不仅可以指导开发如何改造代码,而且可以监测改造的成果。

【研究之路】

    一、基本情况:

           1、需分析项目情况:

                项目比较大,结构复杂,相互之间调用关系不明确,问题排查困难;

           2、实现分析,和相关负责人交流后有三种思路及其优缺点:

               (1)手工查看所有代码,分析依赖关系;

                       ①优点:实现方式简单;

                       ②缺点:工作量大;且代码改造后再次分析还需相应的工作量;               

               (2)去网上找相关代码分析工具;

                       ①优点:站在巨人肩膀上;

                       ②缺点:需要花费精力去网上找并根据现有做相关的实验;根据实际环境做相应的扩展困难;

               (3)动手写个代码分析的程序;

                       ①优点:根据场景做扩展容易;一次开发永久分析;增加开发人员的相关能力;

                       ②缺点:需要花费精力分析代码和相应的实现;

    二、实现目标:

           1、分析代码的粒度:

               (1)类级别

               (2)方法级别

           2、图形化展示;

           3、代码改变后可根据代码动态绘制出图而无需做修改;

    三、探索之路:

           1、根据基本情况中的三种方式的利弊以及项目现在的实际情况,做出决定:

               (1)优先去网上找工具;

               (2)若找的工具不能满足需要则自己编程实现;

               (3)上述两种都走不通则采取最保底的人工实现方式

           2、相关探索:

               (1)去网上找相应的代码间依赖关系分析工具发现Idea可以分析效果图但是很可惜尝试后不能满足我们针对分析的需要;

               (2)根据项目进度以及探索结果后我们最终权衡一下决定自己写代码去实现。

    四、代码分析实现过程:

           1、框架:FreeMark+SpringBoot+MySQL

           2、实现思路:通过从SVN上将源码拉下来,然后读取其中的java文件按照import关键字等进行相互间关系的调用分析。

           3、实现方式:

                 项目地址:GitHub - dangnianchuntian/Analysis: Analysis itoo code

           4、效果展示:

               (1)列表展示

               (2)点对点展示

    五、展望:

           1、如何自动化的出关系图:

               (1)现状:

                        分析的时候需要手动先将SVN的代码最新代码down到本地然后放到指定目录下,然后运行代码分析工具将代码关系展示出来。

               (2)自动化思路:

                        ①利用SVN的钩子,当有人提交代码时,钩子来触发脚本更新代码到指定目录并调用代码分析程序进行分析;

                        ②利用定时任务,比如每天从SVN上拉最新代码到指定目录并触发代码分析程序对代码进行分析;

           2、目前版本分析的是类之间的依赖关系,下一步将继续深入细化到方法级别;             

【总结】

           1、需求推动技术的发展,技术保障需求的实现;

           2、不断优化自己的系统,条件允许情况下尽量让机器去多做事情,将人释放出来去做更有价值的事情。          

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

当年的春天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值