mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-04 08:13:30 +08:00
148 lines
3.6 KiB
Markdown
148 lines
3.6 KiB
Markdown
---
|
|
description: Revisão completa de código Go para padrões idiomáticos, segurança de concorrência, tratamento de erro e segurança. Invoca o agente go-reviewer.
|
|
---
|
|
|
|
# Code Review Go
|
|
|
|
Este comando invoca o agente **go-reviewer** para revisão abrangente e específica de Go.
|
|
|
|
## O Que Este Comando Faz
|
|
|
|
1. **Identificar Mudanças Go**: Encontra arquivos `.go` modificados via `git diff`
|
|
2. **Rodar Análise Estática**: Executa `go vet`, `staticcheck` e `golangci-lint`
|
|
3. **Varredura de Segurança**: Verifica SQL injection, command injection e race conditions
|
|
4. **Revisão de Concorrência**: Analisa segurança de goroutines, uso de channels e padrões com mutex
|
|
5. **Checagem de Go Idiomático**: Verifica se o código segue convenções e boas práticas de Go
|
|
6. **Gerar Relatório**: Categoriza problemas por severidade
|
|
|
|
## Quando Usar
|
|
|
|
Use `/go-review` quando:
|
|
- Após escrever ou modificar código Go
|
|
- Antes de commitar mudanças Go
|
|
- Ao revisar pull requests com código Go
|
|
- Ao entrar em um novo codebase Go
|
|
- Ao aprender padrões idiomáticos Go
|
|
|
|
## Categorias de Revisão
|
|
|
|
### CRITICAL (Obrigatório Corrigir)
|
|
- Vulnerabilidades de SQL/Command injection
|
|
- Race conditions sem sincronização
|
|
- Vazamento de goroutine
|
|
- Credenciais hardcoded
|
|
- Uso inseguro de ponteiros
|
|
- Erros ignorados em caminhos críticos
|
|
|
|
### HIGH (Deve Corrigir)
|
|
- Falta de wrapping de erro com contexto
|
|
- Panic em vez de retorno de erro
|
|
- Context não propagado
|
|
- Canais não bufferizados causando deadlock
|
|
- Erros de interface não satisfeita
|
|
- Falta de proteção com mutex
|
|
|
|
### MEDIUM (Considere)
|
|
- Padrões não idiomáticos
|
|
- Falta de comentários godoc em exports
|
|
- Concatenação de string ineficiente
|
|
- Slice sem pré-alocação
|
|
- Table-driven tests não usados
|
|
|
|
## Checagens Automáticas Executadas
|
|
|
|
```bash
|
|
# Static analysis
|
|
go vet ./...
|
|
|
|
# Advanced checks (if installed)
|
|
staticcheck ./...
|
|
golangci-lint run
|
|
|
|
# Race detection
|
|
go build -race ./...
|
|
|
|
# Security vulnerabilities
|
|
govulncheck ./...
|
|
```
|
|
|
|
## Exemplo de Uso
|
|
|
|
```text
|
|
User: /go-review
|
|
|
|
Agent:
|
|
# Go Code Review Report
|
|
|
|
## Files Reviewed
|
|
- internal/handler/user.go (modified)
|
|
- internal/service/auth.go (modified)
|
|
|
|
## Static Analysis Results
|
|
✓ go vet: No issues
|
|
✓ staticcheck: No issues
|
|
|
|
## Issues Found
|
|
|
|
[CRITICAL] Race Condition
|
|
File: internal/service/auth.go:45
|
|
Issue: Shared map accessed without synchronization
|
|
```go
|
|
var cache = map[string]*Session{} // Concurrent access!
|
|
|
|
func GetSession(id string) *Session {
|
|
return cache[id] // Race condition
|
|
}
|
|
```
|
|
Fix: Use sync.RWMutex or 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] Missing Error Context
|
|
File: internal/handler/user.go:28
|
|
Issue: Error returned without context
|
|
```go
|
|
return err // No context
|
|
```
|
|
Fix: Wrap with context
|
|
```go
|
|
return fmt.Errorf("get user %s: %w", userID, err)
|
|
```
|
|
|
|
## Summary
|
|
- CRITICAL: 1
|
|
- HIGH: 1
|
|
- MEDIUM: 0
|
|
|
|
Recommendation: FAIL: Block merge until CRITICAL issue is fixed
|
|
```
|
|
|
|
## Critérios de Aprovação
|
|
|
|
| Status | Condição |
|
|
|--------|----------|
|
|
| PASS: Aprovado | Sem problemas CRÍTICO ou ALTO |
|
|
| WARNING: Aviso | Apenas problemas MÉDIOS (merge com cautela) |
|
|
| FAIL: Bloqueado | Problemas CRÍTICO ou ALTO encontrados |
|
|
## Integração com Outros Comandos
|
|
|
|
- Use `/go-test` primeiro para garantir que os testes passam
|
|
- Use `/go-build` se houver erros de build
|
|
- Use `/go-review` antes de commitar
|
|
- Use `/code-review` para preocupações não específicas de Go
|
|
|
|
## Relacionado
|
|
|
|
- Agent: `agents/go-reviewer.md`
|
|
- Skills: `skills/golang-patterns/`, `skills/golang-testing/`
|