R$ 49,00code
  • Claude

Code review adversarial

  • sem nota
  • 0
  • 0
  • 11 de jul. de 2026

O modelo tenta quebrar o seu diff antes de aprovar qualquer coisa.

R$ 49,00

Pagamento único para este item.

Laboratório

Teste o funcionamento antes de comprar.

Testar
1 execução real

Prompt

Você está vendo 10 de 37 linhas

Você é um revisor de código cético. Sua reputação sofre mais com um falso
positivo do que com um achado perdido.

## Diff em revisão
```diff
{{diff}}
```

## Contexto
- Linguagem/stack: {{stack}}

Adquira esse prompt para visualizá-lo

O que este prompt faz

Um review em duas passadas: a primeira levanta hipóteses de falha, a segunda tenta refutar cada uma delas construindo um caso concreto de entrada e estado. Só sobrevive o achado com cenário de falha reproduzível, o que elimina quase todo o ruído típico de review automatizado.

Preview

Resultado

[alta] search.ts:2, resultado vazio nunca é cacheado, e cada requisição volta ao banco

Cenário de falha: fetchSearch("xyzzy") devolve [] para um termo sem resultado. cache.set guarda [], mas na requisição seguinte cache.get devolve [], que é truthy como objeto, então esta hipótese não se confirma para array. Confirma-se, porém, se fetchSearch devolver null ou 0 resultados como undefined: aí if (cached) é falso e o cache nunca serve. Com um termo popular e sem resultado, os 4 workers vão ao banco em toda requisição.

Correção sugerida:

- const cached = cache.get(key);
- if (cached) return cached;
+ if (cache.has(key)) return cache.get(key);

[média] search.ts:3, nada impede a estampida de cache

Cenário de falha: o termo "iphone" expira às 12h00m00s. Vinte requisições concorrentes chegam em 12h00m00.05s. Todas leem o cache vazio e todas disparam fetchSearch antes da primeira gravar. O banco recebe 20 consultas idênticas, o pico é maior do que sem cache nenhum, porque elas chegam simultâneas.

Correção sugerida: guarde a promise em vez do resultado, para que os concorrentes aguardem a mesma execução:

if (!cache.has(key)) cache.set(key, fetchSearch(query), 60);
return cache.get(key);

[média] search.ts:4, erro de busca é cacheado como sucesso pela correção acima

Cenário de falha: ao cachear a promise, uma rejeição de fetchSearch fica guardada por 60s e toda requisição no período recebe o mesmo erro. Sem tratamento, um blip de 200ms no banco vira 60s de indisponibilidade da busca.

Correção sugerida: remova a entrada no catch antes de repropagar.


Descartadas na passada 2

  • Chave de cache colide entre usuários: não construí o cenário, key não aparece no diff. Ver "Não verificado".
  • Vazamento de memória: o cache tem TTL de 60s; sem evidência de crescimento ilimitado.
  • Off-by-one no TTL: 60 vs 60000 é plausível, mas a unidade da API de cache não está no diff.

Não verificado

  • Como key é construída (arquivo não incluído), é onde estaria um possível vazamento entre usuários.
  • A unidade do terceiro argumento de cache.set (segundos ou milissegundos).
  • Se fetchSearch já tem retry interno, o que mudaria a análise de estampida.

Como usar

  1. 1

    Copie o template

    Depois da compra o template completo fica disponível para copiar.

  2. 2

    Preencha as variáveis

    Troque a variável destacada pelo seu conteúdo. Deixar em branco degrada a saída.

  3. 3

    Escolha um dos modelos listados

    Rode em um dos modelos listados na lateral. Modelo menor costuma degradar o resultado.

  4. 4

    Cole e execute

    Ou use o laboratório, com sua chave, e compare com o preview.