Como fazer code review quando o código veio da IA

TL;DR - Trate como código de júnior esperto: foco em contratos, edge cases e dependências novas, não em estilo. As armadilhas reais são testes enganosos e “magic” que ninguém sabe debugar.


Code review de PR com código gerado por IA pede mentalidade diferente. O estilo costuma estar ok; o que falha é lógica, cantos do mapa e dependências que você não pediu. Eu reviso com três eixos: contratos, testes e dependências.

flowchart TB
  Codigo[Código da IA] --> Contratos[Contratos e entradas/saídas]
  Codigo --> Testes[Testes cobrem feliz e infeliz?]
  Codigo --> Deps[Dependências novas?]
  Contratos --> Aprovacao[Aprovar ou devolver]
  Testes --> Aprovacao
  Deps --> Aprovacao

1. Contratos e entradas/saídas

A função faz exatamente o que o chamador espera? Nome e assinatura batem com o comportamento? Entradas inválidas ou vazias estão tratadas?

Eu olho isso antes de qualquer outra coisa. Código de IA tende a cobrir o caminho feliz e esquecer null, lista vazia, string em branco ou número fora do intervalo. Vale perguntar: “e se alguém passar X?” e checar se há tratamento ou falha explícita.

2. Testes: feliz e infeliz

Existem testes? Cobrem o caminho feliz e pelo menos um infeliz?

Código de IA às vezes passa nos casos óbvios e quebra no primeiro cenário real. Testes que só repetem o que o código faz (sem assertions de negócio) também são armadilha: dão sensação de cobertura sem garantir comportamento. Eu exijo pelo menos um caso “quando dá errado” antes de aprovar.

3. Dependências novas

Apareceu lib ou framework que a equipe não usa? Entenda o que faz antes de aprovar.

Cada dependência nova é dívida: alguém vai ter que debugar, atualizar e explicar. Evito “magic” que ninguém no time sabe destrinchar. Se a IA trouxe uma solução com lib exótica, prefiro trocar por algo que já usamos, mesmo que o código fique um pouco mais verboso.

Mentalidade que ajuda

Trate como código de um júnior muito esperto e um pouco distraído. Revise com o mesmo rigor; não assuma que está certo só porque “a IA escreveu”. O que você ganha em velocidade de geração pode perder em bugs sutis e dívida escondida. Foco em contratos, edge cases e dependências deixa o review produtivo e o código seguro para merge.