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关系图,如下:


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


相关文章
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
移动开发 JavaScript 前端开发
分享一些XSS Payload
分享一些XSS Payload
464 0
|
10月前
|
运维 监控 供应链
Alibaba交易平台TMF2.0介绍
2017双11交易峰值达32.5万笔/秒,面对高并发与复杂业务需求,阿里推出TMF2.0框架,通过业务与平台分离、全链路可视化、配置化发布等创新,实现需求开发周期缩短至12天,支撑多业务快速试错与复用,构建可配置、可监控、可运维的电商技术新体系。
1342 5
Alibaba交易平台TMF2.0介绍
|
3月前
|
人工智能 JSON 自然语言处理
四种无向量RAG 方案实测:BM25、GraphRAG、Tree Search、Agent
本文对比四种无向量RAG方法:BM25(精准匹配标识符)、GraphRAG(多跳因果推理)、Tree Search(结构化文档导航)和Agentic Search(自主规划检索)。实测表明,各方法适用场景迥异,无银弹;生产系统应混合使用——向量召回+BM25纠偏+图谱/Agent处理复杂逻辑,以兼顾准确性、可解释性与合规性。
317 0
四种无向量RAG 方案实测:BM25、GraphRAG、Tree Search、Agent
|
存储 Java Apache
开发指南061-nexus权限管理
平台后台服务的核心是组件,管理组件的软件有
|
并行计算 JavaScript 算法
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
这篇文章介绍了如何在Windows 10上使用Visual Studio 2017成功编译OpenCV 4.5.1及其contrib模块和CUDA支持,并解决了编译过程中的问题,如项目文件无效、cmake工具问题,并添加了Qt和JavaScript支持,同时提供了参考链接。
428 7
opencv4.5.1+contrib+cuda编译成功,实时人头匹配,手动狗头
|
前端开发 NoSQL 中间件
rbac基于用户角色的权限管理
rbac - 基于角色的权限管理,介绍了acl(访问权限列表)基于用户的权限管理,rbac基于角色的权限管理。
rbac基于用户角色的权限管理
让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
|
C++ Python
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
1061 1
|
存储 监控 Linux
在Linux中,如何查看和管理Linux系统日志?
在Linux中,如何查看和管理Linux系统日志?