Files
everything-claude-code/docs/ja-JP/commands/go-build.md
2026-02-12 16:56:29 +09:00

4.4 KiB

description
description
Goビルドエラー、go vet警告、リンター問題を段階的に修正します。最小限の外科的修正のためにgo-build-resolverエージェントを呼び出します。

Go Build and Fix

このコマンドはgo-build-resolverエージェントを呼び出し、最小限の変更でGoビルドエラーを段階的に修正します。

このコマンドの機能

  1. 診断の実行: go buildgo vetstaticcheckを実行
  2. エラーの解析: ファイル別にグループ化し、重要度順にソート
  3. 段階的修正: 一度に1つのエラーを修正
  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: 未定義の識別子

File: internal/service/user.go:25 Error: undefined: UserRepository Cause: インポート欠落

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

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

修正2: 型の不一致

File: internal/handler/api.go:42 Error: cannot use x (type string) as type int

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

修正3: 戻り値の欠落

File: internal/handler/api.go:58 Error: 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

ビルドステータス: 成功


## 修正される一般的なエラー

| エラー | 典型的な修正 |
|-------|-------------|
| `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. **一度に1つの修正** - 各変更を検証
5. **最小限の変更** - リファクタリングではなく、修正のみ

## 停止条件

以下の場合、エージェントは停止してレポートします:
- 同じエラーが3回の試行後も持続
- 修正がさらなるエラーを引き起こす
- アーキテクチャの変更が必要
- 外部依存関係が欠落

## 関連コマンド

- `/go-test` - ビルド成功後にテストを実行
- `/go-review` - コード品質をレビュー
- `/verify` - 完全な検証ループ

## 関連

- Agent: `agents/go-build-resolver.md`
- Skill: `skills/golang-patterns/`