코드리뷰데이터·SQL보안by affaan-m
고 언어 코드 검토
이디엄 패턴, 동시성 안전성, 오류 처리 및 보안을 위한 포괄적인 고 언어 코드 검토를 수행합니다. go-reviewer 에이전트를 호출합니다.
한 줄 평가 — 다음 사람 도와주세요
언제 쓰나
고 언어 코드의 이디엄 패턴, 동시성 안전성, 오류 처리, 보안을 검토하고 싶을 때
SKILL.md
Lattice 한국어 번역 · 원본 affaan-m/everything-claude-code (841beea). 복사 → 저장하면 Claude Code가 인식합니다.
---
description: Go 코드의 관용적인 패턴, 동시성 안전성, 오류 처리, 보안에 대한 포괄적인 검토입니다. go-reviewer 에이전트를 호출합니다.
---
# Go 코드 검토
이 명령어는 Go 코드에 대한 포괄적인 검토를 위해 **go-reviewer** 에이전트를 호출합니다.
## 이 명령어의 기능
1. **Go 변경 사항 식별**: `git diff`를 통해 수정된 `.go` 파일 찾기
2. **정적 분석 실행**: `go vet`, `staticcheck`, `golangci-lint` 실행
3. **보안 스캔**: SQL 주입, 명령어 주입, 경쟁 조건 검사
4. **동시성 검토**: 고루틴 안전성, 채널 사용, 뮤텍스 패턴 분석
5. **관용적인 Go 검사**: 코드가 Go 관용 및 최선의 관행을 따르는지 확인
6. **보고서 생성**: 심각성별로 문제 분류
## 사용 시기
다음 경우에 `/go-review`를 사용하세요:
- Go 코드를 작성하거나 수정한 후
- Go 변경 사항을 커밋하기 전
- Go 코드가 있는 풀 리퀘스트를 검토할 때
- 새로운 Go 코드베이스에 온보딩할 때
- 관용적인 Go 패턴을 배우는 경우
## 검토 카테고리
### CRITICAL (수정해야 함)
- SQL/명령어 주입 취약점
- 동기화 없이 경쟁 조건
- 고루틴 누수
- 하드코딩된 자격 증명
- 안전하지 않은 포인터 사용
- 임계 경로에서 무시된 오류
### HIGH (수정해야 함)
- 오류 래핑이 없는 경우
- 오류 반환 대신 패닉
- 컨텍스트 전파가 안 된 경우
- 데드락을 일으키는 버퍼링되지 않은 채널
- 인터페이스 만족 오류가 발생하지 않는 경우
- 뮤텍스 보호가 없는 경우
### MEDIUM (고려해야 함)
- 비관용적인 코드 패턴
- 내보내기용 godec 주석이 없는 경우
- 비효율적인 문자열 연결
- 사전 할당되지 않은 슬라이스
- 테이블 주도 테스트를 사용하지 않는 경우
## 자동화된 검사
```bash
# 정적 분석
go vet ./...
# 고급 검사 (설치된 경우)
staticcheck ./...
golangci-lint run
# 경쟁 탐지
go build -race ./...
# 보안 취약점
govulncheck ./...
```
## 사용 예시
```text
사용자: /go-review
에이전트:
# 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("사용자 %s 가져오기: %w", userID, err)
```
## 요약
- CRITICAL: 1
- HIGH: 1
- MEDIUM: 0
권장 사항: FAIL: CRITICAL 문제가 해결될 때까지 병합 차단
## 승인 기준
| 상태 | 조건 |
|--------|-----------|
| PASS: 승인 | CRITICAL 또는 HIGH 문제 없음 |
| WARNING: 경고 | MEDIUM 문제만 존재 (주의하여 병합) |
| FAIL: 차단 | CRITICAL 또는 HIGH 문제 발생 |
## 다른 명령어와의 통합
- `/go-test`를 사용하여 테스트가 통과하는지 확인
- 빌드 오류가 발생할 경우 `/go-build` 사용
- 커밋하기 전에 `/go-review` 사용
- 비-Go 특정 문제에 대한 `/code-review` 사용
## 관련 항목
- 에이전트: `agents/go-reviewer.md`
- 기술: `skills/golang-patterns/`, `skills/golang-testing/`필요한 도구
호버하면 설명CC
설치 + 호출 (2단계)
Claude Code CLI 기준.
- 1
SKILL.md 저장
아래 버튼으로 복사 → 다음 경로로 저장.
~/.claude/skills/everything-claude-code-118/SKILL.md - 2
호출
Claude Code 채팅창에서 자연어로 부르면 자동 발동:
예) 고 언어 코드의 이디엄 패턴
트리거가 안 잡히면 SKILL.md의
description줄에 더 구체적인 한국어 키워드를 추가해보세요.