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

OrangePro

Encontre os comportamentos que seus testes não cobrem. Gere testes fundamentados que realmente executam.

npm version MIT License npm downloads Glama score MCP Registry


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

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)

OrangePro system map — entry lanes, services, evidence tiers

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.

Priority gaps

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ívelCorO 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"]
    }
  }
}
ClienteOnde colocar
Claude Code.mcp.json ou ~/.claude.json
Cursor~/.cursor/mcp.json ou Configurações → MCP
VS Code / CopilotConfigurações do MCP
Codex / OpenCodeExecute npx -y @orangepro/mcp-server@latest agent --client codex

O fluxo de trabalho: Diga ao seu agente:

"Use orangepro_start, depois orangepro_generate_tests com 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   │
             └───────────┘  └──────────┘
FaseO que acontecePrecisa de chave de modelo?
AnalisarCaminhada pela AST → comportamentos, fluxos, níveis de evidênciaNão
PontuarPontuação de prontidão do grafo (0–100)Não
GerarTestes fundamentados para as principais lacunasSim (BYOK)
ComprovarOráculo de eliminação por mutação confirma que o teste falha se o comportamento mudarNão

Mesmo código = mesma pontuação. Determinístico. Sempre.


Suporte a linguagens

LinguagemMapeamento estáticoTestes geradosProva dinâmica
TypeScript / JavaScript✓✓ Jest / Vitest / Mocha✓
Python✓✓ pytest✓
Go✓✓ *_test.go✓
Java✓✓ JUnit 4/5✓
Kotlin, Rust, PHP, C#, Ruby, Swift, C, C++✓planejadoplanejado

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)
FerramentaO que faz
orangepro_startConfiguração em um comando: analisar + relatório + próximas ações
orangepro_analyze_sourcesConstruir/atualizar o grafo de evidências
orangepro_generate_testsGerar testes fundamentados para lacunas
orangepro_proveExecutar o oráculo de eliminação por mutação em um comportamento
orangepro_prove_loopConfiguração + prova dinâmica + atualização do relatório para um comportamento
orangepro_find_test_gapsListar comportamentos com testes fracos/ausentes, classificados por risco
orangepro_graph_scorePontuação de prontidão do grafo (0–100)
orangepro_statusEstado do workspace sem gerar nada
orangepro_doctorRecomendar próximas evidências para melhorar a qualidade
orangepro_rtmMatriz de rastreabilidade de requisitos
orangepro_statsEstatísticas agregadas
orangepro_changed_impactO que um diff toca (requer git + ref base)
orangepro_record_runRegistrar o resultado de uma execução de teste
orangepro_explain_testExplicar por que um teste foi gerado
orangepro_export_evidence_packExportar pacote de evidências somente metadados
orangepro_update_graphAtualização incremental do grafo
orangepro_ai_linksSugestões de comportamento fraco→símbolo (IA opcional)
orangepro_ai_flowsDescoberta 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.

CategoriaO que visa
Caminho felizComportamento esperado principal
Erro de validaçãoTratamento de entrada inválida/incorreta
Caso de bordaLimites, vazio/nulo, concorrência, tentativas
Fluxo de integraçãoComportamento em várias etapas entre serviços
Segurança / privacidadeAutenticação, injeção, vazamento de dados
RegressãoFixaçã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.

ProvedorVariável de ambiente
Compatível com OpenAIOPENAI_API_KEY (opcional: OPENAI_BASE_URL, OPENAI_MODEL)
AnthropicANTHROPIC_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