Detector híbrido de Eager Test em projetos Java, em nível de método de teste.
O HEDGE combina análise estática + heurística e consulta um LLM apenas em casos de incerteza, buscando reduzir custo sem perder capacidade de classificação. É um projeto independente de Engenharia de Software voltado a análise de código e uso seletivo de IA.
- Parsing de testes Java e extração de features por método.
- Heurística de baixo custo para classificação inicial.
- Gate de incerteza para decidir quando consultar um LLM.
- Ensemble entre heurística e resposta do modelo.
- Métricas de avaliação como Precision, Recall, F1, MCC e AUC.
- Medição do custo agregado de chamadas ao LLM.
- Execução reproduzível via Python ou Docker.
graph LR
A[Projeto Java] --> B[Extração de features]
B --> C[Heurística]
C --> D{Score incerto?}
D -- Não --> F[Ensemble]
D -- Sim --> E[LLM]
E --> F
F --> G[Predição final]
G --> H[Métricas opcionais]
O LLM não é obrigatório. Sem chave configurada, o fluxo continua sem realizar chamadas externas.
- Python 3.11+
- análise de AST / tree-sitter
- heurísticas e ensemble
- integração opcional com LLM
- scikit-learn para métricas
- Docker
git clone https://github.com/rebecanonato89/hedge-cli.git
cd hedge-cli
pip install -r requirements.txtdocker build -t hedge-cli:latest .python -m hedgelib --project /caminho/projeto-java --out /caminho/outputsA CLI procura testes em src/test/java/**.
Parâmetros principais:
--project: raiz do projeto Java.--out: diretório de saída.--features <csv>: reutiliza features previamente extraídas.--config <yaml>: usa configuração alternativa aohedge.yaml.
Variáveis de ambiente suportadas:
HEDGE_GATE=0 desliga consultas ao LLM
HEDGE_LABELS=<path> ground truth opcional para métricas
LLM_API_KEY chave do provedor, opcional
LLM_API_URL endpoint, opcional
LLM_MODEL modelo, opcional
Exemplo de hedge.yaml:
heuristic:
threshold: 0.50
llm_gate:
enabled: true
gate_low: 0.40
gate_high: 0.60
ensemble:
w_heur: 0.60
w_llm: 0.40
io:
features_filename: features_all.csv| Arquivo | Conteúdo |
|---|---|
methods_index.csv |
índice dos métodos de teste encontrados |
features_all.csv |
features extraídas por método |
heuristic_preds.csv |
predição e score da heurística |
llm_preds.csv |
resultado do LLM quando consultado |
llm_cost.json |
chamadas, tokens, tempo e custo agregado |
ensemble_preds.csv |
predição final e score do ensemble |
metrics_table.csv |
métricas, quando ground truth é fornecido |
Resultado principal: ensemble_preds.csv.
O repositório mantém dependências, configuração e pipeline versionados para facilitar repetição dos experimentos. Docker também pode ser usado para reduzir diferenças de ambiente.
Projeto independente de Engenharia de Software. Ele não faz parte de uma pesquisa de doutorado e não representa código corporativo.
Portfólio: rebecanonato89.dev