Open sourceFeito no Brasil

A IA escreveu. Quem revisou?

Código de IA chega rapidinho. Os buracos também. O CodeCorvus passa o olho em cada pull request antes do merge e te mostra o que não faz sentido, o que vaza e o que quebra.

Compila. Passa no teste. E tá cheio de buraco.

A IA escreve em minutos o que levaria um dia. O que vem junto, ninguém tem tempo de ler. Acontece com todo mundo.

Segredo commitado

src/pagamentos/cliente.ts+3−0

@@ -12,1 +12,4 @@

1212import Stripe from "stripe";
13const stripe = new Stripe("sk_live_••••••••");

codecorvusbot· agorabloqueante

Chave de produção no código. O Gitleaks bloqueia na hora e o valor sai redigido do comentário.

14export const cobrar = (valor: number) =>
15 stripe.charges.create({ amount: valor });

Dado de paciente no log

src/relatorio.js+1−1

@@ -41,3 +41,3 @@

4141} catch (error) {
42 logger.error("export failed", error.message);
42 logger.error("export failed", payload.patient);

codecorvusbot· agorabloqueante

payload.patient leva nome e CPF para o log. Registre só o id do relatório.

validado

4343 throw error;

Compila, mas está errado

src/api/pedidos.ts+2−0

@@ -27,2 +27,4 @@

2727const size = 20;
28const start = (page - 1) * size;
29return pedidos.slice(start, size);

codecorvusbot· agoraimportante

slice recebe onde termina, não quantos itens. Da página 2 em diante, a lista volta vazia.

2830}

Regra de negócio ignorada

src/planos/desconto.ts+1−1

@@ -8,3 +8,3 @@

88export function descontoSenior(idade: number) {
9 return idade >= 60 ? 0.3 : 0;
9 return idade > 60 ? 0.3 : 0;

codecorvusbot· agoraimportante

A regra do repositório diz “a partir de 60 anos”. Com >, quem tem 60 perde o desconto.

1010}

PR #517 · Refatora a cobrança · 47 arquivos

PR gigante que ninguém lê com calma.

O Corvus lê linha por linha e só abre a boca pro que importa.

Revisão do Corvus

corvus -b main

Revisado · 46s · passo 12

  • 1bloqueante
  • 2importantes
  • 3sugestões

Merge travado: 1 problema sério, e confirmado.

Revisa linha a linha. Trava só o que é grave.

Lê o diff inteiro

Todo arquivo do PR, com o contexto do repo. O comentário cai bem na linha do problema.

Explica e já sugere a correção

Fala por que é problema e manda a correção pronta como Commit suggestion. Um clique e foi.

Bloqueia só o grave

Bloqueante segura o merge. Importante só avisa. Sugestão é sugestão, ninguém é obrigado.

Comentário na linha, placar de severidade e o selo de quem tentou refutar o achado.

github.com/acme/portal-clinico/pull/482

Melhora exportação de relatórios #482

Aberto
Conversa4Commits3
codecorvus bot revisou estas alterações · há 2 min

Revisão do CodeCorvus

🔴 1 bloqueante·🟡 2 importantes·🔵 3 sugestões

