Files
everything-claude-code/docs/ko-KR/commands/go-review.md
2026-03-29 21:21:18 -04:00

3.6 KiB

description
description
관용적 패턴, 동시성 안전성, 에러 처리, 보안에 대한 포괄적인 Go 코드 리뷰. go-reviewer 에이전트를 호출합니다.

Go 코드 리뷰

이 커맨드는 go-reviewer 에이전트를 호출하여 Go 전용 포괄적 코드 리뷰를 수행합니다.

이 커맨드가 하는 것

  1. Go 변경사항 식별: git diff로 수정된 .go 파일 찾기
  2. 정적 분석 실행: go vet, staticcheck, golangci-lint 실행
  3. 보안 스캔: SQL 인젝션, 커맨드 인젝션, 레이스 컨디션 검사
  4. 동시성 리뷰: 고루틴 안전성, 채널 사용, 뮤텍스 패턴 분석
  5. 관용적 Go 검사: Go 컨벤션과 모범 사례 준수 여부 확인
  6. 보고서 생성: 심각도별 이슈 분류

사용 시점

/go-review를 사용해야 할 때:

  • Go 코드를 작성하거나 수정한 후
  • Go 변경사항을 커밋하기 전
  • Go 코드가 포함된 PR 리뷰 시
  • 새 Go 코드베이스에 온보딩할 때
  • 관용적 Go 패턴 학습 시

리뷰 카테고리

CRITICAL (반드시 수정)

  • SQL/커맨드 인젝션 취약점
  • 동기화 없는 레이스 컨디션
  • 고루틴 누수
  • 하드코딩된 인증 정보
  • unsafe 포인터 사용
  • 핵심 경로에서 에러 무시

HIGH (수정 권장)

  • 컨텍스트 없는 에러 래핑 누락
  • 에러 반환 대신 panic 사용
  • 컨텍스트 전파 누락
  • 데드락을 유발하는 버퍼 없는 채널
  • 인터페이스 미충족 에러
  • 뮤텍스 보호 누락

MEDIUM (고려)

  • 비관용적 코드 패턴
  • 공개 항목에 godoc 주석 누락
  • 비효율적인 문자열 연결
  • 슬라이스 사전 할당 누락
  • 테이블 기반 테스트 미사용

실행되는 자동 검사

# 정적 분석
go vet ./...

# 고급 검사 (설치된 경우)
staticcheck ./...
golangci-lint run

# 레이스 감지
go build -race ./...

# 보안 취약점
govulncheck ./...

사용 예시

User: /go-review

Agent:
# Go 코드 리뷰 보고서

## 리뷰된 파일
- internal/handler/user.go (수정됨)
- internal/service/auth.go (수정됨)

## 정적 분석 결과
✓ go vet: 이슈 없음
✓ staticcheck: 이슈 없음

## 발견된 이슈

[CRITICAL] 레이스 컨디션
파일: internal/service/auth.go:45
이슈: 동기화 없이 공유 맵에 접근
```go
var cache = map[string]*Session{}  // 동시 접근!

func GetSession(id string) *Session {
    return cache[id]  // 레이스 컨디션
}
```
수정: sync.RWMutex 또는 sync.Map 사용
```go
var (
    cache   = map[string]*Session{}
    cacheMu sync.RWMutex
)

func GetSession(id string) *Session {
    cacheMu.RLock()
    defer cacheMu.RUnlock()
    return cache[id]
}
```

[HIGH] 에러 컨텍스트 누락
파일: internal/handler/user.go:28
이슈: 컨텍스트 없이 에러 반환
```go
return err  // 컨텍스트 없음
```
수정: 컨텍스트와 함께 래핑
```go
return fmt.Errorf("get user %s: %w", userID, err)
```

## 요약
- CRITICAL: 1
- HIGH: 1
- MEDIUM: 0

권장: FAIL: CRITICAL 이슈가 수정될 때까지 merge 차단

승인 기준

상태 조건
PASS: 승인 CRITICAL 또는 HIGH 이슈 없음
WARNING: 경고 MEDIUM 이슈만 있음 (주의하여 merge)
FAIL: 차단 CRITICAL 또는 HIGH 이슈 발견

다른 커맨드와의 연동

  • /go-test를 먼저 사용하여 테스트 통과 확인
  • /go-build를 사용하여 build 에러 발생 시 수정
  • /go-review를 커밋 전에 사용
  • /code-review를 사용하여 Go 외 일반적인 관심사항 리뷰

관련 항목

  • 에이전트: agents/go-reviewer.md
  • 스킬: skills/golang-patterns/, skills/golang-testing/