6.7 贡献流程与代码规范

贡献流程与代码规范

欢迎社区贡献!无论是 Bug 修复、新功能还是文档改进,都请遵循以下流程,以便代码能顺畅合并。

分支策略

  • master / main:对外发布分支,保持随时可发版
  • develop:集成分支,所有新功能先进这里
  • feature/xxx:功能分支,从 develop 拉出
  • fix/xxx:修复分支,紧急修复可从 master 拉出

提交代码前的检查清单

  • go build ./... 编译通过
  • go test ./... 全部通过
  • go test -race ./... 无数据竞态
  • gofmt -s -w . 已格式化
  • go vet ./... 无警告
  • 新功能配套单元测试
  • 敏感信息(密码、Token、真实数据)未提交
  • 更新相关文档(README / mdoc / 接口示例)

提交信息规范

推荐使用 Conventional Commits

<type>(<scope>): <subject>

[body]

type 常见值:

type 用途
feat 新功能
fix Bug 修复
docs 文档变更
refactor 重构(无功能变化)
test 测试相关
chore 构建、工具、CI 等杂项
perf 性能优化

示例:

feat(short_link): 支持批量导入 Excel 格式
fix(ab_test): 修复权重为 0 时分流异常
docs(v1.0.0): 新增开发指引章节

PR / MR 流程

  1. Fork 仓库(或在 CNB 上拉分支)
  2. 基于 develop 创建 feature/xxx 分支
  3. 本地开发、跑测试
  4. 推送后发起 PR / MR,目标分支 develop
  5. 标题简明、描述补全:背景、改动点、测试方式、影响面
  6. 等待 Code Review,按反馈迭代
  7. 合并后删除分支

代码规范

Go 语言约定

  • 遵循 Effective Go
  • 使用 gofmt -sgoimports 格式化
  • 优先用标准库,谨慎引入第三方依赖
  • 错误处理:不要吞掉错误,要么处理要么向上返回
  • 避免全局变量,依赖通过 Helper 注入
  • 日志不要打印敏感信息(密码、完整 Token、身份证等)

SQL 与 GORM

  • 索引:高频查询字段加索引
  • 避免 SELECT *,显式指定字段
  • 大事务拆小,避免锁竞争
  • 使用 gorm.io/gorm/clause 做 upsert,不要拼 SQL

前端(admin-webui)

  • 独立仓库维护:cnb.cool/mliev/open/dwz-admin-webui
  • 使用 Vue 3 + TypeScript + Ant Design Pro
  • 提 PR 时同步说明对应的后端改动

社群与帮助

许可证

本项目可二次开发用于商业用途,但禁止发布衍生版本,具体条款以仓库根目录 LICENSE 为准。贡献代码即视为同意按相同许可证分发。