📝 贡献指南
July 8, 2026 · View on GitHub
非常感谢您对 ncmm 项目的关注和贡献!
为了确保项目的健壮性与高质量演进,在您提交贡献之前,请花几分钟阅读以下指南。
🏗️ 透明的开发
ncmm的所有工作均在 GitHub 上公开进行。- 无论是核心团队成员还是外部贡献者的 Pull Request,都将经历相同的 Review 和自动化 CI 流程。
🐛 提交 Issue
我们使用 GitHub Issues 进行 Bug 反馈和新特性建议。
在提交 Issue 前,请遵循以下步骤:
- 搜索已有问题:检查是否已经有类似或已被解答的 Issue。
- 提供复现细节:对于 Bug 报告,请提供完整的运行环境信息(Go 版本、Docker 部署版本等)以及重现 Bug 的最简运行命令或配置文件。
- 清晰描述期望:对于新功能建议,请清晰指出您想要的变更以及期望的最终行为。
🚀 提交 Pull Request
共建流程
- 认领或创建 Issue:在 GitHub 上创建 Issue 并认领,或在已有的 Issue 中留言表明您正在着手处理,以避免多人重复劳动。
- 本地分支开发:从
dev分支拉取新分支进行开发(命名推荐:feat/xxx或fix/xxx)。 - 完成代码与测试:编写代码,并为新功能补充必要的单元测试。
- 提交 PR:将分支推送到您的 Fork 仓库,并向官方仓库的
dev分支提交 Pull Request。
开发准备工作
要进行本地开发和调试,您需要准备以下环境:
- Go 语言环境:项目需要 Go 1.25.0 及以上版本。
- 依赖项获取:
go mod download
本地测试与运行
- 本地编译运行:
go run main.go --help - 执行单元测试:
在提交 PR 之前,请确保本地所有测试均已成功通过:
go test ./...
🎨 代码开发规范
为了保持代码库的整洁和高可读性,请遵守以下 Go 编码规范:
-
格式化与 Linter:
- 所有的代码必须在提交前使用
gofmt进行格式化。 - 建议在 IDE 中开启
goimports自动清理无用导入。
- 所有的代码必须在提交前使用
-
注释规范:
- 所有的公共结构体、接口和函数必须附带清晰的中文注释,解释其入参、返回值和核心设计逻辑。
-
本地数据库 (BadgerDB) 使用原则:
- 鉴于多进程或多实例并发执行的场景,任何对本地进度数据库的操作必须遵守“随用随开、即用即关”的细粒度生命周期管理原则。
- 禁止在包含网络请求或
time.Sleep挂起的长时间任务里独占或持有database.Database实例。
-
提交信息规范:
- 我们推崇使用 Conventional Commits 规范来书写提交信息。
- 常用前缀示例:
feat:新增功能fix:修复 Bugrefactor:代码重构(无功能、Bug 变更)perf:性能或体验优化docs:仅文档更新bump:版本号升级或依赖库更新