Golang开源代码生成业务模型对象的工具推荐
Golang开源代码生成业务模型对象的工具推荐 大家好,
是否有任何开源工具推荐,可以帮助我为开源的Go应用程序创建(类似UML的)业务和技术模型?
根据您在线程是否了解Go语言的任何混淆方法/工具?中的回复,您有什么建议吗?
您的想法将不胜感激。
谢谢
你好,感谢你的建议。它能用于本地代码仓库(文件夹)吗?
谢谢
更多关于Golang开源代码生成业务模型对象的工具推荐的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
实际上,如果你有代码,可以将其连接到 pprof 工具,进行深入的执行分析。你甚至可以使用 torch 获得更好的可视化效果。https://blog.golang.org/profiling-go-programs
我之前使用过nomnoml,这是一个基于浏览器的DSL语法转UML类图的开源项目。它非常方便,可以快速生成美观的流程图和状态图。
你收到的确切错误是什么?
另外,你是在 cmd 还是 PowerShell 终端、WSL 中运行这些命令,或者是在像 Cygwin、MSYS2 或 git-bash 这样的 POSIX 封装环境中运行?
这是一篇关于使用IDA Pro逆向分析Go二进制文件的精彩文章:https://rednaga.io/2016/09/21/reversing_go_binaries_like_a_pro/
它提供了一些执行可视化功能。
感谢您的澄清。确实,在这种情况下,go-diagram 和 goviz 可能是您正在寻找的工具。然而,仅仅阅读代码本身就能让您走得很远。毕竟,Go 语言在设计时就考虑了代码的可读性。(正如 @CurtGreen 所指出的,代码本身就是对代码最简洁的表示。)
你好,感谢你的意见。
我的请求与混淆无关,只是想引用你在那个讨论中提出的一个参考点。
我对从UML类模型生成Golang代码不感兴趣,而是想从现有的Golang应用程序生成反向工程产物。不过,如果将来能够从(类似DSL的)模型生成模板代码,那又何乐而不为呢?任何能节省时间并提供初始加速的工具我都会采用。
我会尝试使用go-diagram和goviz,并将我的发现反馈给你。
谢谢
我在 Windows 10 电脑上无法安装 go-diagram 或 goviz。
我通过 chocolatey 安装了 goviz;但示例中的 goviz 命令 goviz -i github.com/mattn/anko | dot -Tpng -o anko.png 无法被识别。我试图从包含该工具的文件夹中运行该命令。
对于 go-diagram,我尝试从 GitHub 克隆的仓库所在文件夹中运行 go-diagram 命令。
希望能得到您的建议。
谢谢
如果您的PATH变量不包含当前目录,请尝试使用.\goviz在当前文件夹中调用goviz。此外,您发布的命令行显示goviz需要dot,这是一个第三方工具。您是否安装了dot?除此之外,我不知道可能是什么问题。我几乎不接触Windows系统,只能在此进行猜测。
go-diagram可能存在与goviz相同的问题。如果.\go-diagram没有帮助,请在此处发布错误信息。这些信息可能有助于找出问题所在。
// 代码示例保留原样
func main() {
fmt.Println("hello world")
}
您好 @christophberger 和 @CurtGreen,
非常感谢您们对我的请求给予的快速回复。
我虽然是 Go 语言领域的新手,但从事软件解决方案交付已有二十余年。 我已经完成了基础编程课程,现在正在学习使用 Go 进行 Web 开发。
我的主要兴趣是利用现有的使用 Google Protocol Buffers、Bazel 等技术的 Go API 代码;在了解整体 API 的同时,规划重构工作,因为我正在学习这一技术栈。
尽管我学习并欣赏了 Go 代码的优美和这门语言的力量;但为了规划重构和重新设计工作,快速估算工作量总是必要的;这有助于我在与他们进行有效且相关的对话时,调动必要的资源。
生成的设计文档也将为待重构代码创建设计文档提供良好引导。
我会查看您们推荐的工具,然后带着我的发现回来与您们交流。
再次感谢,祝您们度过一个愉快的夜晚。
谢谢
嗯,我不太确定代码混淆与业务模型和UML有什么关系 😊
恐怕我无法推荐任何工具,因为我不了解任何针对Go的建模工具。快速搜索"UML golang"发现了go-diagram,这是一个用于Go的UML编辑器,还有goviz,一个用于Go包的依赖关系可视化工具。然而,这些工具主要用于分析而非创建模型。
确实,要找到一个能从模型生成Go代码的UML建模工具似乎并不容易(如果这正是您要找的)。我认为问题在于UML是为面向对象语言量身定制的,而Go显然不是。面向对象语言强调对象作为核心构建块(从而提倡"名词的世界"),而Go则强调动作(“动词”)。因此我敢说,采用UML建模方式可能会产生质量较差的Go代码,因此可能会受到那些热爱清晰、可读源代码的Go开发者的排斥。(虽然我可能错了,因为我对UML几乎没有什么经验。)
在Go语言生态中,有几个开源工具可以帮助生成业务模型对象或类似UML的结构化表示。以下是几个推荐的工具,附带示例说明:
-
GoUML
这是一个基于Go代码生成UML类图的工具,支持从Go源文件提取结构体、接口和关系。
安装:go install github.com/tenfyzhong/gouml[@latest](/user/latest)示例用法:
gouml -p ./your-go-project -o output.puml这会解析项目中的Go文件,生成PlantUML格式的图表,显示结构体、方法和依赖关系。
-
Go-Callvis
虽然主要用于可视化调用图,但它能展示包和函数间的依赖,辅助理解技术模型。
安装:go install github.com/ofabry/go-callvis[@latest](/user/latest)示例用法:
go-callvis -format png -file output ./your-package生成调用图PNG文件,帮助分析代码结构。
-
Go-Struct-To-Schema
对于生成数据模型,这个工具可以将Go结构体转换为JSON Schema或其他格式,适用于业务对象建模。
安装:go install github.com/invopop/jsonschema/cmd/jsonschema[@latest](/user/latest)示例用法:
假设有Go结构体:type User struct { ID int `json:"id"` Name string `json:"name"` Email string `json:"email"` }运行:
jsonschema -type User > user_schema.json输出JSON Schema,用于描述业务对象属性。
-
Go-Model-Generator
一些社区工具如sqlc或gormat可以从数据库生成Go模型代码,反向支持业务对象创建。例如,使用sqlc:
安装:go install github.com/sqlc-dev/sqlc/cmd/sqlc[@latest](/user/latest)在
sqlc.yaml配置数据库查询,自动生成Go结构体和CRUD方法。
这些工具能根据现有代码或规范生成模型表示,提升开发效率。根据您的具体需求(如从代码生成图表或从数据库生成结构体),选择合适的工具集成到工作流中。如果有更多上下文,我可以提供更具体的示例。


