pular para o conteúdo
voltar ao mapa
técnica
etapa: verify
3 min de leitura

O loop de verificação

O código gerado parece confiante estando certo ou errado. A única defesa confiável é um loop que o verifica: testes que decidem, um diff que você lê e gates que rodam não importa quem escreveu o código.

pytest / Jest / go testSemgrepCodeQLpre-commitGitHub Actionsmutation testing (Stryker, mutmut)

O que é

Um é o conjunto de checagens que toda mudança passa antes de ser considerada confiável, não importa quem a escreveu. Com código escrito por IA o loop importa mais, porque o volume é maior e os erros são plausíveis: nomes de função inventados, comportamento alterado em silêncio, testes reescritos para passar, casos de borda ausentes.

Camadas de verificação

  • Testes primeiro: escreva ou aprove o teste antes da implementação, para que um teste falhando defina o que é "pronto". Peça ao agent que o execute e mostre a saída.
  • Leia o diff: não o resumo do agent, a mudança de fato. Veja o que ele tocou além do pedido, testes removidos, asserções afrouxadas, novas dependências e configuração alterada.
  • Gates automatizados no CI: lint, tipos, testes unitários e de integração, , varredura de dependências e de segredos. Rodam em todo pull request, independentemente do autor.
  • Revisão independente: peça a outro modelo, ou a uma pessoa, que revise com contexto novo e sem memória do raciocínio do autor.
  • Execute: para qualquer coisa voltada ao usuário, execute o fluxo real em vez de confiar que o código compila.

Modos de falha comuns do código gerado

  • APIs e pacotes alucinados: a chamada ou a biblioteca não existe, ou existe com outro nome (e um atacante pode ter registrado o nome inventado).
  • Testes que não provam nada: asserções sobre mocks, snapshots atualizados para combinar com o bug ou testes apagados para deixar o build verde.
  • Só o caminho feliz: nenhum tratamento de entrada vazia, timeouts, concorrência ou entrada hostil.
  • Padrões inseguros: SQL montado por string, verificação TLS desativada, amplo, segredos hard-coded, falta de checagens de autorização.
  • Scope creep: refactors não relacionados misturados à mudança, que escondem o diff real.

Um gate que você pode copiar

Torne as verificações obrigatórias e automáticas. O workflow abaixo roda em todo pull request e bloqueia o merge quando qualquer etapa falha; é o mesmo para autores humanos e agents.

.github/workflows/verify.ymlyaml
name: verify
on: pull_request
permissions:
  contents: read
jobs:
  verify:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@<full-commit-sha>
      - uses: actions/setup-node@<full-commit-sha>
        with: { node-version: 22 }
      - run: npm ci --ignore-scripts
      - run: npm run lint && npm run typecheck
      - run: npm test -- --coverage
      - run: npx semgrep --config p/owasp-top-ten --error src/
      - run: npx osv-scanner --lockfile=package-lock.json
pre-commit (local, rápido)bash
# o .pre-commit-config.yaml roda isto antes de todo commit, inclusive de agents
gitleaks protect --staged --redact
npm run lint --silent
npm test --silent -- --bail

Hábitos

  • Nunca aceite uma mudança que você não saberia explicar a um colega.
  • Mantenha as mudanças pequenas o bastante para revisar em minutos.
  • Proteja os testes: exija revisão para edições em arquivos de teste e na configuração de CI.
  • Peça ao agent que liste as suposições e o que ele não testou.
  • Meça a qualidade dos testes, não só a cobertura: mutation testing mostra se os testes pegariam uma mudança quebrada.
Loop de verificaçãoAs verificações que toda mudança deve passar antes de ser considerada confiável: testes que decidem, um diff que você lê, gates de CI e revisão independente.ver no glossário →SASTAnálise estática: examina o código sem executar. Acha por análise de fluxo, não por adivinhação.ver no glossário →CORScompartilhamento de recursos entre origensUm mecanismo do navegador que permite a um servidor dizer quais outras origens podem ler suas respostas. Uma origem curinga combinada com credenciais é uma má configuração.ver no glossário →

conexões no mapa

atualizado em 14/10/2026 · fontes para aprofundar · reportar erro

em outros domínios

  • SASTappseco gate que vale para qualquer autor, humano ou agente
  • DevSecOpsappsecgates automáticos na esteira, sem exceção para código gerado

Estude antes

Desbloqueia

teste o que entendeu

Carregando perguntas…