目的:解决复杂项目中,代码类、接口的关系图谱;
原理(java\php\c++\golang等面向对象语言都可以):
- 分析项目代码,生成UML 图;
- 通过工具展示uml 图;
具体操作(以golang 为例):
1. 安装分析工具:go-package-plantuml
go get -u -v git.oschina.net/jscode/go-package-plantuml
2. 生成源码的UML 文件:
./go-package-plantuml --codedir /appdev/gopath/src/github.com/contiv/netplugin \
--gopath /appdev/gopath \
--outputfile /tmp/result \
--ignoredir /appdev/gopath/src/github.com/contiv/netplugin/vendor
参数说明
--codedir 要分析的代码目录
--gopath GOPATH环境变量目录
--outputfile 分析结果保存到该文件
--ignoredir 不需要进行代码分析的目录(可以不用设置)
3. 安装展示工具(目的就是把planUML展示):
- 方案1:直接在线工具展示。 地址: https://plantuml.com/zh/class-diagram
优点:无依赖,可以快速查看;
缺点:对于比较复杂的uml 展示效果可能不太好
- 方案2: 通过java 程序渲染文件。plantuml.jar
优点:可以生成svg, 高清图;
缺点:依赖较多,使用麻烦;
java -jar plantuml.jar /tmp/text.uml -tsvg
注意:
1. 下载安装 plantuml https://nchc.dl.sourceforge.net/project/plantuml/plantuml.jar
2. 下载安装 java sdk
- 方案3:通过goland plugin 展示;
优点:安装方便,可以随时编辑和预览文件,也可以查看svg图;
- 插件库,安装plantUML 插件(或则去goland 官网安装)
- 打开uml 文件,直接在plantUML 面板中查看即可(可以右击,选择svg 打开)
补充说明:
- 项目代码结构扁平,出来的图谱比较密集,查看效果不好,
不过可以通过调整UML 中的布局方式,让布局合理点;
- omnigraffle可以查看和拖动对象,盗版软件 https://macwk.com/soft/omnigraffle
- 查看代码运行时的工具。https://github.com/ofabry/go-callvis