src/relatorio.js
4141 } catch (error) {
42- logger.error("export failed", error.message);
42+ logger.error("export failed", payload.patient);
4343 throw error;
codecorvus bot · há 2 min

🔴 Dado de paciente pode aparecer no log

O objeto payload.patient inclui nome e CPF. Registre só o identificador do relatório.

validadoUma segunda IA tentou refutar e não conseguiu.
Alteração sugerida
42- logger.error("export failed", payload.patient);
42+ logger.error("export failed", { report: payload.id });
Commit suggestion

Para liberar com motivo: /corvus ok ou /corvus fp

Merge bloqueado

1 achado bloqueante precisa ser resolvido ou liberado com motivo.

Não trava à toa. Outra IA contesta antes.

Antes de travar, outra IA procura furo no achado. Achou? Não trava. Não achou? Ganha o selo “validado” e segura o merge.

Teste o gate

Mexe aí. O merge muda na hora.

Tem segredo no diff?
O achado é grave?
A segunda IA derrubou o achado?

Discorda? Manda um /corvus fp com o motivo e segue a vida. Fica registrado.

  1. AchadoAchado grave
  2. ContestaçãoTentou derrubar e não conseguiu

Merge bloqueado

validado

O achado ganha o selo “validado” e a correção sugerida vai na própria linha.

O placar é público. Prova que revisou.

Toda versão do Corvus roda num golden set de casos reais e plantados, e o resultado vai pro ar. Esse aqui é do case Grupo Mais Saúde.

golden set · 13 casos
  • 100%recall nos bloqueantesachou todos os problemas graves
  • 100%precisão nos bloqueantestodo bloqueio era um problema real
  • 0falso positivo travando o mergenenhum PR parou à toa

Resultado deste golden set de 13 casos; não é garantia para todo repositório.

Começa no próximo PR. Sem mexer no teu fluxo.

.github/workflows/corvus.ymlYAML
name: CodeCorvuson: [pull_request]permissions:  contents: read  pull-requests: write  id-token: write   # sessão curta via OIDCjobs:  review:    runs-on: ubuntu-latest    steps:      - uses: actions/checkout@v4      - run: corvus review

Revisa todo PR no teu runner.

terminal
$ corvus -b main⠹ 46s · passo 12 · Lendo src/relatorio.js1bloqueante2importantes3sugestões

Roda antes de abrir o PR, vendo o progresso ao vivo.

Problemas · VS Code · Cursor
  • Dado de paciente no logsrc/relatorio.js:42
  • Compila, mas está erradosrc/api/pedidos.ts:29
  • Regra de negócio ignoradasrc/planos/desconto.ts:9

Os achados aparecem no editor. No PR, é só perguntar: /corvus explica.

Exemplo ilustrativo. Instale e configure o CLI conforme o seu ambiente de CI.

Cloud · em breveO mesmo Corvus, sem chave de IA e com painel.

Teu código, no teu CI. A chave, longe do repo.

  • Roda no teu runnerO workflow roda no teu GitHub Actions. O código vai do runner direto pro provedor de IA.
  • Sem chave no repositórioSessão curta via OIDC do GitHub. Nenhum segredo guardado no repo, nem a pau.
  • A IA só lê o códigoEla revisa o diff e o contexto. Não roda comandos nem acessa a rede.
  • Segredo sempre redigidoGitleaks determinístico e Semgrep confirmado pela IA.
  • LGPD em portuguêsRegras para CPF e dado de paciente em log, payload e resposta.

Perguntas rápidas.

O que é o CodeCorvus?

Um revisor de código com IA, open source, que roda no GitHub Actions. Ele lê cada pull request, comenta na linha com a correção e só trava o merge quando acha um problema grave que uma segunda IA não conseguiu derrubar.

Quanto custa?

O open source é de graça: tu usa a tua chave de IA, ou a tua assinatura no CLI. O Cloud ainda não tem preço; tá chegando.

Para onde vai o código?

O workflow roda no teu runner do GitHub Actions. O código vai dali direto pro provedor de IA que tu escolher.

Vai travar meu merge à toa?

Não. Só achado grave segura o merge, e só depois que outra IA tenta derrubar. Discordou? /corvus ok ou /corvus fp, com o motivo, e segue.

Funciona com GitLab?

Por enquanto, não. A integração de CI é para GitHub Actions e pull requests no GitHub.

Ajuda com a LGPD?

O Corvus traz regras para CPF e dado de paciente em log, payload e resposta, e registra a evidência da revisão. Ele não substitui uma avaliação jurídica.

Tá esperando o quê?

Um workflow, um PR e pronto: o Corvus já tá revisando.

Bora, instala logo

Open source e grátis. Sem cadastro, sem pegadinha.