内容目录
什么是 goplantuml?
goplantuml 是一个面向 Golang 开发者的
工具,用于将代码的结构(包括包、结构体、接口及其关系)转化为
PlantUML 可视化类图。通过解析 Golang 源码,
goplantuml自动生成描述代码架构的 .puml 文件,帮助开发者更直观地理解项目结
构。
适合 Golang 开发者的场景
在 Golang 开发中,项目结构往往由多个包(package)和类型(如结构体、接口)组成,
随着项目规模扩大,理解代码的架构变得更加复杂。 goplantuml 的目标是通过自动化的方
式生成类图,让开发者能够:
- 快速理解项目的模块划分和类型关系。
- 发现潜在的依赖问题或循环引用。
- 为团队新成员提供清晰的架构概览。
- 辅助文档编写和代码审查。
核心功能
- 解析 Golang 源代码:支持解析结构体、接口及它们之间的嵌套关系和依赖。
- 生成 UML 类图:输出标准的 .puml文件,可以直接用 PlantUML 渲染为图像。
- 隐藏私有成员:支持 -hide-private-members参数,仅显示导出的(public)成
 员,保护代码隐私。
- 递归处理目录:支持递归扫描目录,分析所有相关的 Golang 源码文件。
- 灵活的输出控制:开发者可以使用多种选项调整生成的类图细节,如排除特定的包或
 目录。
安装与使用
安装
通过 go install 命令快速安装:
go get github.com/jfeliu007/goplantuml/parser
go install github.com/jfeliu007/goplantuml/cmd/goplantuml@latest确保 $GOPATH/bin 已添加到环境变量中。
基本用法
以下命令生成类图的 .puml 文件:
goplantuml [-recursive] path/to/gofiles path/to/gofiles2
goplantuml [-recursive] path/to/gofiles path/to/gofiles2 > diagram_file_name.puml
Usage of goplantuml:
  -aggregate-private-members
        Show aggregations for private members. Ignored if -show-aggregations is not used.
  -hide-connections
        hides all connections in the diagram
  -hide-fields
        hides fields
  -hide-methods
        hides methods
  -ignore string
        comma separated list of folders to ignore
  -notes string
        Comma separated list of notes to be added to the diagram
  -output string
        output file path. If omitted, then this will default to standard output
  -recursive
        walk all directories recursively
  -show-aggregations
        renders public aggregations even when -hide-connections is used (do not render by default)
  -show-aliases
        Shows aliases even when -hide-connections is used
  -show-compositions
        Shows compositions even when -hide-connections is used
  -show-connection-labels
        Shows labels in the connections to identify the connections types (e.g. extends, implements, aggregates, alias of
  -show-implementations
        Shows implementations even when -hide-connections is used
  -show-options-as-note
        Show a note in the diagram with the none evident options ran with this CLI
  -title string
        Title of the generated diagram
  -hide-private-members
        Hides all private members (fields and methods)常用选项
- -recursive:递归扫描子目录。
- -hide-private-members:隐藏私有成员,减少输出中的噪声。
- -ignore "<dir>":忽略特定目录,避免解析不相关的代码。
使用示例
假设项目目录如下:
project/
│
├── main.go
├── models/
│   ├── user.go
│   └── order.go
└── services/
    ├── user_service.go
    └── order_service.go执行命令:
goplantuml -recursive ./project > diagram.puml生成的类图可以清晰展示 models 和 services 包中的依赖关系,以及结构体之间的嵌
套和接口实现。
体验
可以通过 dumels 在线体验这个工具。
优势与局限
优势
- 快速直观:适合中大型项目的架构分析。
- 自动化:省去手动绘制图表的繁琐步骤。
- 社区支持:开源项目,活跃的开发与问题跟踪。
局限
- 不支持动态依赖:工具仅解析静态代码,无法捕获运行时动态关系。
- 复杂性限制:对于特别大的项目,生成的类图可能过于复杂,建议分模块生成。
总结
goplantuml 是 Golang 开发者的优秀辅助工具,为代码架构的可视化和理解提供了强有力
的支持。如果你正在开发一个 Golang 项目并希望更直观地呈现其架构,不妨试试
goplantuml.
