swag parseDependecy太慢的问题

下面是使用 swag v1.7.9 构建接口文件的耗时,可以看到因为添加了一些额外的类型,比如 datatypes.JSON,所以需要用到 parseDependencyparseInternal,构建时间一共花了四五分钟,在项目开始,频繁修改接口格式的时候,这是很难接受的。

# swag init --parseDependency --parseInternal
2022/02/23 10:26:44 Generate swagger docs....
2022/02/23 10:26:44 Generate general API Info, search dir:./
2022/02/23 10:30:43 Generating app.Response
2022/02/23 10:30:43 Generating entity.Cluster
2022/02/23 10:30:43 Generating entity.Model
2022/02/23 10:30:43 Generating entity.Clusters
2022/02/23 10:30:43 Generating app.Pagination
2022/02/23 10:30:43 Generating entity.User
2022/02/23 10:30:43 Generating entity.Namespace
2022/02/23 10:30:43 Generating entity.Notification
2022/02/23 10:30:43 Generating datatypes.JSON
2022/02/23 10:30:43 Generating json.RawMessage
2022/02/23 10:30:43 Generating entity.Notifications
2022/02/23 10:30:43 Generating entity.PrometheusRule
2022/02/23 10:30:43 Generating entity.Alert
2022/02/23 10:30:43 Generating entity.PrometheusRules
2022/02/23 10:30:43 Generating entity.Users
2022/02/23 10:30:43 create docs.go at  docs/docs.go
2022/02/23 10:30:43 create swagger.json at  docs/swagger.json
2022/02/23 10:30:43 create swagger.yaml at  docs/swagger.yaml

查看 swag 社区是否有关注到这个问题,发现已经有一个大神提过,并且提出了解决方案,但是目前还没有被社区接纳。

https://github.com/swaggo/swag/pull/1108

具体问题就不深入了,大概就是寻找依赖的时候遍历了太多次,为了尽快提升 swag 的速度,clone 了大神的仓库,直接编译了一个新的 swag 二进制,重新运行,速度瞬间提升。

# 为了区分原来的swag,新编译出来的swag重命名为swag_clone
# swag_clone init --parseDependency --parseInternal --parseGoList
2022/02/23 10:34:30 Generate swagger docs....
2022/02/23 10:34:30 Generate general API Info, search dir:./
2022/02/23 10:34:33 Generating app.Response
2022/02/23 10:34:33 Generating entity.Cluster
2022/02/23 10:34:33 Generating entity.Model
2022/02/23 10:34:33 Generating entity.Clusters
2022/02/23 10:34:33 Generating app.Pagination
2022/02/23 10:34:33 Generating entity.User
2022/02/23 10:34:33 Generating entity.Namespace
2022/02/23 10:34:33 Generating entity.Notification
2022/02/23 10:34:33 Generating datatypes.JSON
2022/02/23 10:34:33 Generating json.RawMessage
2022/02/23 10:34:33 Generating entity.Notifications
2022/02/23 10:34:33 Generating entity.PrometheusRule
2022/02/23 10:34:33 Generating entity.Alert
2022/02/23 10:34:33 Generating entity.PrometheusRules
2022/02/23 10:34:33 Generating entity.Users
2022/02/23 10:34:33 create docs.go at  docs/docs.go
2022/02/23 10:34:33 create swagger.json at  docs/swagger.json
2022/02/23 10:34:34 create swagger.yaml at  docs/swagger.yaml
Swag是一个用于生成和管理Golang项目的Swagger文档的开源工具。首先,我们需要在项目的根目录下执行一些安装命令来安装Swag的相关库。具体命令如下: ``` $ go get -u github.com/swaggo/swag/cmd/swag $ go get -u github.com/swaggo/gin-swagger $ go get -u github.com/swaggo/files $ go get -u github.com/alecthomas/template ``` 安装完成后,我们需要重新启动服务端,并在浏览器中访问Swagger的地址(通常是http://127.0.0.1:8000/swagger/index.html),就可以看到项目的Swagger文档展示。这个文档主要分为三个部分:项目主体信息、接口路由信息和模型信息。它们共同组成了Swagger文档的主要内容。 Swag的使用可以参考官方提供的快速上手文档和详细使用指南。这些文档将帮助您了解如何在Golang项目中使用Swag生成和管理Swagger文档。 值得注意的是,Swag的使用涉及到Golang和JavaScript两个部分。因此,在学习和使用Swag时,可以参考一些相关文章和教程,以更好地理解和运用其中的技术点。例如,可以了解关于Golang注释解析的内容,以及如何修正Swag与logrus以及go ast的集成。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [基于golang的swagger超贴心、超详细使用指南【有很多坑】](https://blog.csdn.net/qq_57467091/article/details/123373790)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [Golang OpenAPI工具Swag修正——go ast篇](https://blog.csdn.net/baijiafan/article/details/125673803)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值