Como revisar código escrito por IA com um checklist prático
Código gerado por IA pode parecer completo e ainda conter suposições ocultas sobre entradas, casos limite, dependências e falhas. Este guia usa um pequeno exemplo sintético em CSV para revisar o código de forma sistemática antes de aplicá-lo a dados reais.
Conteúdo verificado 2026.09.21Inclui arquivos de exemplo
Ver o sumário
A tradução foi feita com IA. Confira o código, as unidades e os valores junto com o original. A revisão por falantes nativos de cada idioma ainda não foi concluída. English
Para quem éPara quem usa um assistente de chat com IA para criar pequenos scripts em Python e quer revisá-los de forma repetível antes de trabalhar com dados reais.
Preparação
Python 3.12
Conhecimento básico para executar scripts em Python e entender arquivos CSV
01Por que código escrito por IA também precisa de revisão
Um assistente de chat com IA pode gerar rapidamente código sintaticamente plausível, mas parecer correto não significa estar correto. Um script pode assumir que todas as linhas de entrada estão completas, interpretar uma coluna de forma errada, sobrescrever um resultado existente, depender de um pacote que você não instalou ou falhar apenas quando recebe um valor incomum. Por isso, não basta verificar se o código parece razoável. É preciso revisar suas suposições uma a uma.
Uma revisão compacta pode ser organizada em cinco perguntas: quais entradas o código espera? O que acontece nos casos limite? Como os erros são tratados? Quais dependências são necessárias? Quais testes revelariam um resultado incorreto? O comportamento da saída também deve ser verificado, porque um cálculo correto ainda pode ser inseguro se sobrescrever arquivos existentes.
02Comece com um pequeno exemplo sintético
Suponha que exista um arquivo sintético chamado orders.csv. Ele possui três colunas: order_id, quantity e unit_price. As três linhas de dados são A001,2,10.00; A002,3,5.50; e A003,1,8.00. A receita esperada pode ser calculada facilmente à mão: 2 × 10.00 = 20.00, 3 × 5.50 = 16.50 e 1 × 8.00 = 8.00. Portanto, o total deve ser 44.50 para 6 unidades.
Manter o primeiro exemplo pequeno é importante. Se um script produzido por IA retornar 44.50, você consegue verificar esse número de forma independente. Se começar diretamente com um arquivo de trabalho de 50,000 linhas, um resultado aparentemente plausível pode esconder um erro de leitura ou cálculo.
order_id
quantity
unit_price
receita esperada
A001
2
10.00
20.00
A002
3
5.50
16.50
A003
1
8.00
8.00
Total
6
44.50
03Peça regras explícitas de entrada e saída
É melhor especificar o formato do arquivo, o cálculo, o comportamento em caso de falha e a política de saída em vez de pedir apenas um script para resumir vendas.
Informe que orders.csv deve conter order_id, quantity e unit_price.
Peça que o script rejeite valores ausentes ou números inválidos em vez de tentar adivinhá-los.
Peça o cálculo da quantidade total e da receita total.
Exija apenas a biblioteca padrão do Python 3.12.
Exija que os resultados sejam gravados na pasta outputs e que o script pare se o arquivo de saída previsto já existir.
04Inspecione uma resposta típica da IA
Uma resposta razoável pode usar csv.DictReader, Decimal para valores monetários, pathlib para caminhos e validação explícita. Mesmo que o código pareça limpo, revise cada condição e cada ramificação em vez de assumir que a implementação corresponde ao pedido.
python
from csv import DictReader
from decimal import Decimal, InvalidOperation
from pathlib import Path
INPUT_FILE = Path("orders.csv")
OUTPUT_DIR = Path("outputs")
OUTPUT_FILE = OUTPUT_DIR / "order_summary.txt"
REQUIRED_COLUMNS = {"order_id", "quantity", "unit_price"}
def main():
if not INPUT_FILE.is_file():
raise SystemExit(f"Input file not found: {INPUT_FILE}")
if OUTPUT_FILE.exists():
raise SystemExit(f"Output already exists: {OUTPUT_FILE}")
total_quantity = 0
total_revenue = Decimal("0")
with INPUT_FILE.open("r", encoding="utf-8", newline="") as file:
reader = DictReader(file)
if reader.fieldnames is None:
raise SystemExit("Input file has no header row.")
missing_columns = REQUIRED_COLUMNS - set(reader.fieldnames)
if missing_columns:
names = ", ".join(sorted(missing_columns))
raise SystemExit(f"Missing required columns: {names}")
for line_number, row in enumerate(reader, start=2):
order_id = row["order_id"].strip()
quantity_text = row["quantity"].strip()
price_text = row["unit_price"].strip()
if not order_id or not quantity_text or not price_text:
raise SystemExit(f"Missing value on line {line_number}.")
try:
quantity = int(quantity_text)
unit_price = Decimal(price_text)
except (ValueError, InvalidOperation):
raise SystemExit(f"Invalid numeric value on line {line_number}.")
if quantity < 0 or unit_price < 0:
raise SystemExit(f"Negative value on line {line_number}.")
total_quantity += quantity
total_revenue += quantity * unit_price
OUTPUT_DIR.mkdir(parents=True, exist_ok=True)
result = (
f"total_quantity={total_quantity}\n"
f"total_revenue={total_revenue:.2f}\n"
)
OUTPUT_FILE.write_text(result, encoding="utf-8")
print(f"Wrote: {OUTPUT_FILE}")
if __name__ == "__main__":
main()
05Revise entradas, casos limite, erros e dependências
Verificação
Pergunta a fazer
O que este exemplo faz
Entradas
Os nomes de arquivos, colunas, codificação e tipos de dados estão explícitos?
Exige orders.csv e três colunas específicas; abre o CSV como UTF-8.
Casos limite
O que acontece com cabeçalhos ausentes, campos vazios, zeros ou valores negativos?
Rejeita campos obrigatórios ausentes e valores negativos; aceita zero.
Erros
Uma entrada inválida interrompe o processamento de forma clara ou permite continuar com um resultado incorreto?
Interrompe com uma mensagem que inclui a linha quando falta um valor ou há um número inválido.
Dependências
O script exige pacotes ou versões que não foram informados?
Usa apenas módulos da biblioteca padrão do Python 3.12.
Segurança da saída
Um resultado existente pode ser sobrescrito?
Interrompe se outputs/order_summary.txt já existir.
Testes
É possível prever o resultado de um exemplo pequeno?
O exemplo sintético deve produzir 6 unidades e receita de 44.50.
Também é importante revisar suposições que não ficam óbvias apenas pela sintaxe. Por exemplo, este script permite quantity 0 e unit_price 0 porque esses valores não são negativos. Se zero é válido ou não, isso é uma regra de negócio, não uma questão de Python. A pessoa que revisa precisa decidir se essa regra corresponde ao conjunto de dados real.
06Projete testes antes de usar arquivos reais
Não teste apenas o caso normal. Um conjunto pequeno de entradas deliberadamente diferentes revela muito mais sobre o comportamento real do script.
Caso normal: as três linhas sintéticas devem produzir total_quantity=6 e total_revenue=44.50.
Coluna ausente: troque unit_price por price e confirme que o script para antes de calcular.
Valor vazio: deixe um campo quantity vazio e confirme que a linha correspondente é informada.
Número inválido: use five no lugar de 5 e confirme que o valor é rejeitado.
Valor negativo: use -1 em quantity ou unit_price e confirme que o script para.
Valor zero: use quantity 0 e decida se aceitar esse valor corresponde à regra pretendida.
Saída existente: crie outputs/order_summary.txt antes e confirme que o script foi projetado para parar em vez de sobrescrever o arquivo.
Arquivo sem dados, apenas com cabeçalho: decida se totais 0 e 0.00 são aceitáveis ou se um conjunto de dados vazio deve ser rejeitado.
07O que este checklist não comprova
Este checklist pode revelar muitos erros comuns de implementação, mas não comprova que o requisito de negócio está correto. O script não consegue decidir se devoluções devem aparecer como valores negativos, se quantity pode ser 0, se os preços incluem impostos ou se order_id duplicados são permitidos, a menos que essas regras sejam definidas explicitamente.
Em scripts maiores ou de maior risco, amplie a revisão para segurança, permissões, privacidade, concorrência, precisão numérica, desempenho, registros e testes automatizados. Também revise com mais cuidado qualquer código que manipule caminhos, execute comandos de shell, faça requisições de rede, trate credenciais ou realize operações destrutivas em arquivos.
A sequência prática é simples: defina o contrato de entrada, calcule um pequeno exemplo de forma independente, revise cada caminho de erro, identifique as dependências, proteja as saídas e teste os casos limite. A IA pode ajudar a criar o rascunho da implementação, mas quem revisa continua responsável por decidir se o código corresponde à tarefa real.
Registro de execução e verificação
2026-09-21 · hand-checked example · Python 3.12
A aritmética do exemplo sintético foi verificada manualmente: 2 × 10.00 = 20.00, 3 × 5.50 = 16.50 e 1 × 8.00 = 8.00.
A quantidade total esperada foi verificada manualmente: 2 + 3 + 1 = 6.
A receita total esperada foi verificada manualmente: 20.00 + 16.50 + 8.00 = 44.50.
O código de exemplo foi revisado manualmente com base nos requisitos declarados de entrada, validação, dependências e não sobrescrita.
O código usa apenas módulos da biblioteca padrão do Python: csv, decimal e pathlib.
Limites da verificação
O código Python deste artigo não foi executado pelo autor; o comportamento descrito é baseado em revisão manual do código.
O exemplo não define regras de negócio para order_id duplicados, quantidades 0, devoluções, impostos, conversão de moeda ou arquivos excepcionalmente grandes.
Passar por essas verificações não comprova que um script seja seguro ou correto para outro conjunto de dados ou ambiente de produção.
Transforme “automatize isso” em uma descrição de tarefa executável. Anexe uma amostra sintética sem dados sensíveis e um resultado esperado verificado manualmente para completar uma solicitação de script que totaliza registros de trabalho por equipe.
Verifique uma função de agregação com quatro linhas que você pode calcular manualmente e 12 unit tests. Verifique não apenas valores normais, mas também entrada vazia, zero, decimais e entrada inválida.
Separe um resumo plausível em fatos, cálculos e interpretações. Recalcule proporções e médias a partir de dados mensais sintéticos e reescreva frases com fontes ausentes ou causas exageradas como afirmações que possam ser verificadas.
Trate uma regex gerada por IA como um rascunho, não como uma regra final. Monte uma pequena tabela de testes sintéticos, compare os resultados esperados com as correspondências reais, revise o padrão e salve um relatório de revisão antes de usá-lo em dados reais.