Skip to content

Fluxo de Revisão de Código: /code-review e Auditoria de Segurança

O que você vai aprender

Revisão de código é uma etapa crucial para garantir qualidade e segurança. Este tutorial ajuda você a:

  • ✅ Usar o comando /code-review para verificar automaticamente as alterações de código
  • ✅ Entender a diferença entre o agent code-reviewer e o security-reviewer
  • ✅ Dominar a checklist de segurança (OWASP Top 10)
  • ✅ Detectar e corrigir vulnerabilidades comuns (SQL injection, XSS, chaves hardcoded, etc.)
  • ✅ Aplicar padrões de qualidade de código (tamanho de funções, comprimento de arquivos, cobertura de testes, etc.)
  • ✅ Entender os critérios de aprovação (CRITICAL, HIGH, MEDIUM, LOW)

Seu problema atual

Você terminou de escrever o código e está pronto para commitar, mas:

  • ❌ Não sabe se há vulnerabilidades de segurança no código
  • ❌ Preocupa-se em ter deixado passar problemas de qualidade
  • ❌ Não tem certeza se seguiu as melhores práticas
  • ❌ Verificação manual é demorada e propensa a erros
  • ❌ Quer encontrar problemas automaticamente antes do commit

O fluxo de revisão de código do Everything Claude Code resolve esses problemas:

  • Verificação automatizada: O comando /code-review analisa automaticamente todas as alterações
  • Revisão especializada: O agent code-reviewer foca em qualidade, o security-reviewer foca em segurança
  • Classificação padronizada: Problemas são categorizados por severidade (CRITICAL, HIGH, MEDIUM, LOW)
  • Sugestões detalhadas: Cada problema inclui recomendações específicas de correção

Quando usar esta técnica

Antes de cada commit você deve executar a revisão de código:

  • ✅ Após concluir código de nova funcionalidade
  • ✅ Após corrigir bugs
  • ✅ Após refatorar código
  • ✅ Ao adicionar endpoints de API (obrigatório executar security-reviewer)
  • ✅ Código que processa entrada do usuário (obrigatório executar security-reviewer)
  • ✅ Código envolvendo autenticação/autorização (obrigatório executar security-reviewer)

Melhor prática

Crie o hábito: antes de cada git commit, execute /code-review. Se houver problemas CRITICAL ou HIGH, corrija antes de commitar.

🎒 Preparação

O que você precisa:

  • Everything Claude Code instalado (se ainda não instalou, veja o Início Rápido)
  • Algumas alterações de código (pode usar /tdd para escrever algum código primeiro)
  • Conhecimento básico de operações Git

O que você não precisa:

  • Não precisa ser especialista em segurança (o agent detecta para você)
  • Não precisa memorizar todas as melhores práticas de segurança (o agent vai lembrá-lo)

Conceito central

Everything Claude Code oferece dois agents especializados de revisão:

Agent code-reviewer

Foca em qualidade de código e melhores práticas, verificando:

  • Qualidade de código: Tamanho de funções (>50 linhas), comprimento de arquivos (>800 linhas), profundidade de aninhamento (>4 níveis)
  • Tratamento de erros: Falta de try/catch, instruções console.log
  • Padrões de código: Convenções de nomenclatura, código duplicado, padrões de imutabilidade
  • Melhores práticas: Uso de emojis, TODO/FIXME sem ticket, JSDoc ausente
  • Cobertura de testes: Código novo sem testes

Cenário de uso: Todas as alterações de código devem passar pelo code-reviewer.

Agent security-reviewer

Foca em vulnerabilidades e ameaças de segurança, verificando:

  • OWASP Top 10: SQL injection, XSS, CSRF, bypass de autenticação, etc.
  • Vazamento de chaves: API keys, senhas, tokens hardcoded
  • Validação de entrada: Validação de entrada do usuário ausente ou inadequada
  • Autenticação e autorização: Verificações inadequadas de identidade e permissões
  • Segurança de dependências: Pacotes desatualizados ou com vulnerabilidades conhecidas

Cenário de uso: Código sensível à segurança (API, autenticação, pagamentos, entrada do usuário) deve obrigatoriamente passar pelo security-reviewer.

Níveis de severidade dos problemas

NívelSignificadoBloqueia commit?Exemplo
CRITICALVulnerabilidade grave ou problema crítico de qualidade❌ Deve bloquearAPI key hardcoded, SQL injection
HIGHProblema importante de segurança ou qualidade❌ Deve bloquearFalta tratamento de erro, vulnerabilidade XSS
MEDIUMProblema de prioridade média⚠️ Pode commitar com cautelaUso de emoji, JSDoc ausente
LOWProblema menor✓ Pode corrigir depoisFormatação inconsistente, números mágicos

Mãos à obra: Sua primeira revisão de código

Passo 1: Criar algumas alterações de código

Primeiro use /tdd para escrever um endpoint de API simples (com algumas falhas de segurança):

bash
/tdd

Peça ao Claude Code para criar uma API de login de usuário, o código será algo assim:

