跳转至

Go Build and Fix

此命令调用 go-build-resolver 代理,以最小改动逐步修复 Go 构建错误。

此命令的功能

  1. 执行诊断:运行 go build、go vet、staticcheck
  2. 解析错误:按文件分组,并按重要性排序
  3. 逐步修复:一次只修复一个错误
  4. 验证每次修复:每次更改后重新运行构建
  5. 报告摘要:显示已修复和剩余的问题

使用时机

在以下情况下使用 /go-build: - go build ./... 因错误失败 - go vet ./... 报告问题 - golangci-lint run 显示警告 - 模块依赖关系损坏 - 拉取了会破坏构建的更改

执行的诊断命令

# プライマリビルドチェック
go build ./...

# 静的解析
go vet ./...

# 拡張リンティング(利用可能な場合)
staticcheck ./...
golangci-lint run

# モジュール問題
go mod verify
go mod tidy -v

会话示例

User: /go-build

Agent:
# Goビルド解決

## 初期診断

```bash
$ go build ./...
internal/service/user.go:25:15: undefined: UserRepository
internal/handler/api.go:42:9: cannot use x (type string) as type int
internal/handler/api.go:58:2: missing return at end of function

エラー検出: 3件

修正1: 未定義の識別子

ファイル: internal/service/user.go:25 エラー: undefined: UserRepository 原因: インポート欠落

// インポートを追加
import "project/internal/repository"

// 変更前
var repo UserRepository
// 変更後
var repo repository.UserRepository
$ go build ./...
# 残り2件のエラー

修正2: 型の不一致

ファイル: internal/handler/api.go:42 エラー: cannot use x (type string) as type int

// 変更前
count := params.Get("count")
// 変更後
countStr := params.Get("count")
count, _ := strconv.Atoi(countStr)
$ go build ./...
# 残り1件のエラー

修正3: 戻り値の欠落

ファイル: internal/handler/api.go:58 エラー: missing return at end of function

func GetUser(id string) (*User, error) {
    if id == "" {
        return nil, ErrInvalidID
    }
    user := findUser(id)
    // 欠落していた戻り値を追加
    return user, nil
}
$ go build ./...
# ビルド成功!

最終検証

$ go vet ./...
# 問題なし

$ go test ./...
ok      project/internal/service   0.015s
ok      project/internal/handler   0.023s

サマリー

指標 件数
修正されたビルドエラー 3
修正されたVet警告 0
変更されたファイル 2
残存問題 0

ビルドステータス: PASS: 成功 ```

常见错误修复

错误 典型修复
undefined: X 添加导入或修正类型错误
cannot use X as Y 修正类型转换或赋值
missing return 添加 return 语句
X does not implement Y 添加缺失的方法
import cycle 重构包
declared but not used 删除变量或使用该变量
cannot find package go get 或 go mod tidy

修复策略

  1. 先处理构建错误 - 代码必须能够编译
  2. 再处理 Vet 警告 - 修正可疑结构
  3. 最后处理 Lint 警告 - 风格和最佳实践
  4. 一次只做一个修复 - 验证每次更改
  5. 最小化更改 - 只修复,不重构

停止条件

在以下情况下,代理会停止并报告: - 同一错误在 3 次尝试后仍然存在 - 修复引发了更多错误 - 需要架构变更 - 缺少外部依赖

  • /go-test - 构建成功后运行测试
  • /go-review - 审查代码质量
  • /verify - 完整验证循环
  • 代理:agents/go-build-resolver.md
  • 技能:skills/golang-patterns/

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 ev/ECC