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 Java
govaluate 规则引擎
govaluate 规则引擎
2878 0
govaluate 规则引擎
|
11月前
|
缓存 负载均衡 监控
slb基于DNS的负载均衡
slb基于DNS的负载均衡
650 8
|
12月前
|
安全 Shell Linux
ssh密码忘记了怎么办
通过上述措施,不仅能够有效应对SSH密码遗忘的挑战,还能全方位加固SSH连接的安全,确保数据传输的无忧。
732 2
|
存储 监控 安全
自动化测试适用场景
自动化测试适用场景
247 0
|
Java 程序员 Go
Go Modules踩坑总结
随着 Go1.11 的发布,Golang 给我们带来了 module 全新特性,这是 Golang 新的一套依赖管理系统。现在 Go1.12 已经发布了,go modules 进一步稳定,但官方还是没有将其设为默认机制,所以踩坑之路是必须的,本篇文章除了详细说明 go modules 的特性以及使用之外,还总结了我在这个过程中遇到的一些“坑”。
1219 0
Go Modules踩坑总结
|
机器学习/深度学习 编解码 人工智能
GANet:基于关键点的全局关联车道线检测网络(CVPR2022)
车道检测是一项具有挑战性的任务,需要预测车道线的复杂拓扑形状并同时区分不同类型的车道。早期的工作遵循自上而下的路线图,将预定义的锚回归到各种形状的车道线,由于锚形状固定,缺乏足够的灵活性来适应复杂的车道形状。
GANet:基于关键点的全局关联车道线检测网络(CVPR2022)
Go --- go-elasticsearch介绍及简单使用
Go --- go-elasticsearch介绍及简单使用
Go --- go-elasticsearch介绍及简单使用
|
运维 Java Go
IOC-golang 的 AOP 原理与应用
AOP (面向切面编程)是一种编程设计思想,旨在通过拦截业务过程的切面,实现特定模块化的能力,降低业务逻辑之间的耦合度。这一思路在众多知名项目中都有实践。AOP 只是一种概念,这种概念被应用在不同的场景下,产生了不同的实现。今天本文将和大家分享IOC-golang 的 AOP 原理与应用。
IOC-golang 的 AOP 原理与应用
|
SQL 消息中间件 缓存
接口优化的常见方案实战总结
接口优化的常见方案实战总结