OrangePro
Análise de lacunas em testes comportamentais e geração de testes de integração fundamentados via grafo de conhecimento; identifica comportamentos não testados, classifica por raio de impacto e comprova por meio de kill de mutação.
Documentação
Encontre os comportamentos que seus testes não cobrem. Gere testes fundamentados que realmente executam.
O OrangePro mapeia cada comportamento público no seu código, pontua cada um com base em evidências reais de teste e mostra os pontos cegos estruturais antes que seus usuários os encontrem. Executa localmente. Seu código nunca sai da sua máquina.
npx -y @orangepro/mcp-server@latest start .
Sumário
- O que você obtém
- Níveis de evidência
- Início rápido
- Uso com seu agente de codificação
- Como funciona
- Suporte a linguagens
- Privacidade
- Referência da CLI
- Ferramentas MCP
- Plataforma
- Contribuindo
O que você obtém
Um único comando produz um relatório HTML interativo:
npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html
O relatório tem dois modos: Simples (pontos cegos em nível de integração, em linguagem clara) e Especialista (lista completa de comportamentos, níveis de evidência, fluxos, mapa do sistema). Alterne com o botão no topo.
→ Exemplo ao vivo: Twenty CRM (5.237 comportamentos mapeados)
Mapa do sistema — faixas de entrada (GraphQL, HTTP, Jobs) fluindo para serviços, dimensionadas por tráfego, coloridas por nível de evidência, com anel vermelho por risco.
Lacunas prioritárias de outro projeto open source HONO — os 20 principais comportamentos não comprovados classificados por raio de impacto, com rascunhos de testes gerados.
Níveis de evidência
Cada comportamento recebe exatamente um nível. Nada é rotulado como "testado" por suposição.
| Nível | Cor | O que significa |
|---|---|---|
| Comprovado Dinamicamente | 🟢 | Um teste real elimina uma mutação direcionada deste comportamento |
| Coberto em Tempo de Execução | 🟢 | A ferramenta de cobertura executou este código |
| Vinculado Estaticamente | 🟡 | Um teste importa e chama este código — vínculo estrutural, não prova |
| Candidato Não Confirmado | ⚪ | Um arquivo de teste semelhante existe — uma pista, não evidência |
| Sem Sinal | 🔴 | Nada testa este comportamento |
"Comprovado Dinamicamente 0" é normal na primeira execução. A prova exige executar testes contra mutações direcionadas. Esse é o modelo de confiança.
Início rápido
cd /path/to/your/repo
npm install # install the repo's own dependencies first
npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html
Nenhuma chave de API é necessária. O relatório mostra seu mapa do sistema, níveis de evidência, lacunas prioritárias e o delta desde a última execução.
Quer geração de testes? Adicione uma chave de modelo (BYOK):
export ANTHROPIC_API_KEY="..." # or OPENAI_API_KEY / OLLAMA_BASE_URL
npx -y @orangepro/mcp-server@latest start .
A saída da IA nunca altera os níveis de evidência. Somente o oráculo de eliminação por mutação pode conceder o status Comprovado Dinamicamente.
Saída:
.orangepro/
├── behavior-coverage.html ← open this
├── graph.json ← deterministic evidence graph
├── COVERAGE_REPORT.md ← coverage and gap summary
└── ai/ ← candidate flows (when a key is configured)
orangepro_generated/ ← generated tests; your source files are never touched
Cada nova execução mostra um banner de delta: o que entrou no código, o que subiu em risco, o que foi resolvido.
Uso com seu agente de codificação
O OrangePro executa como um servidor MCP. Adicione à configuração do seu cliente:
{
"mcpServers": {
"orangepro-local": {
"command": "npx",
"args": ["-y", "@orangepro/mcp-server@latest", "mcp"]
}
}
}
| Cliente | Onde colocar |
|---|---|
| Claude Code | .mcp.json ou ~/.claude.json |
| Cursor | ~/.cursor/mcp.json ou Configurações → MCP |
| VS Code / Copilot | Configurações do MCP |
| Codex / OpenCode | Execute npx -y @orangepro/mcp-server@latest agent --client codex |
O fluxo de trabalho: Diga ao seu agente:
"Use
orangepro_start, depoisorangepro_generate_testscom base_ref=main. Escreva cada teste no suggested_path, execute-o e relate pass/fail."
O agente escreve o teste, executa, chama orangepro_prove, e o comportamento se torna Comprovado Dinamicamente. Um prompt, ciclo completo.
Funciona com
Claude Code · Cursor · GitHub Copilot · Codex · Windsurf · OpenCode · VS Code
Qualquer agente compatível com MCP pode usar o OrangePro. Sem dependência de fornecedor.
Como funciona
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Your Code │ ──► │ Knowledge │ ──► │ Evidence │
│ (any lang) │ │ Graph │ │ Tiers │
└─────────────┘ └──────────────┘ └─────────────┘
│
┌──────┴──────┐
▼ ▼
┌───────────┐ ┌──────────┐
│ Gap Report│ │ Generate │
│ + Risks │ │ Tests │
└───────────┘ └──────────┘
| Fase | O que acontece | Precisa de chave de modelo? |
|---|---|---|
| Analisar | Caminhada pela AST → comportamentos, fluxos, níveis de evidência | Não |
| Pontuar | Pontuação de prontidão do grafo (0–100) | Não |
| Gerar | Testes fundamentados para as principais lacunas | Sim (BYOK) |
| Comprovar | Oráculo de eliminação por mutação confirma que o teste falha se o comportamento mudar | Não |
Mesmo código = mesma pontuação. Determinístico. Sempre.
Suporte a linguagens
| Linguagem | Mapeamento estático | Testes gerados | Prova dinâmica |
|---|---|---|---|
| TypeScript / JavaScript | ✓ | ✓ Jest / Vitest / Mocha | ✓ |
| Python | ✓ | ✓ pytest | ✓ |
| Go | ✓ | ✓ *_test.go | ✓ |
| Java | ✓ | ✓ JUnit 4/5 | ✓ |
| Kotlin, Rust, PHP, C#, Ruby, Swift, C, C++ | ✓ | planejado | planejado |
O mapeamento estático funciona em muitas linguagens via tree-sitter. A prova dinâmica é deliberadamente mais restrita — cada linguagem precisa de um executor, localizador de mutações e perfil de sandbox.
Execução local de maior valor
Use primeiro os comandos de configuração e teste do próprio repositório e mantenha a cobertura de unidade e integração em artefatos separados. Depois execute opro start; ele realiza a análise, ingere os artefatos, tenta a prova direcionada, gera rascunhos visíveis no relatório e escreve o relatório final. Um opro analyze separado é desnecessário quando opro start o segue.
# 1. Install/build exactly as the repository documents.
# 2. Run the repository's unit and integration coverage commands separately.
# 3. Record artifact provenance (example paths and commands):
mkdir -p .orangepro
# create .orangepro/coverage-suites.json using the schema below
opro coverage . # optional preflight: discover/generate artifacts
opro start . --proof-limit 5 --generate-limit 20
{
"artifacts": {
".orangepro/coverage/unit.coverprofile": {
"suite": "unit",
"command": "make unit-test-coverage"
},
".orangepro/coverage/integration.coverprofile": {
"suite": "integration",
"command": "make integration-test-coverage"
}
}
}
Sem este manifesto, o OrangePro infere conservadoramente nomes claros de unit/integration e rotula todo o resto como unclassified; ele nunca adivinha que um perfil agregado é apenas de unidade. O relatório mostra unidade, integração, a sobreposição entre eles, cobertura não classificada e a união combinada separadamente. --proof-limit controla as tentativas de prova dinâmica (que podem rascunhar um teste para prova); --generate-limit controla independentemente a faixa adicional de rascunho de lacunas de risco visível no relatório. Uma execução de geração também registra seu status terminal e o motivo exato, para que uma falha de compilador/importação não seja relatada erroneamente como um problema genérico de dependência.
Privacidade
- Nenhum código armazenado. Lê o código em processo. Nunca envia para um servidor OrangePro.
- Nenhuma mutação do código existente. Nunca edita seus arquivos de código ou teste.
- Suas chaves permanecem suas. Lidas do ambiente no momento da chamada, nunca persistidas.
- BYOK é direto. O contexto do código vai para o provedor de modelo que você configurar. O OrangePro não está nesse caminho.
Referência da CLI
opro # analyze + report + agent next actions
opro start --base main # same, scoped to a branch diff
opro analyze # build the evidence graph
opro score # graph readiness (0–100)
opro gaps --limit 10 # top 10 untested behaviors
opro generate --base main # tests for PR diff
opro generate --single # top gap, whole repo
opro prove # mutation-kill oracle
opro rtm # traceability matrix
opro export # metadata-only evidence pack
opro mcp # run as MCP server (stdio)
opro doctor # what evidence to add next
opro coverage # discover/generate artifacts; analyze or start ingests them
Adicione --json a qualquer comando de leitura para saída em máquina. Execute opro help para a referência completa.
Ferramentas MCP (18 no total)
| Ferramenta | O que faz |
|---|---|
orangepro_start | Configuração em um comando: analisar + relatório + próximas ações |
orangepro_analyze_sources | Construir/atualizar o grafo de evidências |
orangepro_generate_tests | Gerar testes fundamentados para lacunas |
orangepro_prove | Executar o oráculo de eliminação por mutação em um comportamento |
orangepro_prove_loop | Configuração + prova dinâmica + atualização do relatório para um comportamento |
orangepro_find_test_gaps | Listar comportamentos com testes fracos/ausentes, classificados por risco |
orangepro_graph_score | Pontuação de prontidão do grafo (0–100) |
orangepro_status | Estado do workspace sem gerar nada |
orangepro_doctor | Recomendar próximas evidências para melhorar a qualidade |
orangepro_rtm | Matriz de rastreabilidade de requisitos |
orangepro_stats | Estatísticas agregadas |
orangepro_changed_impact | O que um diff toca (requer git + ref base) |
orangepro_record_run | Registrar o resultado de uma execução de teste |
orangepro_explain_test | Explicar por que um teste foi gerado |
orangepro_export_evidence_pack | Exportar pacote de evidências somente metadados |
orangepro_update_graph | Atualização incremental do grafo |
orangepro_ai_links | Sugestões de comportamento fraco→símbolo (IA opcional) |
orangepro_ai_flows | Descoberta de fluxos candidatos (IA opcional) |
Fluxo de PR
opro generate --base main # tests for what this branch changed
opro generate --pr 1234 # checks out PR #1234
opro generate --changed # current branch diff vs main
Cada teste gerado inclui:
- Fundamentação — os arquivos reais, símbolos e testes existentes que ele cita
- Dicas de execução — onde escrevê-lo, como executá-lo
- Categoria de cenário — qual modo de falha ele visa
Se as dependências não estiverem instaladas, os testes são mantidos como Testes manuais (etapas Dado/Quando/Então com o bloqueador nomeado). Instale as dependências e execute novamente para convertê-los em testes executáveis.
Categorias de teste
A geração é limitada por evidências. Uma categoria é produzida somente quando o grafo tem evidências de apoio.
| Categoria | O que visa |
|---|---|
| Caminho feliz | Comportamento esperado principal |
| Erro de validação | Tratamento de entrada inválida/incorreta |
| Caso de borda | Limites, vazio/nulo, concorrência, tentativas |
| Fluxo de integração | Comportamento em várias etapas entre serviços |
| Segurança / privacidade | Autenticação, injeção, vazamento de dados |
| Regressão | Fixação de um comportamento anteriormente quebrado |
Configuração do modelo (BYOK)
Análise, pontuação e prova não precisam de chave de modelo. Geração precisa.
| Provedor | Variável de ambiente |
|---|---|
| Compatível com OpenAI | OPENAI_API_KEY (opcional: OPENAI_BASE_URL, OPENAI_MODEL) |
| Anthropic | ANTHROPIC_API_KEY (opcional: ANTHROPIC_MODEL) |
| Ollama (local, sem chave) | OLLAMA_BASE_URL (opcional: OLLAMA_MODEL) |
Ordem de detecção automática: OpenAI → Ollama → Anthropic. Substitua com --provider e --model.
Os padrões são gpt-5.3-codex para OpenAI e claude-sonnet-5 para Anthropic.
Execute opro setup para configurar interativamente. As chaves permanecem no seu ambiente — nunca escritas no grafo, configuração ou artefatos.
Faixas de candidatos com IA
Com uma chave de provedor, o OrangePro prepara vínculos fracos de comportamento→símbolo com IA e fluxos candidatos sugeridos por IA. Estas são listas de trabalho de revisão/geração, não evidências:
- Vínculos de IA aparecem como sugestões
AI-linked. - Fluxos de IA são armazenados separadamente dos fluxos determinísticos.
- Nenhuma das faixas altera os níveis de evidência ou as contagens de denominador.
Use-os quando quiser que o agente encontre fluxos prováveis de fronteira de serviço mais rápido; ignore-os para um relatório somente determinístico.
O que há na plataforma hospedada
Este repositório é a ferramenta local gratuita. A plataforma OrangePro adiciona:
- Grafo de conhecimento persistente entre PRs e repositórios
- Portões de política de PR/CI sobre níveis de evidência e deltas de risco
- Enriquecimento com Jira / Confluence / TestRail / OpenAPI
- Inteligência entre repositórios e memória de fluxos recorrentes
- Correlação de incidentes de produção e direcionamento de regressão
- Painéis de equipe e gerenciamento do ciclo de vida de testes
Contribuindo
git clone https://github.com/OrangeproAI/orangepro-mcp.git
cd orangepro-mcp && npm ci && npm run build
npm test
PRs são bem-vindos. Abra uma issue primeiro para mudanças grandes.
Licença MIT · orangepro.ai