Segredo commitado
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const cobrar = (valor: number) => stripe.charges.create({ amount: valor });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.
A IA escreve em minutos o que levaria um dia. O que vem junto, ninguém tem tempo de ler. Acontece com todo mundo.
@@ -12,1 +12,4 @@
import Stripe from "stripe";const stripe = new Stripe("sk_live_••••••••");export const cobrar = (valor: number) => stripe.charges.create({ amount: valor });@@ -41,3 +41,3 @@
} catch (error) { logger.error("export failed", error.message); 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
throw error;@@ -27,2 +27,4 @@
const size = 20;const start = (page - 1) * size;return pedidos.slice(start, size);codecorvusbot· agoraimportante
slice recebe onde termina, não quantos itens. Da página 2 em diante, a lista volta vazia.
}@@ -8,3 +8,3 @@
export function descontoSenior(idade: number) { return idade >= 60 ? 0.3 : 0; 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.
}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
Todo arquivo do PR, com o contexto do repo. O comentário cai bem na linha do problema.
Fala por que é problema e manda a correção pronta como Commit suggestion. Um clique e foi.
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.
Revisão do CodeCorvus
🔴 1 bloqueante·🟡 2 importantes·🔵 3 sugestões
4 arquivos revisados. 1 achado bloqueante sobreviveu à validação adversarial.
| 41 | 41 | } catch (error) { | |
| 42 | - | logger.error("export failed", error.message); | |
| 42 | + | logger.error("export failed", payload.patient); | |
| 43 | 43 | throw error; |
🔴 Dado de paciente pode aparecer no log
O objeto payload.patient inclui nome e CPF. Registre só o identificador do relatório.
| 42 | - | logger.error("export failed", payload.patient); | |
| 42 | + | logger.error("export failed", { report: payload.id }); |
Para liberar com motivo: /corvus ok ou /corvus fp
Merge bloqueado
1 achado bloqueante precisa ser resolvido ou liberado com motivo.
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.
Discorda? Manda um /corvus fp com o motivo e segue a vida. Fica registrado.
Merge bloqueado
validadoO achado ganha o selo “validado” e a correção sugerida vai na própria linha.
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.
Resultado deste golden set de 13 casos; não é garantia para todo repositório.
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 reviewRevisa todo PR no teu runner.
$ corvus -b main⠹ 46s · passo 12 · Lendo src/relatorio.js1bloqueante2importantes3sugestõesRoda antes de abrir o PR, vendo o progresso ao vivo.
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.
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.
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.
O workflow roda no teu runner do GitHub Actions. O código vai dali direto pro provedor de IA que tu escolher.
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.
Por enquanto, não. A integração de CI é para GitHub Actions e pull requests no GitHub.
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.
Um workflow, um PR e pronto: o Corvus já tá revisando.
Open source e grátis. Sem cadastro, sem pegadinha.
codecorvusbot· agorabloqueante
Chave de produção no código. O Gitleaks bloqueia na hora e o valor sai redigido do comentário.