Goland中使用GoPlantUml生成ER关系图

简介: 配置GoPlantUml环境,在Goland中生成ER关系图等,帮助开发小伙伴高效、友好地阅读和分析源码结构。

前言


  Golang语言在近些年的开发语言中异军突起,在越来越多的公司项目中频繁出镜,也有越来越多的中间件选择使用Golang语言进行实现。正所谓源码之下无秘密,更友好地翻读源码对于理解功能特性以及后续使用非常有帮助,观摩学习源码也是非常好的一种学习方式。


  本篇基于Golang常用开发工具Goland结合GoPlantUml进行代码ER关系图生成,便于更好阅读代码和梳理逻辑关系。


环境配置


基于MacOS环境


下载PlantUml插件


  打开Goland,Preference -> Plugins -> Marketplace -> 搜索plantuml -> 安装


网络异常,图片无法展示
|


安装GoPlantUml


goplantuml可执行文件安装到本地$GOBIN目录下:


go get github.com/jfeliu007/goplantuml/cmd/goplantuml

### 或者

go install go get github.com/jfeliu007/goplantuml/cmd/goplantuml


安装Graphviz


  下载地址:https://graphviz.org/download/


### macos下执行

brew install graphviz


  graphviz的下载依赖非常多,这里容易出现的问题是依赖不可用不可下载,可以通过修改brew源为阿里云镜像完成,如下:


### 打开配置文件

vi ~/.zprofile

### 输出brew环境变量

export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.aliyun.com/homebrew/homebrew-bottles

### 配置生效

source ~/.zprofile


配置External Tools


Preference -> Tools -> External Tools -> 新增/编辑


  • Name:goplantuml(可自定义)
  • Program:/usr/local/go/bin/goplantuml (goplantuml的安装路径,可以通过$GOBIN获取到)
  • Arguments:-recursive --output=$FileDir$.puml $FileDir$
  • Working directory: /User/workspace/bin (Project目录路径)


网络异常,图片无法展示
|


生成PlantUml


  选中项目中要生成的目录,这里是acl,鼠标右键找到External Tools -> goplantuml


网络异常,图片无法展示
|


  生成文件acl.puml文件,即acl目录下ER关系图

网络异常,图片无法展示
|


  当打开查看时,遇到问题Cannot Find Graphviz

网络异常,图片无法展示
|


  添加环境变量,指定Graphviz的执行路径


###添加系统变量

GRAPHVIZ_DOT=/usr/local/Cellar/graphviz/2.48.0/bin


  或者在项目中配置graphviz执行路径

网络异常,图片无法展示
|


  重启后可以正常看到该目录下的ER关系图,如下:


网络异常,图片无法展示
|


相关文章
|
移动开发 JavaScript 前端开发
分享一些XSS Payload
分享一些XSS Payload
416 0
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
消息中间件 分布式计算 算法
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析(上)
深入理解Zookeeper系列-3.Zookeeper实现原理及Leader选举源码分析
1202 0
|
存储 JSON 安全
Go语言切片,使用技巧与避坑指南
Go语言中的切片(Slice)是动态引用数组的高效数据结构,支持扩容与截取。本文从切片基础、常用操作到高级技巧全面解析,涵盖创建方式、`append`扩容机制、共享陷阱及安全复制等内容。通过代码示例详解切片特性,如预分配优化性能、区分`nil`与空切片、处理多维切片等。掌握这些核心知识点,可编写更高效的Go代码。
491 2
|
缓存 NoSQL 应用服务中间件
高性能软件负载OpenResty整合Reids集群配置
高性能软件负载OpenResty整合Reids集群配置
896 1
|
Java Apache Maven
【异常解决】Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: org/apache/common
【异常解决】Handler dispatch failed;nested exception is java.lang.NoClassDefFoundError: org/apache/common
11452 0
|
并行计算 JavaScript 算法
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
这篇文章介绍了如何在Windows 10上使用Visual Studio 2017成功编译OpenCV 4.5.1及其contrib模块和CUDA支持,并解决了编译过程中的问题,如项目文件无效、cmake工具问题,并添加了Qt和JavaScript支持,同时提供了参考链接。
394 7
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
|
前端开发 NoSQL 中间件
rbac基于用户角色的权限管理
rbac - 基于角色的权限管理,介绍了acl(访问权限列表)基于用户的权限管理,rbac基于角色的权限管理。
rbac基于用户角色的权限管理
|
存储 监控 Linux
在Linux中,如何查看和管理Linux系统日志?
在Linux中,如何查看和管理Linux系统日志?
|
存储 数据采集 数据处理
Python filter函数
Python filter函数
Python filter函数