typescript
// src/api/login.ts
export async function loginUser(email: string, password: string) {
  const query = `SELECT * FROM users WHERE email = '${email}'`  // ❌ Risco de SQL injection
  const user = await db.query(query)
  
  if (user.password === password) {  // ❌ Comparação de senha em texto plano
    const token = generateToken(user.id)
    console.log('User logged in:', { email, password })  // ❌ Vazamento de senha no log
    return { token }
  }
}

Por quê Este código contém múltiplas falhas de segurança e problemas de qualidade, ideal para demonstrar a funcionalidade de revisão de código.

O que você deve ver: Arquivo de código criado.


Passo 2: Executar a revisão de código

Agora execute o comando /code-review:

bash
/code-review

Por quê/code-review chamará automaticamente o agent code-reviewer para verificar todas as alterações não commitadas.

O que você deve ver: O agent começa a analisar o código e depois exibe o relatório de revisão.


Passo 3: Analisar o relatório de revisão

O code-reviewer produzirá um relatório similar a este:

markdown
# Code Review Report

## Critical Issues (Fix Immediately)

### 1. [CRITICAL] Hardcoded credentials
**File:** src/api/login.ts:3
**Issue:** Password logging in console
**Fix:** Remove password from logs, only log user ID

```typescript
// ❌ Bad
console.log('User logged in:', { email, password })

// ✓ Good
console.log('User logged in:', { email, userId: user.id })

2. [CRITICAL] SQL injection vulnerability

File: src/api/login.ts:2 Issue: String concatenation in SQL query Fix: Use parameterized queries

typescript
// ❌ Bad
const query = `SELECT * FROM users WHERE email = '${email}'`

// ✓ Good
const { data } = await supabase
  .from('users')
  .select('*')
  .eq('email', email)

High Issues (Fix Before Production)

3. [HIGH] Plaintext password comparison

File: src/api/login.ts:4 Issue: Password stored in plaintext Fix: Use bcrypt to hash passwords

typescript
// ❌ Bad
if (user.password === password) {

// ✓ Good
import bcrypt from 'bcrypt'
const isValid = await bcrypt.compare(password, user.password)

Recommendations

  1. Add input validation for email format
  2. Add rate limiting to prevent brute force attacks
  3. Use JWT tokens instead of generating custom tokens

Approval Status

❌ BLOCKED - 2 CRITICAL issues found

Please fix all CRITICAL and HIGH issues before committing.


**Por quê**
O relatório é categorizado por severidade, cada problema inclui localização, descrição, sugestão de correção e exemplo de código.

**O que você deve ver**: Relatório de revisão claro, apontando todos os problemas e sugestões de correção.

---

### Passo 4: Corrigir os problemas

Corrija o código conforme o relatório:

```typescript
// src/api/login.ts
import bcrypt from 'bcrypt'
import { z } from 'zod'

const LoginSchema = z.object({
  email: z.string().email(),
  password: z.string().min(8)
})

export async function loginUser(input: unknown) {
  // Validação de entrada
  const validated = LoginSchema.parse(input)
  
  // Query parametrizada (previne SQL injection)
  const { data: user } = await supabase
    .from('users')
    .select('*')
    .eq('email', validated.email)
    .single()
  
  if (!user) {
    throw new Error('Invalid credentials')
  }
  
  // Comparação de senha com hash
  const isValid = await bcrypt.compare(validated.password, user.password_hash)
  
  if (isValid) {
    const token = generateToken(user.id)
    console.log('User logged in:', { email: validated.email, userId: user.id })
    return { token }
  }
  
  throw new Error('Invalid credentials')
}

Por quê Corrigir todos os problemas CRITICAL e HIGH, adicionar validação de entrada e comparação de senha com hash.

O que você deve ver: Código atualizado, vulnerabilidades de segurança eliminadas.


Passo 5: Revisar novamente

Execute /code-review novamente:

bash
/code-review

Por quê Verificar que todos os problemas foram corrigidos, garantindo que o código pode ser commitado.

O que você deve ver: Um relatório de aprovação similar a este:

markdown
# Code Review Report

## Summary

- **Critical Issues:** 0 ✓
- **High Issues:** 0 ✓
- **Medium Issues:** 1 ⚠️
- **Low Issues:** 1 💡

## Medium Issues (Fix When Possible)

### 1. [MEDIUM] Missing JSDoc for public API
**File:** src/api/login.ts:9
**Issue:** loginUser function missing documentation
**Fix:** Add JSDoc comments

