
几个可能导致 swagger 生成很慢的原因主要原因分析1.--parseDependency选项导致全依赖解析当前swag init命令使用了--parseDependency参数bashswag init --parseDependency --instanceName swagger -g .\main.go -d .\这个选项会递归解析所有依赖包的注释包括项目内部依赖如beapi外部第三方库如gin、gorm等所有间接依赖共 260 个包这会导致大量不必要的文件扫描严重影响性能。2.docs.go 文件过大从读取的文件内容看docs.go被截断超过 40KB说明项目包含大量 API 端点解析和生成时间自然会很长。3.解析范围过宽当前-d .\参数表示解析当前目录下所有文件但项目结构复杂plainTextbeweb/ ├── webctl/ # 多个控制器 ├── setupweb/ # 配置 ├── docs/ # swagger 文档 └── ...4.swag 版本较旧项目使用的是github.com/swaggo/swag v1.16.4较新版本可能有性能优化。优化方案方案一移除--parseDependency推荐修改swagini.batbatchrem 移除 --parseDependency 选项 swag init --instanceName swagger -g .\main.go -d .\效果只解析当前项目的注释跳过所有依赖包性能提升显著。方案二限制解析目录batchswag init --instanceName swagger -g .\main.go -d .\webctl,.\setupweb效果只解析必要的目录减少扫描范围。方案三参考 beopc 项目的优化配置beopc 项目已经做了优化batchswag init --parseDependency -g .\main.go --exclude webplat,webbiz,controller方案四升级 swag 版本bashgo get github.com/swaggo/swaglatest建议的最终优化修改E:\soft\gotrain\beweb\swagini.batbatchecho off rem 优化后的 swagger 生成命令 rem 1. 移除 --parseDependency 避免解析外部依赖 rem 2. 明确指定需要解析的目录 swag init --instanceName swagger -g .\main.go -d .\webctl,.\setupweb cd ..优化效果预估优化项预期效果移除--parseDependency性能提升 80%避免解析数百个依赖包限制解析目录减少 30-50% 的扫描文件数升级 swag额外 10-20% 性能提升如果需要保留依赖解析功能例如某些响应类型定义在依赖包中可以使用--parseInternal替代--parseDependency只解析内部包而不解析外部第三方库。