当前位置: 首页 > news >正文

GoPlantUML,go代码到类图

前言

GoPlantUML 是一个开源工具,旨在简化从 Go 源代码生成 PlantUML 图的过程。使用 GoPlantUML,开发人员可以毫不费力地可视化其 Go 项目中的结构和关系,从而有助于代码理解和文档编写。通过解析 Go 源代码并生成 PlantUML 图,GoPlantUML 使开发人员能够为其代码库架构、包依赖关系和函数交互创建清晰简洁的可视化表示。该工具通过提供复杂 Go 项目的可视化概览,简化了文档编制过程并增强了团队成员之间的协作。

安装

先决条件
Golang 1.17 或更高版本

go get github.com/jfeliu007/goplantuml/parser
go install github.com/jfeliu007/goplantuml/cmd/goplantuml@latest

如果没有PlantUML插件,最好也安装一个,可以直接展示生成的内容。
也可以在线预览 https://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa70000

用法

goplantuml [-recursive] 路径1 路径2 > diagram_file_name.puml
Usage of goplantuml:-aggregate-private-members : 显示私有成员的聚合。如果未使用-show- aggreations,则忽略。-hide-connections : 隐藏关系图中的所有连接-hide-fields : 隐藏字段-hide-methods : 隐藏方法-ignore string : 要忽略的文件夹列表,以逗号分隔-notes string : 要添加到图表中的注释列表,以逗号分隔-output string : 输出文件路径。如果省略,则默认为标准输出-recursive : 递归遍历所有目录-show-aggregations : 即使使用-hide-connections也会呈现公共聚合(默认情况下不呈现)-show-aliases : 即使使用-hide-connections也会呈现公共聚合(默认情况下不呈现)-show-compositions : 即使使用-hide-connections也显示组合-show-connection-labels : 在连接中显示标签以标识连接类型(例如扩展、实现、聚合、别名)-show-implementations : 即使使用-hide-connections也显示实现-show-options-as-note : 在使用该CLI运行的无明显选项的图中显示注释-title string : 生成图的标题-hide-private-members : 隐藏所有私有成员(字段和方法)

demo

package testingsupport//MyInterface only has one method, notice the signature return value
type MyInterface interface {foo() bool
}//MyStruct1 will implement the foo() bool function so it will have an "extends" association with MyInterface
type MyStruct1 struct {
}func (s1 *MyStruct1) foo() bool {return true
}//MyStruct2 will be directly composed of MyStruct1 so it will have a composition relationship with it
type MyStruct2 struct {MyStruct1
}//MyStruct3 will have a foo() function but the return value is not a bool, so it will not have any relationship with MyInterface
type MyStruct3 struct {Foo MyStruct1
}func (s3 *MyStruct3) foo() {}

执行生成uml

goplantuml ./ > test.puml

模型效果
image

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 33.递归、搜索、回溯之记忆化搜索
  • 2024 年最佳 Chrome 验证码扩展,解决 reCAPTCHA 问题
  • 秋招突击——9/10、9\11——算法练习——携程笔试练习——2024年秋招第一批笔试
  • MYSQL数据库——MYSQL管理
  • 鸿蒙开发入门day19-使用NDK接口构建UI(二)
  • qt使用对数坐标的例子,qchart用QLogValueAxis坐标不出图解决
  • 第J3-1周:DenseNet算法 实现乳腺癌识别(pytorch)
  • 【Echarts】vue3打开echarts的正确方式
  • 惬意享受阅读,优雅的微信公众号订阅方式,极空间部署『WeWe RSS』
  • C++函数在库中的地址
  • java面向对象:构造方法
  • PMP--一模--解题--131-140
  • 感知器神经网络
  • 移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——12.二叉树(习题)
  • 【Kubernetes】常见面试题汇总(十)
  • .pyc 想到的一些问题
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • Java,console输出实时的转向GUI textbox
  • javascript 哈希表
  • JavaScript服务器推送技术之 WebSocket
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Laravel Mix运行时关于es2015报错解决方案
  • Next.js之基础概念(二)
  • PV统计优化设计
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • Terraform入门 - 1. 安装Terraform
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • vagrant 添加本地 box 安装 laravel homestead
  • 大数据与云计算学习:数据分析(二)
  • 基于 Babel 的 npm 包最小化设置
  • 技术胖1-4季视频复习— (看视频笔记)
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 模型微调
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 微信小程序开发问题汇总
  • 小程序开发中的那些坑
  • 硬币翻转问题,区间操作
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​queue --- 一个同步的队列类​
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (Python第六天)文件处理
  • (搬运以学习)flask 上下文的实现
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (力扣题库)跳跃游戏II(c++)
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (译)2019年前端性能优化清单 — 下篇
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET Core 2.1路线图
  • .net core 的缓存方案