用途:为 Cog 代码库的 Go 代码审查提供规则清单。该项目 CLI(cmd/cog/、pkg/)与支持工具(tools/)使用 Go。
审查范围与跳过项:golangci-lint 已运行 errcheck、gocritic、gosec、govet、ineffassign、misspell、revive、staticcheck、unused,这些能发现的问题不必重复标记。
主要关注点: 错误处理:检查返回但未处理或被静默丢弃的错误;面向用户的错误应使用 pkg/errors.CodedError 并带错误码;避免丢失上下文的泛化包装(如无 %w 的 fmt.Errorf("failed"))。 导入:应分三组——标准库、第三方、内部(github.com/replicate/cog/pkg/...);仅在确实错误时标记,不做纯装饰性重排。 测试:致命断言用 testify/require,非致命用 testify/assert;不用裸 if 加 t.Fatal/t.Errorf;相似用例优先表驱动测试;优先具体断言(Equal、Contains、NoError)而非 True/False。 并发:关注 goroutine 泄漏(无清理路径、缺少 context 取消)、未同步的共享状态、通道误用(向已关闭通道发送、上下文不当的无缓冲通道)。 Docker/容器模式:CLI 使用 Docker Go SDK,注意客户端泄漏、未关闭的响应体;Dockerfile 生成位于 pkg/dockerfile/,注意模板注入风险。 架构:命令放在 pkg/cli/,业务逻辑放在 pkg/,配置解析与校验放在 pkg/config/,不要把 CLI 关注点与库逻辑混在一起。
使用方式:作为审查清单逐项核对,配合现有 linter 结果使用。限制:资料仅给出上述审查准则,未提供安装、运行命令、收费、平台或效果等信息,暂未提供。