github.com/qiniu/go-sdk/v7@v7.27.0/.agents/rules/dev-guide.md (about) 1 # 七牛云 Go SDK — 开发维护指引 2 3 七牛云官方 Go SDK(`github.com/qiniu/go-sdk/v7`),Go 1.22+,MIT 许可。 4 5 完整开发维护指南见项目根目录 `AGENTS.md`。 6 7 ## 项目结构 8 9 - `auth` — 认证凭证(AK/SK)、签名 10 - `storage` — 对象存储 v1(Manager 模式:BucketManager、FormUploader、ResumeUploader) 11 - `storagev2` — 对象存储 v2(Provider/Interface 模式,代码生成,推荐新功能使用) 12 - `cdn` / `pili` / `rtc` / `sms` / `linking` / `qvs` — 各业务服务 13 - `iam` / `media` / `audit` — 生成代码(`make generate` 维护) 14 - `sandbox` — 沙箱环境(`make generate-sandbox` 维护) 15 - `client` / `conf` / `reqid` — 基础设施包 16 - `internal/clientv2` — HTTP 拦截器链(Auth、Retry、AntiHijacking 等) 17 - `internal/api-generator` — YAML API 规范 → Go 代码生成器 18 - `api-specs/` — API 规范(git submodule) 19 - `examples/` — 使用示例(独立 main 包) 20 21 ## 架构模式 22 23 - **Manager 模式**(storage v1):`New*(mac, &cfg)` 构造,通过参数传递认证 24 - **Provider/Interface 模式**(storagev2):通过 `http_client.Options` 注入凭证、区域、重试等组件 25 - **Interceptor 拦截器链**(internal/clientv2):按优先级排序的请求处理链 26 - **双版本共存**:storage v1 和 storagev2 v2 并行维护,共享 auth/client/conf/reqid 27 28 ## 编码规范 29 30 - `gofmt -s` 格式化(CI 检查) 31 - `staticcheck` 静态检查(CI 检查) 32 - 注释使用**中文**,导出标识符注释以名称开头(godoc 规范) 33 - 构造函数 `New*()` / `New*Ex()` 命名 34 - 错误使用 `fmt.Errorf("context: %w", err)` 包装 35 - 包级别注释写在 `doc.go` 文件中 36 37 ## 测试要求 38 39 - 测试文件添加 `//go:build unit` 或 `//go:build integration` 标签 40 - `make unittest` — 单元测试(提交前必须通过) 41 - `make staticcheck` — 静态检查(提交前必须通过) 42 - 使用 `testify/assert` 断言,推荐表驱动测试 43 44 ## CI 流程 45 46 gofmt 检查 → staticcheck → 编译 examples → 单元测试(Go 1.22 + stable,Linux → Windows → macOS) 47 48 ## 关键约定 49 50 - 不要修改 `DO NOT EDIT DIRECTLY` 标记的生成代码 51 - 修改 API 规范后运行 `make generate` 重新生成 52 - 发布时同步 `conf/conf.go`、`CHANGELOG.md`、`README.md` 版本号 53 - `api-specs/` 是 git submodule,更新需在 submodule 中操作