本页面为希望为 Gin Web 框架做出贡献的开发者提供了全面的指南。内容涵盖了开发环境设置、编码规范、测试要求以及 Pull Request(PR)工作流程。
Gin 是一个开源项目,欢迎所有人的贡献。您可以通过多种方式贡献,包括:
在贡献之前,请熟悉本文档的核心架构及其他相关章节,以了解 Gin 的结构。
要贡献 Gin,您需要:
来源: .github/workflows/gin.yml21-25 go.mod1-3
来源: .github/workflows/gin.yml3-9
Gin 通过 Linting(代码检查)、Formatting(代码格式化)和测试要求来维护高标准的代码质量。所有贡献都必须遵守这些标准。
本项目使用以下工具来确保代码质量:
检查和格式化您的代码:
来源: .golangci.yml1-72 Makefile33-75
Gin 遵循标准的 Go 代码格式化约定,并有一些项目特定的规则。
来源: .golangci.yml3-23 Makefile33-75
所有代码贡献都必须包含适当的测试。Gin 使用 Go 的标准测试包,并结合一些额外的工具。
CI 流水线在多个平台(Ubuntu、macOS)和 Go 版本(1.23、1.24)上使用各种构建标签运行测试。
来源: .github/workflows/gin.yml31-84 Makefile10-31
CI 系统会自动测量代码覆盖率并上传到 Codecov。您应致力于通过您的贡献来维持或提高测试覆盖率。
来源: .github/workflows/gin.yml77-83 Makefile12-31
make fmt 以确保格式正确。您的 Pull Request 需要通过所有 CI 检查才能被合并。
来源: .github/workflows/gin.yml15-83 .github/workflows/codeql.yml17-49
Gin 使用 GoReleaser 来管理发布。当新的标签被推送到仓库时,发布过程会自动进行:
更新日志根据提交信息的前缀进行分类:
feat:)fix:)chore:)refactor:)build: 或 ci:)docs:)为确保您的更改出现在更新日志的正确部分,请在您的提交信息中使用适当的前缀。
来源: .github/workflows/goreleaser.yml1-32 .goreleaser.yaml1-56
项目包含一个 Makefile,其中包含各种有用的命令。
| 命令 | 描述 |
|---|---|
make test | 运行测试 |
make fmt | 使用 gofmt 格式化代码 |
make fmt-check | 检查格式而不修改文件 |
make vet | 运行 go vet 检查可疑的构造 |
make lint | 对所有包运行 golint |
make misspell | 修复代码中的常见拼写错误 |
make misspell-check | 检查拼写错误而不修复 |
make tools | 安装开发工具 |
make help | 显示可用命令的帮助 |
您可以运行 make help 来查看所有可用的命令。
来源: Makefile10-106
贡献 Gin 时,请牢记这些模式:
更多详情,请参考核心架构页面。
来源: .github/workflows/gin.yml15-83 Makefile10-106
Gin 在 go.mod 文件中维护了一个依赖列表。添加或更新依赖时:
当前依赖列表可以在 go.mod 文件中找到。
来源: go.mod5-46
Gin 非常重视安全,并使用 CodeQL 进行安全分析。所有 Pull Request 在合并前都会被扫描是否存在潜在的安全问题。
如果您发现安全漏洞,请遵循负责任披露的惯例,而不是公开提交 issue。
来源: .github/workflows/codeql.yml17-49
贡献 Gin 时:
通过遵循这些指南,您将有助于维护 Gin 代码库的质量,并使整个开发过程更加顺畅。