```typescript
/**
 * Authenticates a user with email and password
 * @param input - Login credentials (email, password)
 * @returns Object with JWT token
 * @throws Error if credentials invalid
 */
export async function loginUser(input: unknown) {

Low Issues (Consider Fixing)

2. [LOW] Add rate limiting

File: src/api/login.ts:9 Issue: Login endpoint lacks rate limiting Fix: Add express-rate-limit middleware

typescript
import rateLimit from 'express-rate-limit'

const loginLimiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 minutes
  max: 5 // 5 attempts per window
})

app.post('/api/login', loginLimiter, loginUser)

Approval Status

✅ APPROVED - No CRITICAL or HIGH issues

Note: Medium and Low issues can be fixed in follow-up commits.


**O que você deve ver**: Revisão aprovada, código pronto para commit.

---

### Passo 6: Revisão de segurança dedicada (opcional)

Se seu código envolve endpoints de API, autenticação, pagamentos ou outras funcionalidades sensíveis à segurança, você pode chamar especificamente o security-reviewer:

```bash
/security-reviewer

Por quê O security-reviewer realiza uma análise mais profunda do OWASP Top 10, verificando mais padrões de vulnerabilidades de segurança.

O que você deve ver: Relatório detalhado de revisão de segurança, incluindo análise OWASP, verificação de vulnerabilidades de dependências, recomendações de ferramentas de segurança, etc.


Checkpoint ✅

Após completar os passos acima, você deve:

  • ✅ Saber executar o comando /code-review
  • ✅ Entender a estrutura e conteúdo do relatório de revisão
  • ✅ Saber corrigir problemas de código conforme o relatório
  • ✅ Saber que problemas CRITICAL e HIGH devem ser corrigidos
  • ✅ Entender a diferença entre code-reviewer e security-reviewer
  • ✅ Ter o hábito de revisar antes de commitar

Armadilhas comuns

Erro comum 1: Pular a revisão de código

Problema: Achar que o código é simples e commitar diretamente, sem executar a revisão.

Consequência: Pode deixar passar vulnerabilidades de segurança, ser rejeitado pelo CI/CD ou causar incidentes em produção.

Abordagem correta: Crie o hábito de executar /code-review antes de cada commit.


Erro comum 2: Ignorar problemas MEDIUM

Problema: Ver problemas MEDIUM e não fazer nada, deixando acumular.

Consequência: Qualidade do código diminui, dívida técnica acumula, manutenção futura fica difícil.

Abordagem correta: Embora problemas MEDIUM não bloqueiem o commit, devem ser corrigidos em tempo razoável.


Erro comum 3: Corrigir SQL injection manualmente

Problema: Escrever escape de strings você mesmo, em vez de usar queries parametrizadas.

Consequência: Escape incompleto, ainda há risco de SQL injection.

Abordagem correta: Sempre use ORM ou queries parametrizadas, não concatene SQL manualmente.


Erro comum 4: Confundir os dois reviewers

Problema: Executar apenas code-reviewer para todo código, ignorando security-reviewer.

Consequência: Vulnerabilidades de segurança podem passar despercebidas, especialmente em código envolvendo API, autenticação, pagamentos.

Abordagem correta:

  • Código comum: code-reviewer é suficiente
  • Código sensível à segurança: deve executar security-reviewer também

Resumo da lição

O fluxo de revisão de código é uma das funcionalidades principais do Everything Claude Code:

FuncionalidadeAgentO que verificaSeveridade
Revisão de qualidadecode-reviewerTamanho de funções, tratamento de erros, melhores práticasHIGH/MEDIUM/LOW
Revisão de segurançasecurity-reviewerOWASP Top 10, vazamento de chaves, vulnerabilidades de injeçãoCRITICAL/HIGH/MEDIUM

Pontos-chave:

  1. Antes de cada commit execute /code-review
  2. Problemas CRITICAL/HIGH devem ser corrigidos antes de commitar
  3. Código sensível à segurança deve passar pelo security-reviewer
  4. Relatório de revisão inclui localização detalhada e sugestões de correção
  5. Crie o hábito: revisar → corrigir → revisar novamente → commitar

Prévia da próxima lição

Na próxima lição aprenderemos sobre Automação com Hooks.

Você vai aprender:

  • O que são Hooks e como automatizar o fluxo de desenvolvimento
  • Como usar mais de 15 hooks de automação
  • Como personalizar Hooks para as necessidades do projeto
  • Cenários de aplicação de hooks como SessionStart, SessionEnd, PreToolUse

Apêndice: Referência do código-fonte

Clique para expandir e ver a localização do código-fonte

Atualizado em: 2026-01-25

FuncionalidadeCaminho do arquivoLinha
---------
---------
---------
---------

Constantes importantes:

  • Limite de tamanho de função: 50 linhas (code-reviewer.md:47)
  • Limite de tamanho de arquivo: 800 linhas (code-reviewer.md:48)
  • Limite de profundidade de aninhamento: 4 níveis (code-reviewer.md:49)

Funções importantes:

  • /code-review: Chama o agent code-reviewer para revisão de qualidade de código
  • /security-reviewer: Chama o agent security-reviewer para auditoria de segurança
  • git diff --name-only HEAD: Obtém arquivos alterados não commitados (code-review.md:5)

Critérios de aprovação (code-reviewer.md:90-92):

  • ✅ Approve: No CRITICAL or HIGH issues
  • ⚠️ Warning: MEDIUM issues only (can merge with caution)
  • ❌ Block: CRITICAL or HIGH issues found