Eagle + PlantUML,轻松绘制源代码图表(上)

快速掌握大型代码文件的对象框架结构及各对象之间的调用关系,我们通常会用到类图和时序图。那么如何快速理解代码,并生成 UML 图表呢?

网友“车到山前必有路” 前阵子使用 Eagle 辅助画图。仅用了半个小时,就完成了一张类图和一张时序图的绘制。要知道这在过去有可能会消耗掉一个专家级软件工程师一整天甚至更多的时间

当“车到山前必有路” 用 Eagle 辅助画图后,将图片发到了群里……

群里顿时炸了锅,纷纷要求出教程。

图片

图片

热心的“车哥”详细分享了他用 Eagle 辅助画图的使用心得。本周我们为大家带来上半部分内容。

Eagle 真的能画图吗?Prompt 又是啥?是否需要其他工具?有哪些关键步骤?……

So 为了搞清楚这些,你们要的教程来喽~

图片

以下来自微信昵称“车到山前必有路”的热心用户分享,原文略作修改

什么情况下会用到类图和时序图?

‌在了解面向对象编程的源代码时,我们经常会用到 UML 中的 Class Diagram(类图)和 Sequence Diagram(时序图)。

通过类图,我们可以清晰地了解不同对象之间的关系,比如继承、聚合和组合关系,这样就能快速掌握大型代码文件的对象框架结构,加快对代码原理的理解。

而当我们搞不清楚对象之间方法的调用关系时,就很难正确掌握对象的使用方法,遇到问题也难以定位,这时候时序图就派上用场啦!

Eagle + PlantUML 实战,绘图效率翻倍

‌Eagle DevAgent (简称 Eagle ) https://eagle.capitalren.com 支持基于自然语言的代码搜索,可解读项目整体框架、剖析深度原理、拆解技术实现路径,还能助力代码审查和编程辅助。

图片

PlantUML https://www.plantuml.com/plantuml/uml 是一个开源的绘图工具,帮助用户创建各种类型的 UML 图表。

图片

用 Eagle 生成代码,再将代码粘贴到 PlantUML 进行绘图。Buff 叠满,绘图原来如此简单!

私信我,免费领取 Eagle会员权益
 

类图绘制

我们用一个较为复杂的 ORM/SOA/MVC 开源框架 m0RMot 的源代码来举例,这个源代码还是用 Pascal 语言写的,我们来考考 Eagle 对上古编程语言的理解能力。

开源项目地址:https://github.com/synopse/mORMot2

我们聚焦到一个具体源代码上:

https://github.com/synopse/mORMot2/blob/master/src/core/mormot.core.threads.pas

这是 mORMot 框架源代码中用来支持多线程能力的库,代码行数适中 3500 多行,但对象种类比较多。我们希望通过 Eagle 来学习掌握一下里面的对象结构,这是类图就是一个比较好的方法。

三步轻松绘制类图

首先,让 Eagle 列举一下此文件中的对象及说明:

Prompt:阅读 mormot.core.threads.pas 代码之后,请整理一个表格,两个字段:0bject,Decription。前者为一列,枚举所有的 Class 名字;后者为一列,解释每一行对应的类的描述,该描述内容来自源代码中每个类前面有一个“///”开头的多行注释内容,可以重新总结和提炼成一句话作为此字段内容

Eagle 的输出如下:

图片

其次,让 Eagle 替我们绘制类图。先借助 PlantUML 语言,让他生成相关代码。

Prompt:请使用 PlantUML 绘制一下上述这些类的层级关系,如果涉及多级继承,请都画出来,根节点到如下对象即可:TObject,IInterface,ESynException,TSynEvent,TSynPersisitent,TSynPersistentLock,TSynPersistentStore,TThread, TInterfaced0bjectWithCustomCreate

图片

最后,我们将 Eagle 生成的 PlantUML 语法内容,复制到 PlantUML 在线绘图工具里。

网址:https://www.plantuml.com/plantuml/uml/

或https://www.plantuml.com/plantuml/duml/(暗色版),

点击“Submit”即可生成图片

图片

看到这里,大家可能会问:关于类关系分析,也有其他工具可以做,Eagle 和它们的区别是什么呢?

1、传统工具比较挑编程语言,有的要求 java、python……像今天的主角“车哥”,他用 pascal,能够支持的工具就更少了…… 但 Eagle,它能够统一支持对几十余种主流编程语言的分析,即使一个项目涉及多种语言,也能轻松拿下。

2、使用传统工具时,从分析完结果到 PlantUML 的使用,之间还有一个 Gap,用 Eagle 则可直接生成 PlantUML 代码,填补工具协同间的这个 Gap。

3、传统工具操作较复杂,用 Eagle 时,用自然语言提示就搞定啦。

大家理解的怎样?是不是还意犹未尽?别急,关注我,用 Eagle 辅助绘制时序图的文章,我们下期推送,敬请期待!

关于Eagle DevAgent

Eagle DevAgent(以下简称 Eagle)是一款擅长解决代码问题的智能体,输入 GitHub 开源项目的地址,Eagle 就会分析项目,并给出项目的概况主要特性整体架构、使用模式、框架核心代码文件、文档和资源等。私信我,免费领取 Eagle会员权益

图片

图片

代码问题,就问 Eagle!

我们的网址:eagle.capitalren.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值