用VS看大型工程代码,尤其是很多层类的,很容易头晕,即便是装了visual assist 插件。用VS生成类图吧,只能生成一堆框,只有一些小的类关系有箭头表示。远远不能满足要求。下面介绍建模工具EA来生成类图。

1、新建类图(例如ClassModel),没用的图表删除,ctrl+s保存。

2、选中类图(ClassModel),shift+ctrl+u打开对话框,选好根目录,一般是该模块或项目源码所在位置,一般按图中设好选项,确定即可。

3、会看到递归遍历源码,其间会有错误产生,根据提示找到源码位置,一般是有个宏在该位置,EA是不会自动识别宏的,需要我们给他设好,在菜单-〉设置里有个“宏定义”,点击新增,输入宏的名字。把所有导致错误的宏输入好,新建工程和类图,然后按上面重来,会看到错误消失了。(注意要在新工程类图里搞,因为在老的里边搞会丢失一些箭头,即类和类之间的关系,因为EA默认是对已经导入过的类不再重新检查,即便是曾经出过错误的类)

4、到最后出来一张类图,类似蜘蛛网,觉得乱可以保存一份备份,然后把没用的结构体 enum 等图表删掉,小的类图表也可以删掉。注意,在图表视图和项目浏览器是没有关联的,在图表视图里删掉后,项目浏览器里还有,不影响观看,建议保留,以后想看再拖出来放到图表视图里,箭头也会自动连接。

5、EA中选中类的图表,然后按F12,即可定位代码,不习惯的话可以在VS中查看,使用visual assist的ctrl+alt+s查找符号(类、结构体、宏等)和ctrl+alt+o查找文件名。使用alt+g来跟踪符号。

6、结合VS中其它的一些快捷键,帮助理解项目代码。

7、EA无法对单例的调用生成箭头(如:CXXX::GetInstance()->DoSomething();)

enterprise architect (EA) 源码生成UML类图,帮助理解项目工程的更多相关文章

  1. 用Enterprise Architect从源码自动生成类图

    http://blog.csdn.net/zhouyong0/article/details/8281192 /*references:感谢资源分享者.info:简单记录如何通过工具从源码生成类图,便 ...

  2. 从 Java 代码逆向工程生成 UML 类图和序列图

    from:http://blog.itpub.net/14780914/viewspace-588975/ 本文面向于那些软件架构师,设计师和开发人员,他们想使用 IBM® Rational® Sof ...

  3. IDEA怎么生成UML类图

    说之前先说一下Diagram这个单词,意思是图表; 示意图; 图解; [数] 线图的意思. 打开设置 File->Setting或windows下按Ctrl+Alt+S 在搜索框中输入Diagr ...

  4. 使用VS2013逆向生成UML类图

    引自http://blog.csdn.net/funnyfu0101/article/details/7705173 首先.打开工程,[体系结构]->[新建关系图] 生成一个类图 然后[体系结构 ...

  5. 使用EA将源码转化为类图

    EA简介: EA 全名 Enterprise Architect,是一款著名的 UML 建模软件.在软件架构设计与逆向工程中具有重要作用.软件十分小巧(< 60MB ),并且有汉化破解版.推荐大 ...

  6. spring 源码之IOC 类图

    Spring IoC容器是spring框架的核心和基础,IoC容器负责spring Bean的生命周期,是spring框架实现其他扩展功能的基础.容器的继承结构比较复杂,这里画出了spring IoC ...

  7. Python - 反向生成UML类图

    法一. pyreverse https://www.logilab.org/blogentry/6883 pip install pylint(集成在里面了) cd pack pyreverse -o ...

  8. PHUML 生成UML类图操作流程

    项目基础阶段: 安装svn,因为托管在svn平台上: 项目下载到本地,并切换到对应目录(如:F:\wwwroot\phuml.git\trunk\src\app): svn checkout http ...

  9. ABP源码uml类图

    陆陆续续学习ABP框架有一段时间了,阳光铭睿的入门教程和HK Zhang的源码分析文章对我的学习帮助都很大.之所以会花这么大工夫去学习ABP.看ABP的源代码,一是因为本人对于DDD也非常有兴趣,AB ...

随机推荐

  1. Vue -- 只弹一次的弹框

    核心代码是 getCookie()部分,控制弹框的显示隐藏则在 created()中. <template> <div v-if="isShow"> < ...

  2. 小白神器 - 两篇博客读懂JavaScript (一基础篇)

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一. 编写格式 1, ...

  3. Xshell 安装 Xftp

    一.下载 Xftp 链接:https://pan.baidu.com/s/1dGeL2gD 密码:as9x 二.安装 Xftp 无脑下一步 三.点击 Xshell 上的新建文件传输 四.弹出 xftp ...

  4. tddl

    淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ?_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个 ...

  5. mybatis批量插入oracle大量数据记录性能问题解决

    环境: mybatis  + oracle11g r2 1.使用"直接路径插入"(以下sql语句中的"/*+append_values */"),而且使用key ...

  6. cocos2d-x:读取指定文件夹下的文件名称+解决中文乱码(win32下有效)

    援引:http://blog.csdn.net/zhanghefu/article/details/21284323 http://blog.csdn.net/cxf7394373/article/d ...

  7. java发送邮件带附件

    package com.smtp; import java.util.Vector; public class MailBean { private String to; // 收件人 private ...

  8. ORA-01119、ORA-27040

    SQL> alter tablespace DRSYS add datafile '/ora_data/drsys02.dbf' size 1000m;alter tablespace DRSY ...

  9. Mysql实战45讲 06讲全局锁和表锁:给表加个字段怎么有这么多阻碍 极客时间 读书笔记

    Mysql实战45讲 极客时间 读书笔记 Mysql实战45讲 极客时间 读书笔记 笔记体会: 根据加锁范围:MySQL里面的锁可以分为:全局锁.表级锁.行级锁 一.全局锁:对整个数据库实例加锁.My ...

  10. What's new in Safari 11.0

    导语: Safari 11.0 的亮点 网络会议.使用WebRTC标准实现对等会议. 开发调试工具增强.使用用于测量代码和网络性能的新工具来测试代码. WebAssembly.当使用新的WebAsse ...