feature/treesitter-tag-queries #2

Open
tobi wants to merge 78 commits from feature/treesitter-tag-queries into main
68 changed files with 48509 additions and 151 deletions
Showing only changes of commit b516b2985d - Show all commits

28
TODO_GBNF_OUTPUT.md Normal file
View file

@ -0,0 +1,28 @@
# TODO: GBNF Output Format
When grammars are finalized, output them in GBNF (GGML BNF) format for compatibility with llama.cpp and other inference engines.
GBNF is a BNF-like grammar format used by llama.cpp for constrained decoding. It supports:
- Sequences: `rule ::= token1 token2`
- Alternatives: `rule ::= alt1 | alt2`
- Optional: `rule ::= (token)?`
- Repetition: `rule ::= (token)*`
- Character classes: `[a-z]`, `[^abc]`
Example GBNF:
```
root ::= ws? item ws?
item ::= identifier ws? "(" ws? args? ws? ")"
args ::= identifier (ws? "," ws? identifier)*
identifier ::= [a-zA-Z_][a-zA-Z0-9_]*
ws ::= [ \t\n]*
```
Map SORE operators to GBNF:
- `r·s` (concatenation) → `rule ::= r s`
- `r|s` (disjunction) → `rule ::= r | s`
- `r*` (star) → `rule ::= (r)*`
- `r?` (optional) → `rule ::= (r)?`
- `r+` (plus) → `rule ::= r (r)*`
Implementation: Add `to_gbnf(sore)` function to `bex/` when ready.

View file

@ -24,5 +24,6 @@ from .marking import mark_koa
from .tokenizer import YAMLTokenizer
from .ensemble import infer_ensemble
from .template import generate_template
from .reduce import reduce_contexts, soa_distance, build_soa_with_support, minimize_contexts, reduce_and_infer
__version__ = "0.2.0"

408
bex/reduce.py Normal file
View file

@ -0,0 +1,408 @@
"""Reduce — Algorithm 4 (TODS 2010).
Paper: Bex et al. "Inference of Concise Regular Expressions and DTDs"
ACM Transactions on Database Systems, 2010. Section 5.
When iLocal runs on an incomplete corpus, it may infer separate types for what is
actually the same type in the target schema. Reduce fixes this by measuring
similarity between inferred types and merging those that are close enough.
Key definitions:
dist(A, B) SOA edit distance (Definition 14):
dist(A, B) = (_{(a,b)E-F} suppA(a,b) / _{(a,b)E} suppA(a,b))
+ (_{(a,b)F-E} suppB(a,b) / _{(a,b)F} suppB(a,b))
distD(s, t) type distance in inferred XSD D (Definition 15):
distD(s, t) = max_{(s',t')reachD(s,t)} dist(soa(s'), soa(t'))
Adjunction A B merge SOAs by unioning edges, summing support:
supp_{AB}(a,b) = supp_A(a,b) + supp_B(a,b)
ToSore(SOA) convert SOA to SORE (Algorithm 6: RWR₀)
Minimize(D, r) unify equivalent types in XSD D
For our use case (flat sequences, no XSD type hierarchy):
- "types" are context groupings (context_key -> sequences)
- reachD(s, t) = {(s, t)} (no hierarchy, so distD = dist)
- elemsD(t) = (no child elements, so lines 8-11 are no-ops)
- ToSore = rwr0 (our REWRITE implementation)
- Minimize = merge contexts with identical SOREs
Important: SOA state IDs are not comparable across different SOAs.
We compare labeled transitions (symbol pairs) instead of state ID pairs.
"""
from collections import defaultdict
from itertools import combinations
from .soa import SOA
from .twotinf import build_soa
from .rwr0 import rwr0
def _labeled_transitions(soa):
"""Extract labeled transitions from SOA.
Returns a dict mapping (from_label, to_label) -> set of state pairs.
Labels are: None for src/sink, symbol string for other states.
We use ('SRC',) for src and ('SINK',) for sink to make them distinguishable.
"""
transitions = defaultdict(set)
for f, targets in soa._succ.items():
for t in targets:
# Get labels: src -> ('SRC',), sink -> ('SINK',), others -> symbol
if f == soa.src:
f_label = ('SRC',)
elif f == soa.sink:
f_label = ('SINK',)
else:
f_label = (soa.label(f),)
if t == soa.src:
t_label = ('SRC',)
elif t == soa.sink:
t_label = ('SINK',)
else:
t_label = (soa.label(t),)
transitions[(f_label, t_label)].add((f, t))
return dict(transitions)
def build_soa_with_support(sequences):
"""Build a SOA with support annotations.
For each edge (a, b), track suppA(a, b) = number of strings in S
for which (a, b) needed to be added to the edges of A.
Args:
sequences: list of lists of symbols
Returns:
(SOA, support_dict) where support_dict maps (from_label, to_label) -> count
"""
G = SOA()
# Support keyed by labeled transitions, not state IDs
support = {}
symbol_states = {}
for seq in sequences:
if not seq:
if not G.has_edge(G.src, G.sink):
G.add_edge(G.src, G.sink)
key = (('SRC',), ('SINK',))
support[key] = support.get(key, 0) + 1
continue
for i, token in enumerate(seq):
if token not in symbol_states:
symbol_states[token] = G.add_state(token)
if i == 0:
if not G.has_edge(G.src, symbol_states[token]):
G.add_edge(G.src, symbol_states[token])
key = (('SRC',), (token,))
support[key] = support.get(key, 0) + 1
if i == len(seq) - 1:
if not G.has_edge(symbol_states[token], G.sink):
G.add_edge(symbol_states[token], G.sink)
key = ((token,), ('SINK',))
support[key] = support.get(key, 0) + 1
if i + 1 < len(seq):
nxt = seq[i + 1]
if nxt not in symbol_states:
symbol_states[nxt] = G.add_state(nxt)
if not G.has_edge(symbol_states[token], symbol_states[nxt]):
G.add_edge(symbol_states[token], symbol_states[nxt])
key = ((token,), (nxt,))
support[key] = support.get(key, 0) + 1
return G, support
def soa_distance(supp_a, supp_b):
"""SOA edit distance (Definition 14, TODS 2010).
dist(A, B) = (_{(a,b)E-F} suppA(a,b) / _{(a,b)E} suppA(a,b))
+ (_{(a,b)F-E} suppB(a,b) / _{(a,b)F} suppB(a,b))
Support-weighted: edges that appear in many strings contribute more.
dist = 0 means the SOAs accept the same language.
Args:
supp_a: Support dict for SOA A, maps (from_label, to_label) -> count
supp_b: Support dict for SOA B, maps (from_label, to_label) -> count
Returns:
Float in [0, 1]. 0 = identical, 1 = completely disjoint.
"""
edges_a = frozenset(supp_a.keys())
edges_b = frozenset(supp_b.keys())
if not edges_a and not edges_b:
return 0.0
total_a = sum(supp_a.values())
total_b = sum(supp_b.values())
if total_a == 0 and total_b == 0:
return 0.0
# ∑_{(a,b)∈E-F} suppA(a,b) / ∑_{(a,b)∈E} suppA(a,b)
only_a = sum(supp_a[e] for e in (edges_a - edges_b))
dist_a = only_a / total_a if total_a > 0 else 0
# ∑_{(a,b)∈F-E} suppB(a,b) / ∑_{(a,b)∈F} suppB(a,b)
only_b = sum(supp_b[e] for e in (edges_b - edges_a))
dist_b = only_b / total_b if total_b > 0 else 0
return dist_a + dist_b
def adjunct_support(supp_a, supp_b):
"""Adjunction of support-annotated SOAs (line 6, Algorithm 4).
supp_{AB}(a, b) = supp_A(a, b) + supp_B(a, b)
(assuming supp_A(a, b) = 0 if (a,b) E_A, and similarly for B)
"""
combined = dict(supp_a)
for edge, count in supp_b.items():
combined[edge] = combined.get(edge, 0) + count
return combined
def reduce_contexts(contexts, threshold):
"""Reduce algorithm for context groupings (Algorithm 4, TODS 2010).
Faithful implementation of Algorithm 4, adapted for flat sequences
(no XSD type hierarchy):
Line 1: let (T, ρ, τ) = D
T = set of context keys
ρ(context) = SORE (built from sequences)
τ = (no type hierarchy for flat contexts)
Line 2: M := {(s, t) | 0 < distD(s, t) < ε}
For flat contexts: distD(s, t) = dist(soa(s), soa(t))
Lines 3-12: while M is non-empty
For each (s, t) M:
Line 6: soa(s) := soa(s) soa(t) [adjunction]
Line 7: soa(t) := soa(s)
Lines 8-11: copy elems (no-op: elemsD = )
Line 12: recompute M
Lines 13-14: for each t, replace ρ(t) by ToSore(soa(t))
ToSore = rwr0 (our REWRITE implementation)
Line 15: Minimize(D, r)
Merge contexts with identical SOREs
Args:
contexts: dict mapping context_key -> list of sequences
threshold: similarity threshold ε in [0, 1]
- 0.05: very conservative
- 0.15: moderate (Bex's recommended starting point)
- 0.30: aggressive
Returns:
(merged_contexts, merge_info)
"""
# Line 1: Build support-annotated SOAs for contexts with >= 2 sequences
ctx_data = {} # ctx -> (soa, support_dict, sequences)
for ctx, seqs in contexts.items():
if len(seqs) >= 2:
soa, supp = build_soa_with_support(seqs)
ctx_data[ctx] = (soa, supp, seqs)
ctx_list = list(ctx_data.keys())
merge_log = []
total_comparisons = 0
iteration = 0
# Lines 3-12: while M is non-empty
while True:
iteration += 1
# Line 2: M := {(s, t) ∈ T² | 0 < distD(s, t) < ε}
M = []
for i in range(len(ctx_list)):
for j in range(i + 1, len(ctx_list)):
ctx_a, ctx_b = ctx_list[i], ctx_list[j]
if ctx_a not in ctx_data or ctx_b not in ctx_data:
continue
_, supp_a, _ = ctx_data[ctx_a]
_, supp_b, _ = ctx_data[ctx_b]
total_comparisons += 1
dist = soa_distance(supp_a, supp_b)
if 0 < dist < threshold:
M.append((ctx_a, ctx_b, dist))
# Line 3: while M is non-empty
if not M:
break
# Line 4: for each (s, t) ∈ M
for ctx_a, ctx_b, dist in M:
if ctx_a not in ctx_data or ctx_b not in ctx_data:
continue # Already merged in this iteration
_, supp_a, seqs_a = ctx_data[ctx_a]
_, supp_b, seqs_b = ctx_data[ctx_b]
# Line 6: soa(s) := soa(s) soa(t) [adjunction]
combined_supp = adjunct_support(supp_a, supp_b)
# Merge sequences (equivalent to adjunction for SOA building)
merged_seqs = seqs_a + seqs_b
# Rebuild SOA from merged sequences
new_soa, new_supp = build_soa_with_support(merged_seqs)
# Line 7: soa(t) := soa(s)
ctx_data[ctx_a] = (new_soa, new_supp, merged_seqs)
del ctx_data[ctx_b]
merge_log.append({
"iteration": iteration,
"merged_into": str(ctx_a),
"removed": str(ctx_b),
"distance": round(dist, 4),
"new_size": len(merged_seqs),
})
# Line 12: recompute M (loop continues)
# Lines 13-14: for each type t, replace ρ(t) by ToSore(soa(t))
# This happens implicitly when we infer SOREs later
# Build final merged contexts dict
merged = {}
for ctx, (soa, supp, seqs) in ctx_data.items():
merged[ctx] = seqs
# Add contexts with < 2 sequences (no SOA built)
for ctx, seqs in contexts.items():
if ctx not in merged:
merged[ctx] = seqs
merge_info = {
"iterations": iteration,
"merges": len(merge_log),
"comparisons": total_comparisons,
"contexts_before": len(contexts),
"contexts_after": len(merged),
"threshold": threshold,
"merge_log": merge_log,
}
return merged, merge_info
def minimize_contexts(merged_contexts):
"""Minimize: merge contexts with identical SOREs (Line 15, Algorithm 4).
After Reduce, some contexts may have identical SOREs. Minimize unifies them.
For our use case: group contexts by their inferred SORE, merge those with
the same SORE into a single context.
"""
# Build SORE for each context
ctx_sores = {}
for ctx, seqs in merged_contexts.items():
if len(seqs) < 2:
ctx_sores[ctx] = ("", seqs)
continue
from .tag_preprocessor.analyze import frequency_filter
filtered = frequency_filter(
[[(j, s, 0) for j, s in enumerate(seq)] for seq in seqs],
min_coverage=0.0,
)
clean = [[text for _, text, _ in r] for r in filtered]
clean = [s for s in clean if s]
if len(clean) < 2:
ctx_sores[ctx] = ("", seqs)
continue
soa = build_soa(clean)
sore = rwr0(soa)
ctx_sores[ctx] = (sore, seqs)
# Group by SORE
sore_groups = defaultdict(list)
for ctx, (sore, seqs) in ctx_sores.items():
sore_groups[sore].append((ctx, seqs))
# Merge contexts with same SORE
minimized = {}
for sore, items in sore_groups.items():
if len(items) == 1:
ctx, seqs = items[0]
minimized[ctx] = seqs
else:
# Multiple contexts with same SORE -> merge into one
merged_seqs = []
for ctx, seqs in items:
merged_seqs.extend(seqs)
# Use the shortest context key as the representative
rep = min(items, key=lambda x: len(x[0]))[0]
minimized[rep] = merged_seqs
return minimized
def reduce_and_infer(contexts, threshold, min_methods=3):
"""Full Reduce + Minimize + Infer pipeline.
Args:
contexts: dict mapping context_key -> list of sequences
threshold: similarity threshold for Reduce
min_methods: minimum methods per context to attempt inference
Returns:
dict with keys:
merged: final context->sequences mapping (after minimize)
infer_results: list of (context, sore, methods_count) tuples
merge_info: stats from reduce step
minimize_info: stats from minimize step
"""
merged, merge_info = reduce_contexts(contexts, threshold)
minimized = minimize_contexts(merged)
minimize_info = {
"contexts_before": merge_info["contexts_after"],
"contexts_after": len(minimized),
"merged_by_sore": merge_info["contexts_after"] - len(minimized),
}
# Line 14: ToSore(soa(t)) — infer SOREs for each context
infer_results = []
for ctx, seqs in sorted(minimized.items(), key=lambda x: -len(x[1])):
n = len(seqs)
if n < min_methods:
continue
from .tag_preprocessor.analyze import frequency_filter
filtered = frequency_filter(
[[(j, s, 0) for j, s in enumerate(seq)] for seq in seqs],
min_coverage=0.0,
)
clean = [[text for _, text, _ in r] for r in filtered]
clean = [s for s in clean if s]
if len(clean) < 2:
continue
soa = build_soa(clean)
sore = rwr0(soa)
if sore != "":
infer_results.append((ctx, sore, n))
return {
"merged": minimized,
"infer_results": infer_results,
"merge_info": merge_info,
"minimize_info": minimize_info,
"coverage_count": sum(n for _, _, n in infer_results),
}

View file

@ -1,99 +1,119 @@
# Experiment Results — RAGSAK Context Strategies
# Experiment Results — Context Strategies + Reduce
**Date**: 2026-07-11
**Codebase**: RAGSAK (462 .kt files, 1594 methods, 137 packages)
**Date**: 2026-07-12
## Summary Table
## Codebases
| Strategy | Contexts | SORE OK | Coverage | Notes |
|----------|----------|---------|----------|-------|
| Baseline (package) | 116 | 2 | 0.6% | Current approach — terrible |
| File path k=1 | 43 | 2 | 1.1% | Structural — no better than baseline |
| File path k=2 | 54 | 2 | 1.1% | Same — structural doesn't help |
| File path k=3 | 54 | 2 | 1.1% | Same — structural doesn't help |
| Codebase | Files | Methods | Language |
|----------|-------|---------|----------|
| RAGSAK | 462 | 1594 | Kotlin |
| Flask | 24 | 1391 | Python |
## RAGSAK Results
| Strategy | Contexts | SOREs | Coverage | Notes |
|----------|----------|-------|----------|-------|
| Baseline (package) | 116 | 2 | 0.6% | Structural — useless |
| File path k=1 | 43 | 2 | 1.1% | Structural — no better |
| File path k=2 | 54 | 2 | 1.1% | Same |
| File path k=3 | 54 | 2 | 1.1% | Same |
| **First 1 symbol** | 134 | **20** | **4.6%** | Behavioral — 10× better |
| **First 2 symbols** | 141 | **39** | **9.8%** | Behavioral — 20× better |
| **First 3 symbols** | 117 | **47** | **12.0%** | Behavioral — **winner** |
| Two-dim (p1,s1) | 151 | 24 | 6.3% | Hybrid — worse than behavioral alone |
| Two-dim (p1,s2) | 119 | 33 | 8.7% | Hybrid — worse than behavioral alone |
| Two-dim (p2,s1) | 146 | 24 | 6.3% | Hybrid — worse than behavioral alone |
| Two-dim (p2,s2) | 117 | 33 | 8.7% | Hybrid — worse than behavioral alone |
| Return type heuristic | 5 | 0 | 0.0% | Too coarse — useless |
| **First 3 symbols** | 117 | **47** | **12.0%** | **Winner** |
| Two-dim (p1,s1) | 151 | 24 | 6.3% | Hybrid — worse |
| Two-dim (p1,s2) | 119 | 33 | 8.7% | Hybrid — worse |
| Two-dim (p2,s1) | 146 | 24 | 6.3% | Hybrid — worse |
| Two-dim (p2,s2) | 117 | 33 | 8.7% | Hybrid — worse |
| Return type heuristic | 5 | 0 | 0.0% | Useless |
### Reduce Results (RAGSAK)
| Base | Threshold | Merges | Coverage | Notes |
|------|-----------|--------|----------|-------|
| k=1 | 0.05-0.4 | 0 | 4.6% | No merges — contexts too distinct |
| k=2 | 0.05-0.2 | 0 | 9.8% | No merges |
| k=2 | 0.3 | 1 | 9.6% | Merged `(JobStatus, every)` with `(JobStatus, now)` |
| k=2 | 0.4 | 2 | 9.5% | Merged 2 pairs |
| k=3 | 0.05-0.2 | 0 | 12.0% | No merges |
| k=3 | 0.3 | 1 | 11.7% | Merged `(JobStatus, every, getJobStatus)` with `(JobStatus, now, minusMinutes)` |
| k=3 | 0.4 | 1 | 11.7% | Same merge |
## Flask Results
| Strategy | Contexts | SOREs | Coverage | Notes |
|----------|----------|-------|----------|-------|
| Baseline (package) | 9 | 0 | 0.0% | Structural — useless |
| File path k=1 | 7 | 0 | 0.0% | Same |
| File path k=2 | 9 | 0 | 0.0% | Same |
| File path k=3 | 9 | 0 | 0.0% | Same |
| **First 1 symbol** | 53 | **2** | **1.4%** | Behavioral — only 2 SOREs |
| **First 2 symbols** | 96 | **18** | **7.3%** | Behavioral — 15× better |
| **First 3 symbols** | 85 | **21** | **10.7%** | **Winner** |
| Two-dim (p1,s1) | 68 | 5 | 2.2% | Hybrid — worse |
| Two-dim (p1,s2) | 96 | 22 | 10.1% | Close to behavioral |
| Two-dim (p2,s1) | 69 | 5 | 2.2% | Worse |
| Two-dim (p2,s2) | 93 | 19 | 9.5% | Close to behavioral |
| Return type heuristic | 3 | 0 | 0.0% | Useless |
### Reduce Results (Flask)
| Base | Threshold | Merges | Coverage | Notes |
|------|-----------|--------|----------|-------|
| k=1 | 0.05-0.4 | 0 | 1.4% | No merges |
| k=2 | 0.05-0.2 | 0 | 7.3% | No merges |
| k=2 | 0.3-0.4 | 1 | 7.3% | Merged `(def, boolean)` with `(def, is_boolean)` |
| k=3 | 0.05-0.2 | 0 | 10.7% | No merges |
| k=3 | 0.3-0.4 | 1 | 10.7% | Merged `(def, boolean, return)` with `(def, is_boolean, return)` |
## Cross-Codebase Comparison
| Metric | RAGSAK | Flask |
|--------|--------|-------|
| Best strategy | First 3 symbols | First 3 symbols |
| Best coverage | 12.0% | 10.7% |
| SOREs (best) | 47 | 21 |
| Reduce merges (ε=0.3) | 1 | 1 |
| Reduce impact on coverage | -0.3% | 0% |
## Key Findings
### 1. Behavioral grouping > Structural grouping
- File path strategies (A) produce same results as baseline — structural similarity doesn't predict behavioral similarity
- First-k-symbols strategies (B) produce 20× more SOREs — behavioral prefix is the right signal
- **Winner: Option B, k=3** — 47 SOREs, 12% coverage
### 1. Behavioral grouping wins consistently
- Both codebases: First-k-symbols beats all other strategies
- Structural (file path) is useless — doesn't predict behavioral similarity
- Hybrid (2D) is worse than pure behavioral
### 2. Two-dimensional doesn't help
- Adding file path to behavioral grouping **reduces** performance
- The structural component drags down the behavioral signal
- Conclusion: **drop the structural dimension entirely**
### 2. Coverage ceiling is ~10-12%
- RAGSAK: 12.0% with 47 SOREs
- Flask: 10.7% with 21 SOREs
- Most methods have unique call patterns — they don't share prefixes
### 3. The successful SOREs reveal real patterns
### 3. Reduce has minimal impact
- Very few merges at any threshold (0-2 per codebase)
- Support-weighted distance is conservative — requires very similar SOAs
- Merges that do happen don't improve coverage
- Reason: contexts created by first-k-symbols are already quite distinct
**Test patterns** (most common):
- `post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?` — HTTP test flow
- `runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus` — test setup
- `every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?` — polling pattern
### 4. The few Reduce merges are meaningful
- RAGSAK: `(JobStatus, every, getJobStatus)``(JobStatus, now, minusMinutes)` — same polling pattern, different initial call
- Flask: `(def, boolean)``(def, is_boolean)` — same type-checking pattern, different method name
**Assertion patterns**:
- `assertEquals.(of.(assertFailsWith)?)+` — assertion chain
- `filesIn.assertTrue.(hasImport)+` — file validation
- `trim.lowercase.(warn)+` — string processing
**Mock patterns**:
- `mockk.every....` — mock setup
- `clearAllMocks` — cleanup
**CRUD patterns**:
- `info.deleteByJobId` — delete operation
- `info.deleteByKnowledgeBaseId` — delete operation
- `update.trimIndent.now.insertRow` — update operation
### 4. Why coverage is still low (12%)
- Most methods have **unique call patterns** — they don't share a 3-symbol prefix with any other method
- The 3-symbol prefix is too specific for diverse codebases
- Need either:
- More data (more codebases to train on)
- Looser grouping (k=1 or k=2, but with merging)
- Symbol coarsening (collapse specific symbols into categories)
### 5. Smart filters work well
- `max_unique_ratio=0.85`: Skips 60-80% of groups (too diverse)
- `max_alphabet=20`: Skips groups with too many unique symbols
- `max_soa_edges=100`: Skips complex SOAs that would be slow
- **Result**: Experiment runs in <1s instead of minutes
## Successful SORE Examples (Top 10 by group size)
| Context | Methods | Unique Ratio | SORE |
|---------|---------|--------------|------|
| `ery {.stKnowledgeBases().gRequest(m` | 12 | 0.333 | `ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn."k\|eckKnowledgeBase(r.(sertEquals(K.("\|(sertEquals(` |
| `mockk` | 11 | 0.091 | `mockk` |
| `filesIn.assertTrue.hasImport` | 7 | 0.286 | `filesIn.assertTrue.(hasImport)+` |
| `of` | 7 | 0.143 | `of` |
| `assertEquals.of.assertFailsWith` | 7 | 0.429 | `assertEquals.(of.(assertFailsWith)?)+` |
| `filesIn.filter.contains` | 5 | 0.400 | `filesIn.filter.contains.assertTrue.(hasImport)+` |
| `trim.lowercase.warn` | 5 | 0.400 | `trim.lowercase.(warn)+` |
| `DoclingConfig.assertThatThrownBy.validateCriticalSettings` | 5 | 0.200 | `DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining` |
| `defaultCapabilityId` | 4 | 0.250 | `defaultCapabilityId` |
| `clearAllMocks` | 4 | 0.250 | `clearAllMocks` |
### 5. Flask is harder than RAGSAK
- Flask has fewer files (24 vs 462) but similar methods (1391 vs 1594)
- Flask has more unique methods per package — less repetition
- Flask SOREs are shorter/simpler — less compressible patterns
## Next Steps
1. **Symbol coarsening**: Collapse specific symbols into categories (GETTER, SETTER, BUILDER, etc.) to reduce fragmentation
2. **Hierarchical grouping**: Group by k=1 first, then sub-group by k=2 within each group
3. **Merge similar contexts**: After initial grouping, merge contexts with similar SOREs (Bex's Reduce algorithm)
4. **Test on more codebases**: RAGSAK may not be representative — need more data
5. **Accept the limit**: Some methods are genuinely unique — 12% coverage may be the ceiling for this approach
1. **Accept the ceiling**: ~10-12% coverage may be the maximum for prefix-based grouping
2. **Symbol coarsening**: Collapse specific symbols into categories (GETTER, SETTER, etc.)
3. **Hierarchical grouping**: Group by k=1 first, then sub-group by k=2 within each group
4. **GBNF output**: Convert SOREs to GBNF format for llama.cpp constrained decoding
5. **Test on kotlinx.coroutines**: Third codebase for cross-validation
## Files Generated
- `experiments/results/summary.json` — metrics for all strategies
- `experiments/results/*.json` — detailed results per strategy
- `experiments/context_eval.py` — experiment runner script
- `Papers/02-06-2026/context-design-analysis.md` — analysis of all options
- `Papers/02-06-2026/bex-research-summary.md` — summary of Bex's papers
- `experiments/results/ragsak_summary.json` — RAGSAK metrics
- `experiments/results/flask_summary.json` — Flask metrics
- `experiments/context_eval.py` — experiment runner (supports multiple codebases)
- `bex/reduce.py` — Algorithm 4 (TODS 2010) implementation
- `tests/test_reduce.py` — 24 tests for Reduce

View file

@ -1,12 +1,12 @@
"""Context Strategy Experiments — Test all context strategies on RAGSAK.
"""Context Strategy Experiments — Test context strategies + Reduce merging.
Preserves results in experiments/results/ for future reference.
Tests on multiple codebases. Preserves results in experiments/results/.
"""
import json
import os
import sys
import time
from collections import defaultdict, Counter
from collections import defaultdict
from pathlib import Path
from bex.tag_preprocessor.analyze import (
@ -14,25 +14,35 @@ from bex.tag_preprocessor.analyze import (
)
from bex.twotinf import build_soa
from bex.rwr0 import rwr0
from bex.crx import CRX
from bex.idregex import idregex
from bex.mdl import lang_size_score
from bex.reduce import reduce_contexts, soa_distance, build_soa_with_support
BASE = "/home/tobi/Desktop/kesai/RAGSAK"
RESULTS_DIR = Path(__file__).parent / "results"
def load_data():
"""Load all Kotlin files from RAGSAK."""
groups = scan_directory(BASE)
kt_files = groups.get(".kt", [])
sequences, seq_files = _preprocess_files(kt_files)
CODEBASES = {
"ragsak": {"name": "RAGSAK", "path": "/home/tobi/Desktop/kesai/RAGSAK", "ext": ".kt"},
"flask": {"name": "Flask", "path": "/home/tobi/Desktop/dervish/external_refs/flask", "ext": ".py"},
}
# ---------------------------------------------------------------------------
# Data loading
# ---------------------------------------------------------------------------
def load_data(base, ext):
groups = scan_directory(base)
files = groups.get(ext, [])
sequences, seq_files = _preprocess_files(files)
symbol_seqs = [[text for _, text, _ in seq] for seq in sequences]
packages = [_file_to_package(fp, BASE) for fp in seq_files]
packages = [_file_to_package(fp, base) for fp in seq_files]
return symbol_seqs, packages, seq_files
# ---------------------------------------------------------------------------
# Context strategies
# ---------------------------------------------------------------------------
def context_file_path_k(symbol_seqs, packages, k):
"""Option A: Group by last k components of file path."""
contexts = defaultdict(list)
@ -79,7 +89,6 @@ def context_return_type_heuristic(symbol_seqs):
if not seq:
contexts[("ε",)].append(seq)
else:
# Heuristic: last symbol often indicates return type
last = seq[-1]
if last.startswith("return"):
ctx = ("RETURN_" + last.split()[1] if len(last.split()) > 1 else "RETURN_OTHER",)
@ -93,16 +102,13 @@ def context_return_type_heuristic(symbol_seqs):
return contexts
# ---------------------------------------------------------------------------
# Evaluation
# ---------------------------------------------------------------------------
def evaluate_context(contexts, label, min_methods=3, max_methods=50,
max_unique_ratio=0.85, max_alphabet=20, max_soa_edges=100):
"""Evaluate a context grouping: learn SOREs, collect metrics.
Smart filters before attempting REWRITE:
- max_methods: skip groups too large (will fail, waste time)
- max_unique_ratio: skip if sequences are too diverse
- max_alphabet: skip if too many unique symbols (SORE can't compress)
- max_soa_edges: skip if SOA is too complex (REWRITE will be slow)
"""
"""Evaluate a context grouping: learn SOREs, collect metrics."""
results = {
"strategy": label,
"total_contexts": len(contexts),
@ -125,7 +131,6 @@ def evaluate_context(contexts, label, min_methods=3, max_methods=50,
unique = len(set(tuple(s) for s in seqs))
unique_ratio = unique / n if n else 1.0
# Filter: too many methods
if n > max_methods:
results["skip_reasons"]["too_large"] = results["skip_reasons"].get("too_large", 0) + 1
results["groups"].append({
@ -135,7 +140,6 @@ def evaluate_context(contexts, label, min_methods=3, max_methods=50,
})
continue
# Filter: too diverse
if unique_ratio > max_unique_ratio:
results["skip_reasons"]["too_diverse"] = results["skip_reasons"].get("too_diverse", 0) + 1
results["groups"].append({
@ -145,7 +149,6 @@ def evaluate_context(contexts, label, min_methods=3, max_methods=50,
})
continue
# Filter: too many unique symbols
alphabet = set()
for seq in seqs:
alphabet.update(seq)
@ -158,7 +161,6 @@ def evaluate_context(contexts, label, min_methods=3, max_methods=50,
})
continue
# Filter: rare symbols
filtered = frequency_filter(
[[(j, s, 0) for j, s in enumerate(seq)] for seq in seqs],
min_coverage=0.0,
@ -170,7 +172,6 @@ def evaluate_context(contexts, label, min_methods=3, max_methods=50,
results["skip_reasons"]["empty_after_filter"] = results["skip_reasons"].get("empty_after_filter", 0) + 1
continue
# Build SOA and check complexity before REWRITE
soa = build_soa(clean)
n_edges = sum(len(v) for v in soa._succ.values())
if n_edges > max_soa_edges:
@ -182,7 +183,6 @@ def evaluate_context(contexts, label, min_methods=3, max_methods=50,
})
continue
# Learn SORE
sore = rwr0(soa)
group_info = {
@ -210,90 +210,143 @@ def evaluate_context(contexts, label, min_methods=3, max_methods=50,
return results
def run_experiment(name, contexts, label):
"""Run one experiment, save results."""
print(f"\n{'='*60}")
print(f" {label}")
print(f"{'='*60}")
def run_experiment(name, contexts, label, codebase_name, merge_info=None):
"""Run one experiment, print + save results."""
print(f"\n {label}")
t0 = time.time()
results = evaluate_context(contexts, label)
elapsed = time.time() - t0
results["elapsed_seconds"] = round(elapsed, 2)
if merge_info:
results["merge_info"] = merge_info
print(f" Contexts: {results['total_contexts']}")
print(f" Meaningful (>=3 methods): {results['meaningful_contexts']}")
if results.get("skip_reasons"):
for reason, count in results["skip_reasons"].items():
print(f" Skipped ({reason}): {count}")
print(f" SORE successes: {results['sore_successes']}")
print(f" SORE failures: {results['sore_failures']}")
print(f" Coverage: {results['coverage']}%")
print(f" Time: {elapsed:.1f}s")
print(f" Contexts: {results['total_contexts']} Meaningful: {results['meaningful_contexts']} "
f"SOREs: {results['sore_successes']} Coverage: {results['coverage']}% "
f"Time: {elapsed:.2f}s")
if merge_info:
print(f" Merges: {merge_info['merges']} Threshold: {merge_info['threshold']}")
# Save
out_path = RESULTS_DIR / f"{name}.json"
out_path = RESULTS_DIR / f"{codebase_name}_{name}.json"
with open(out_path, "w") as f:
json.dump(results, f, indent=2)
print(f" Saved: {out_path}")
return results
def main():
print("Loading RAGSAK data...")
symbol_seqs, packages, seq_files = load_data()
# ---------------------------------------------------------------------------
# Run all experiments for one codebase
# ---------------------------------------------------------------------------
def run_codebase(codebase_key):
cfg = CODEBASES[codebase_key]
name = cfg["name"]
base = cfg["path"]
ext = cfg["ext"]
print(f"\n{'#' * 70}")
print(f"# {name} ({base})")
print(f"{'#' * 70}")
print(f"Loading {name} data...")
symbol_seqs, packages, seq_files = load_data(base, ext)
print(f"Loaded {len(symbol_seqs)} methods from {len(set(packages))} packages")
all_results = []
# Baseline: package grouping (current approach)
# --- Baselines ---
contexts = defaultdict(list)
for i, seq in enumerate(symbol_seqs):
contexts[packages[i]].append(seq)
all_results.append(run_experiment("baseline_package", contexts, "Baseline: Package grouping"))
all_results.append(run_experiment("baseline_package", contexts,
"Baseline: Package grouping", codebase_key))
# Option A: File path k-equivalence
for k in [1, 2, 3]:
contexts = context_file_path_k(symbol_seqs, packages, k)
all_results.append(run_experiment(f"file_path_k{k}", contexts, f"Option A: File path k={k}"))
all_results.append(run_experiment(f"file_path_k{k}", contexts,
f"Option A: File path k={k}", codebase_key))
# Option B: First k symbols
for k in [1, 2, 3]:
contexts = context_first_k_symbols(symbol_seqs, k)
all_results.append(run_experiment(f"first_k_sym_{k}", contexts, f"Option B: First {k} symbols"))
all_results.append(run_experiment(f"first_k_sym_{k}", contexts,
f"Option B: First {k} symbols", codebase_key))
# Option C: Two-dimensional
for path_k in [1, 2]:
for sym_k in [1, 2]:
contexts = context_two_d(symbol_seqs, packages, path_k, sym_k)
all_results.append(run_experiment(
f"two_d_p{path_k}_s{sym_k}", contexts,
f"Option C: Path k={path_k} + Symbol k={sym_k}"
))
f"Option C: Path k={path_k} + Symbol k={sym_k}", codebase_key))
# Option H: Return type heuristic
contexts = context_return_type_heuristic(symbol_seqs)
all_results.append(run_experiment("return_type_heuristic", contexts, "Option H: Return type heuristic"))
all_results.append(run_experiment("return_type_heuristic", contexts,
"Option H: Return type heuristic", codebase_key))
# Summary
print("\n" + "=" * 80)
print(" SUMMARY")
print("=" * 80)
print(f"{'Strategy':<40} {'Contexts':>8} {'SORE OK':>8} {'Coverage':>8}")
print("-" * 80)
# --- Reduce experiments ---
# Best base: first k symbols, k=1,2,3
# Test Reduce on each with thresholds
reduce_thresholds = [0.05, 0.10, 0.15, 0.20, 0.30, 0.40]
print(f"\n--- Reduce experiments ---")
for base_k in [1, 2, 3]:
base_contexts = context_first_k_symbols(symbol_seqs, base_k)
base_eval = evaluate_context(base_contexts, f"First {base_k} symbols (pre-reduce)")
for threshold in reduce_thresholds:
merged, merge_count = reduce_contexts(base_contexts, threshold)
merge_info = {"merges": merge_count, "threshold": threshold,
"contexts_before": len(base_contexts),
"contexts_after": len(merged)}
label = f"Reduce k={base_k} ε={threshold}"
all_results.append(run_experiment(
f"reduce_k{base_k}_e{str(threshold).replace('.', '')}",
merged, label, codebase_key, merge_info))
# --- Summary ---
print(f"\n{'=' * 70}")
print(f" {name} SUMMARY")
print(f"{'=' * 70}")
print(f"{'Strategy':<42} {'Ctx':>5} {'SORE':>5} {'Cov%':>6} {'Merge':>5}")
print("-" * 70)
for r in all_results:
print(f"{r['strategy']:<40} {r['meaningful_contexts']:>8} {r['sore_successes']:>8} {r['coverage']:>7}%")
merge_str = ""
if r.get("merge_info"):
merge_str = str(r["merge_info"]["merges"])
print(f"{r['strategy']:<42} {r['meaningful_contexts']:>5} "
f"{r['sore_successes']:>5} {r['coverage']:>5.1f}% {merge_str:>5}")
# Save summary
summary = [
{k: v for k, v in r.items() if k != "groups"}
for r in all_results
]
summary_path = RESULTS_DIR / "summary.json"
summary_path = RESULTS_DIR / f"{codebase_key}_summary.json"
with open(summary_path, "w") as f:
json.dump(summary, f, indent=2)
print(f"\nSummary saved: {summary_path}")
print(f"\nSummary: {summary_path}")
return all_results
def main():
RESULTS_DIR.mkdir(parents=True, exist_ok=True)
targets = sys.argv[1:] if len(sys.argv) > 1 else list(CODEBASES.keys())
all_results = {}
for key in targets:
if key not in CODEBASES:
print(f"Unknown codebase: {key}. Available: {list(CODEBASES.keys())}")
continue
all_results[key] = run_codebase(key)
# Cross-codebase comparison
print(f"\n{'#' * 70}")
print(f"# CROSS-CODEBASE COMPARISON")
print(f"{'#' * 70}")
for key, results in all_results.items():
cfg = CODEBASES[key]
best = max(results, key=lambda r: r["coverage"])
print(f"\n {cfg['name']}: best = {best['strategy']} ({best['coverage']}%)")
if __name__ == "__main__":

View file

@ -0,0 +1,90 @@
{
"strategy": "Baseline: Package grouping",
"total_contexts": 15,
"meaningful_contexts": 9,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 4
},
"groups": [
{
"context": "tests",
"methods": 943,
"unique": 543,
"unique_ratio": 0.576,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "src/flask",
"methods": 207,
"unique": 192,
"unique_ratio": 0.928,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "src/flask/sansio",
"methods": 102,
"unique": 82,
"unique_ratio": 0.804,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "src/flask/json",
"methods": 49,
"unique": 39,
"unique_ratio": 0.796,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "examples/tutorial/tests",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "tests/type_check",
"methods": 23,
"unique": 9,
"unique_ratio": 0.391,
"sore": "\u2205",
"sore_success": false
},
{
"context": "examples/tutorial/flaskr",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "examples/celery/src/task_app",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "examples/javascript/tests",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 0.0,
"elapsed_seconds": 0.02
}

View file

@ -0,0 +1,74 @@
{
"strategy": "Option A: File path k=1",
"total_contexts": 13,
"meaningful_contexts": 7,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 2
},
"groups": [
{
"context": "('tests',)",
"methods": 970,
"unique": 565,
"unique_ratio": 0.582,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('flask',)",
"methods": 207,
"unique": 192,
"unique_ratio": 0.928,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('sansio',)",
"methods": 102,
"unique": 82,
"unique_ratio": 0.804,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('json',)",
"methods": 49,
"unique": 39,
"unique_ratio": 0.796,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('type_check',)",
"methods": 23,
"unique": 9,
"unique_ratio": 0.391,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flaskr',)",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('task_app',)",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 0.0,
"elapsed_seconds": 0.01
}

View file

@ -0,0 +1,90 @@
{
"strategy": "Option A: File path k=2",
"total_contexts": 15,
"meaningful_contexts": 9,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 4
},
"groups": [
{
"context": "('tests',)",
"methods": 943,
"unique": 543,
"unique_ratio": 0.576,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('src', 'flask')",
"methods": 207,
"unique": 192,
"unique_ratio": 0.928,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('flask', 'sansio')",
"methods": 102,
"unique": 82,
"unique_ratio": 0.804,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('flask', 'json')",
"methods": 49,
"unique": 39,
"unique_ratio": 0.796,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tutorial', 'tests')",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'type_check')",
"methods": 23,
"unique": 9,
"unique_ratio": 0.391,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tutorial', 'flaskr')",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'task_app')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('javascript', 'tests')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 0.0,
"elapsed_seconds": 0.02
}

View file

@ -0,0 +1,90 @@
{
"strategy": "Option A: File path k=3",
"total_contexts": 15,
"meaningful_contexts": 9,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 4
},
"groups": [
{
"context": "('tests',)",
"methods": 943,
"unique": 543,
"unique_ratio": 0.576,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('src', 'flask')",
"methods": 207,
"unique": 192,
"unique_ratio": 0.928,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('src', 'flask', 'sansio')",
"methods": 102,
"unique": 82,
"unique_ratio": 0.804,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('src', 'flask', 'json')",
"methods": 49,
"unique": 39,
"unique_ratio": 0.796,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('examples', 'tutorial', 'tests')",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'type_check')",
"methods": 23,
"unique": 9,
"unique_ratio": 0.391,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('examples', 'tutorial', 'flaskr')",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('celery', 'src', 'task_app')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('examples', 'javascript', 'tests')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 0.0,
"elapsed_seconds": 0.01
}

View file

@ -0,0 +1,442 @@
{
"strategy": "Option B: First 1 symbols",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"groups": [
{
"context": "('return',)",
"methods": 393,
"unique": 88,
"unique_ratio": 0.224,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('if',)",
"methods": 116,
"unique": 109,
"unique_ratio": 0.94,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@',)",
"methods": 110,
"unique": 102,
"unique_ratio": 0.927,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 60,
"unique": 27,
"unique_ratio": 0.45,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append',)",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('class',)",
"methods": 47,
"unique": 45,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint',)",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def',)",
"methods": 38,
"unique": 36,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get',)",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('isinstance',)",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort',)",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault',)",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop',)",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('try',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn',)",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('super',)",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield',)",
"methods": 9,
"unique": 5,
"unique_ratio": 0.556,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('raises',)",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('name_',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('login',)",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('app_context',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once',)",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(',)",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('not',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('await',)",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mkdir',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ef',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask(',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('import',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('join',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('is',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('write_text',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ain_m',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getLogger',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rom',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('nvoke(',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('t',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask.u',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 1.4,
"elapsed_seconds": 0.08
}

View file

@ -0,0 +1,786 @@
{
"strategy": "Option B: First 2 symbols",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'is')",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def')",
"methods": 30,
"unique": 28,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get')",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault')",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for', 'in')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'return')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('app_context', 'app_context')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'raise')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('join', 'join')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'and')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('try', 'import')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('return', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('def', 'wrapper')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('getLogger', 'getLogger')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'in')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 7.3,
"elapsed_seconds": 0.08
}

View file

@ -0,0 +1,698 @@
{
"strategy": "Option B: First 3 symbols",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('return', 'render_template', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 33,
"unique": 1,
"unique_ratio": 0.03,
"sore": "(append)+",
"sore_success": true
},
{
"context": "('return', 'isinstance', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', '@')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append', 'return')",
"methods": 17,
"unique": 1,
"unique_ratio": 0.059,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('if', 'is', 'return')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not', 'is')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get', 'get', 'if')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'is not')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 9,
"unique": 1,
"unique_ratio": 0.111,
"sore": "(pop)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault', 'append')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request', 'def')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', 'def')",
"methods": 9,
"unique": 7,
"unique_ratio": 0.778,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'str', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('eturn', 'lask(', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('Blueprint', 'Blueprint', 'Blueprint')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'get', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'isinstance', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('class', 'def', 'get')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once', 'lambda')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def', '__init__')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'get', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'raise')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', '_method_route', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('cho(', 'cho(')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "(cho()+",
"sore_success": true
},
{
"context": "('return', 'dict', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'def', 'dispatch_request')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('get', 'get', 'return')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'tag', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Flask', 'Flask', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test_client', 'test_client', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@', 'errorhandler')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('Flask', 'Flask', 'from_mapping')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('login', 'login', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'wrapper', 'if')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dumps', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir', 'syspath_prepend')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(', 'dd_url_rule(')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.', 's(clic')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv', 'setenv')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'raises')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update', '@')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'test_client')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug', 'routing')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages', 'list')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m', 'p.route(\"/\"')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 10.7,
"elapsed_seconds": 0.11
}

View file

@ -0,0 +1,456 @@
{
"strategy": "Reduce k=1 \u03b5=0.05",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"groups": [
{
"context": "('return',)",
"methods": 393,
"unique": 88,
"unique_ratio": 0.224,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('if',)",
"methods": 116,
"unique": 109,
"unique_ratio": 0.94,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@',)",
"methods": 110,
"unique": 102,
"unique_ratio": 0.927,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 60,
"unique": 27,
"unique_ratio": 0.45,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append',)",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('class',)",
"methods": 47,
"unique": 45,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint',)",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def',)",
"methods": 38,
"unique": 36,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get',)",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('isinstance',)",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort',)",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault',)",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop',)",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('try',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn',)",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('super',)",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield',)",
"methods": 9,
"unique": 5,
"unique_ratio": 0.556,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('raises',)",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('name_',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('login',)",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('app_context',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once',)",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(',)",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('not',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('await',)",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mkdir',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ef',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask(',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('import',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('join',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('is',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('write_text',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ain_m',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getLogger',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rom',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('nvoke(',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('t',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask.u',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 1.4,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 228,
"contexts_after": 228
}
}

View file

@ -0,0 +1,456 @@
{
"strategy": "Reduce k=1 \u03b5=0.1",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"groups": [
{
"context": "('return',)",
"methods": 393,
"unique": 88,
"unique_ratio": 0.224,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('if',)",
"methods": 116,
"unique": 109,
"unique_ratio": 0.94,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@',)",
"methods": 110,
"unique": 102,
"unique_ratio": 0.927,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 60,
"unique": 27,
"unique_ratio": 0.45,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append',)",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('class',)",
"methods": 47,
"unique": 45,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint',)",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def',)",
"methods": 38,
"unique": 36,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get',)",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('isinstance',)",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort',)",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault',)",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop',)",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('try',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn',)",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('super',)",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield',)",
"methods": 9,
"unique": 5,
"unique_ratio": 0.556,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('raises',)",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('name_',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('login',)",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('app_context',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once',)",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(',)",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('not',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('await',)",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mkdir',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ef',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask(',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('import',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('join',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('is',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('write_text',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ain_m',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getLogger',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rom',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('nvoke(',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('t',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask.u',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 1.4,
"elapsed_seconds": 0.03,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 228,
"contexts_after": 228
}
}

View file

@ -0,0 +1,456 @@
{
"strategy": "Reduce k=1 \u03b5=0.15",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"groups": [
{
"context": "('return',)",
"methods": 393,
"unique": 88,
"unique_ratio": 0.224,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('if',)",
"methods": 116,
"unique": 109,
"unique_ratio": 0.94,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@',)",
"methods": 110,
"unique": 102,
"unique_ratio": 0.927,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 60,
"unique": 27,
"unique_ratio": 0.45,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append',)",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('class',)",
"methods": 47,
"unique": 45,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint',)",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def',)",
"methods": 38,
"unique": 36,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get',)",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('isinstance',)",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort',)",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault',)",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop',)",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('try',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn',)",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('super',)",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield',)",
"methods": 9,
"unique": 5,
"unique_ratio": 0.556,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('raises',)",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('name_',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('login',)",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('app_context',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once',)",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(',)",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('not',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('await',)",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mkdir',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ef',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask(',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('import',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('join',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('is',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('write_text',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ain_m',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getLogger',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rom',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('nvoke(',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('t',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask.u',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 1.4,
"elapsed_seconds": 0.06,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 228,
"contexts_after": 228
}
}

View file

@ -0,0 +1,456 @@
{
"strategy": "Reduce k=1 \u03b5=0.2",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"groups": [
{
"context": "('return',)",
"methods": 393,
"unique": 88,
"unique_ratio": 0.224,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('if',)",
"methods": 116,
"unique": 109,
"unique_ratio": 0.94,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@',)",
"methods": 110,
"unique": 102,
"unique_ratio": 0.927,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 60,
"unique": 27,
"unique_ratio": 0.45,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append',)",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('class',)",
"methods": 47,
"unique": 45,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint',)",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def',)",
"methods": 38,
"unique": 36,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get',)",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('isinstance',)",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort',)",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault',)",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop',)",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('try',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn',)",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('super',)",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield',)",
"methods": 9,
"unique": 5,
"unique_ratio": 0.556,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('raises',)",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('name_',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('login',)",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('app_context',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once',)",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(',)",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('not',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('await',)",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mkdir',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ef',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask(',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('import',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('join',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('is',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('write_text',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ain_m',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getLogger',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rom',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('nvoke(',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('t',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask.u',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 1.4,
"elapsed_seconds": 0.07,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 228,
"contexts_after": 228
}
}

View file

@ -0,0 +1,456 @@
{
"strategy": "Reduce k=1 \u03b5=0.3",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"groups": [
{
"context": "('return',)",
"methods": 393,
"unique": 88,
"unique_ratio": 0.224,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('if',)",
"methods": 116,
"unique": 109,
"unique_ratio": 0.94,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@',)",
"methods": 110,
"unique": 102,
"unique_ratio": 0.927,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 60,
"unique": 27,
"unique_ratio": 0.45,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append',)",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('class',)",
"methods": 47,
"unique": 45,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint',)",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def',)",
"methods": 38,
"unique": 36,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get',)",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('isinstance',)",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort',)",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault',)",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop',)",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('try',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn',)",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('super',)",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield',)",
"methods": 9,
"unique": 5,
"unique_ratio": 0.556,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('raises',)",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('name_',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('login',)",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('app_context',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once',)",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(',)",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('not',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('await',)",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mkdir',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ef',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask(',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('import',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('join',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('is',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('write_text',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ain_m',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getLogger',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rom',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('nvoke(',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('t',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask.u',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 1.4,
"elapsed_seconds": 0.06,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.3,
"merge_log": []
},
"threshold": 0.3,
"contexts_before": 228,
"contexts_after": 228
}
}

View file

@ -0,0 +1,456 @@
{
"strategy": "Reduce k=1 \u03b5=0.4",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"groups": [
{
"context": "('return',)",
"methods": 393,
"unique": 88,
"unique_ratio": 0.224,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('if',)",
"methods": 116,
"unique": 109,
"unique_ratio": 0.94,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@',)",
"methods": 110,
"unique": 102,
"unique_ratio": 0.927,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 60,
"unique": 27,
"unique_ratio": 0.45,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append',)",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('class',)",
"methods": 47,
"unique": 45,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint',)",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def',)",
"methods": 38,
"unique": 36,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get',)",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('isinstance',)",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort',)",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault',)",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop',)",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('try',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from',)",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn',)",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('super',)",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield',)",
"methods": 9,
"unique": 5,
"unique_ratio": 0.556,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('raises',)",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('name_',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('login',)",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('app_context',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once',)",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(',)",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('not',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('await',)",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mkdir',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ef',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask(',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages',)",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('import',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('join',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('is',)",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('write_text',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ain_m',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getLogger',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setattr',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rom',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('nvoke(',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('t',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('lask.u',)",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 1.4,
"elapsed_seconds": 0.04,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.4,
"merge_log": []
},
"threshold": 0.4,
"contexts_before": 228,
"contexts_after": 228
}
}

View file

@ -0,0 +1,800 @@
{
"strategy": "Reduce k=2 \u03b5=0.05",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'is')",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def')",
"methods": 30,
"unique": 28,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get')",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault')",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for', 'in')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'return')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('app_context', 'app_context')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'raise')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('join', 'join')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'and')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('try', 'import')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('return', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('def', 'wrapper')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('getLogger', 'getLogger')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'in')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 7.3,
"elapsed_seconds": 0.07,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 430,
"contexts_after": 430
}
}

View file

@ -0,0 +1,800 @@
{
"strategy": "Reduce k=2 \u03b5=0.1",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'is')",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def')",
"methods": 30,
"unique": 28,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get')",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault')",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for', 'in')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'return')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('app_context', 'app_context')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'raise')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('join', 'join')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'and')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('try', 'import')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('return', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('def', 'wrapper')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('getLogger', 'getLogger')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'in')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 430,
"contexts_after": 430
}
}

View file

@ -0,0 +1,800 @@
{
"strategy": "Reduce k=2 \u03b5=0.15",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'is')",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def')",
"methods": 30,
"unique": 28,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get')",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault')",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for', 'in')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'return')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('app_context', 'app_context')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'raise')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('join', 'join')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'and')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('try', 'import')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('return', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('def', 'wrapper')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('getLogger', 'getLogger')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'in')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 430,
"contexts_after": 430
}
}

View file

@ -0,0 +1,800 @@
{
"strategy": "Reduce k=2 \u03b5=0.2",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'is')",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def')",
"methods": 30,
"unique": 28,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get')",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault')",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for', 'in')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'return')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('app_context', 'app_context')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'raise')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('join', 'join')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'and')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('try', 'import')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('return', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('def', 'wrapper')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('getLogger', 'getLogger')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'in')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 7.3,
"elapsed_seconds": 0.12,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 430,
"contexts_after": 430
}
}

View file

@ -0,0 +1,816 @@
{
"strategy": "Reduce k=2 \u03b5=0.3",
"total_contexts": 430,
"meaningful_contexts": 97,
"total_methods": 1393,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 51,
"large_alphabet": 2
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'is')",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def')",
"methods": 30,
"unique": 28,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get')",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault')",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for', 'in')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'return')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('app_context', 'app_context')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'raise')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('join', 'join')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'and')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('try', 'import')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('return', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'boolean')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('def', 'wrapper')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('getLogger', 'getLogger')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'in')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 21904,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.3,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean')",
"removed": "('def', 'is_boolean')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.3,
"contexts_before": 430,
"contexts_after": 430
}
}

View file

@ -0,0 +1,816 @@
{
"strategy": "Reduce k=2 \u03b5=0.4",
"total_contexts": 430,
"meaningful_contexts": 97,
"total_methods": 1393,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 51,
"large_alphabet": 2
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 51,
"unique": 3,
"unique_ratio": 0.059,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'is')",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def')",
"methods": 30,
"unique": 28,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get')",
"methods": 25,
"unique": 24,
"unique_ratio": 0.96,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault')",
"methods": 14,
"unique": 6,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('for', 'in')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'return')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('app_context', 'app_context')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'raise')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('join', 'join')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'and')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('try', 'import')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('return', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'boolean')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('def', 'wrapper')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('getLogger', 'getLogger')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'in')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 21904,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.4,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean')",
"removed": "('def', 'is_boolean')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.4,
"contexts_before": 430,
"contexts_after": 430
}
}

View file

@ -0,0 +1,712 @@
{
"strategy": "Reduce k=3 \u03b5=0.05",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('return', 'render_template', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 33,
"unique": 1,
"unique_ratio": 0.03,
"sore": "(append)+",
"sore_success": true
},
{
"context": "('return', 'isinstance', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', '@')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append', 'return')",
"methods": 17,
"unique": 1,
"unique_ratio": 0.059,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('if', 'is', 'return')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not', 'is')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get', 'get', 'if')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'is not')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 9,
"unique": 1,
"unique_ratio": 0.111,
"sore": "(pop)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault', 'append')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request', 'def')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', 'def')",
"methods": 9,
"unique": 7,
"unique_ratio": 0.778,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'str', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('eturn', 'lask(', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('Blueprint', 'Blueprint', 'Blueprint')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'get', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'isinstance', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('class', 'def', 'get')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once', 'lambda')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def', '__init__')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'get', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'raise')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', '_method_route', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('cho(', 'cho(')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "(cho()+",
"sore_success": true
},
{
"context": "('return', 'dict', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'def', 'dispatch_request')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('get', 'get', 'return')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'tag', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Flask', 'Flask', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test_client', 'test_client', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@', 'errorhandler')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('Flask', 'Flask', 'from_mapping')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('login', 'login', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'wrapper', 'if')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dumps', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir', 'syspath_prepend')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(', 'dd_url_rule(')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.', 's(clic')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv', 'setenv')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'raises')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update', '@')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'test_client')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug', 'routing')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages', 'list')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m', 'p.route(\"/\"')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 10.7,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 598,
"contexts_after": 598
}
}

View file

@ -0,0 +1,712 @@
{
"strategy": "Reduce k=3 \u03b5=0.1",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('return', 'render_template', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 33,
"unique": 1,
"unique_ratio": 0.03,
"sore": "(append)+",
"sore_success": true
},
{
"context": "('return', 'isinstance', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', '@')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append', 'return')",
"methods": 17,
"unique": 1,
"unique_ratio": 0.059,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('if', 'is', 'return')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not', 'is')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get', 'get', 'if')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'is not')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 9,
"unique": 1,
"unique_ratio": 0.111,
"sore": "(pop)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault', 'append')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request', 'def')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', 'def')",
"methods": 9,
"unique": 7,
"unique_ratio": 0.778,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'str', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('eturn', 'lask(', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('Blueprint', 'Blueprint', 'Blueprint')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'get', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'isinstance', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('class', 'def', 'get')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once', 'lambda')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def', '__init__')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'get', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'raise')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', '_method_route', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('cho(', 'cho(')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "(cho()+",
"sore_success": true
},
{
"context": "('return', 'dict', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'def', 'dispatch_request')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('get', 'get', 'return')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'tag', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Flask', 'Flask', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test_client', 'test_client', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@', 'errorhandler')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('Flask', 'Flask', 'from_mapping')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('login', 'login', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'wrapper', 'if')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dumps', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir', 'syspath_prepend')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(', 'dd_url_rule(')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.', 's(clic')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv', 'setenv')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'raises')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update', '@')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'test_client')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug', 'routing')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages', 'list')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m', 'p.route(\"/\"')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 10.7,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 598,
"contexts_after": 598
}
}

View file

@ -0,0 +1,712 @@
{
"strategy": "Reduce k=3 \u03b5=0.15",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('return', 'render_template', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 33,
"unique": 1,
"unique_ratio": 0.03,
"sore": "(append)+",
"sore_success": true
},
{
"context": "('return', 'isinstance', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', '@')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append', 'return')",
"methods": 17,
"unique": 1,
"unique_ratio": 0.059,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('if', 'is', 'return')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not', 'is')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get', 'get', 'if')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'is not')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 9,
"unique": 1,
"unique_ratio": 0.111,
"sore": "(pop)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault', 'append')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request', 'def')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', 'def')",
"methods": 9,
"unique": 7,
"unique_ratio": 0.778,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'str', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('eturn', 'lask(', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('Blueprint', 'Blueprint', 'Blueprint')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'get', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'isinstance', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('class', 'def', 'get')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once', 'lambda')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def', '__init__')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'get', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'raise')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', '_method_route', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('cho(', 'cho(')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "(cho()+",
"sore_success": true
},
{
"context": "('return', 'dict', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'def', 'dispatch_request')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('get', 'get', 'return')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'tag', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Flask', 'Flask', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test_client', 'test_client', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@', 'errorhandler')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('Flask', 'Flask', 'from_mapping')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('login', 'login', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'wrapper', 'if')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dumps', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir', 'syspath_prepend')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(', 'dd_url_rule(')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.', 's(clic')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv', 'setenv')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'raises')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update', '@')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'test_client')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug', 'routing')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages', 'list')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m', 'p.route(\"/\"')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 10.7,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 598,
"contexts_after": 598
}
}

View file

@ -0,0 +1,712 @@
{
"strategy": "Reduce k=3 \u03b5=0.2",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('return', 'render_template', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 33,
"unique": 1,
"unique_ratio": 0.03,
"sore": "(append)+",
"sore_success": true
},
{
"context": "('return', 'isinstance', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', '@')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append', 'return')",
"methods": 17,
"unique": 1,
"unique_ratio": 0.059,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('if', 'is', 'return')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not', 'is')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get', 'get', 'if')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'is not')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 9,
"unique": 1,
"unique_ratio": 0.111,
"sore": "(pop)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault', 'append')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request', 'def')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', 'def')",
"methods": 9,
"unique": 7,
"unique_ratio": 0.778,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'str', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('eturn', 'lask(', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('Blueprint', 'Blueprint', 'Blueprint')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'get', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'isinstance', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('class', 'def', 'get')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once', 'lambda')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def', '__init__')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'get', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'raise')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', '_method_route', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('cho(', 'cho(')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "(cho()+",
"sore_success": true
},
{
"context": "('return', 'dict', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'def', 'dispatch_request')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('get', 'get', 'return')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'tag', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Flask', 'Flask', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test_client', 'test_client', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@', 'errorhandler')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('Flask', 'Flask', 'from_mapping')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('login', 'login', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'wrapper', 'if')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dumps', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir', 'syspath_prepend')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(', 'dd_url_rule(')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.', 's(clic')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv', 'setenv')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'raises')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update', '@')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'test_client')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug', 'routing')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages', 'list')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m', 'p.route(\"/\"')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 10.7,
"elapsed_seconds": 0.11,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 598,
"contexts_after": 598
}
}

View file

@ -0,0 +1,728 @@
{
"strategy": "Reduce k=3 \u03b5=0.3",
"total_contexts": 598,
"meaningful_contexts": 86,
"total_methods": 1393,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 39,
"large_alphabet": 1
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('return', 'render_template', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 33,
"unique": 1,
"unique_ratio": 0.03,
"sore": "(append)+",
"sore_success": true
},
{
"context": "('return', 'isinstance', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', '@')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append', 'return')",
"methods": 17,
"unique": 1,
"unique_ratio": 0.059,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('if', 'is', 'return')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not', 'is')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get', 'get', 'if')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'is not')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 9,
"unique": 1,
"unique_ratio": 0.111,
"sore": "(pop)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault', 'append')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request', 'def')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', 'def')",
"methods": 9,
"unique": 7,
"unique_ratio": 0.778,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'str', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('eturn', 'lask(', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('Blueprint', 'Blueprint', 'Blueprint')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'get', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'isinstance', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('class', 'def', 'get')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once', 'lambda')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def', '__init__')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'get', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'raise')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', '_method_route', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('cho(', 'cho(')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "(cho()+",
"sore_success": true
},
{
"context": "('return', 'dict', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'def', 'dispatch_request')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('get', 'get', 'return')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'tag', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Flask', 'Flask', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test_client', 'test_client', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@', 'errorhandler')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'boolean', 'return')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('Flask', 'Flask', 'from_mapping')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('login', 'login', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'wrapper', 'if')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dumps', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir', 'syspath_prepend')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(', 'dd_url_rule(')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.', 's(clic')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv', 'setenv')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'raises')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update', '@')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'test_client')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug', 'routing')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages', 'list')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m', 'p.route(\"/\"')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 10.7,
"elapsed_seconds": 0.11,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 22500,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.3,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean', 'return')",
"removed": "('def', 'is_boolean', 'return')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.3,
"contexts_before": 598,
"contexts_after": 598
}
}

View file

@ -0,0 +1,728 @@
{
"strategy": "Reduce k=3 \u03b5=0.4",
"total_contexts": 598,
"meaningful_contexts": 86,
"total_methods": 1393,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 39,
"large_alphabet": 1
},
"groups": [
{
"context": "('return',)",
"methods": 203,
"unique": 1,
"unique_ratio": 0.005,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('@', 'route', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('return', 'render_template', 'render_template')",
"methods": 33,
"unique": 2,
"unique_ratio": 0.061,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append')",
"methods": 33,
"unique": 1,
"unique_ratio": 0.03,
"sore": "(append)+",
"sore_success": true
},
{
"context": "('return', 'isinstance', 'isinstance')",
"methods": 32,
"unique": 2,
"unique_ratio": 0.062,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', '@')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise',)",
"methods": 19,
"unique": 1,
"unique_ratio": 0.053,
"sore": "raise",
"sore_success": true
},
{
"context": "('isinstance', 'isinstance', 'isinstance')",
"methods": 17,
"unique": 6,
"unique_ratio": 0.353,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('append', 'append', 'return')",
"methods": 17,
"unique": 1,
"unique_ratio": 0.059,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('if', 'is', 'return')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('super', 'super', 'super')",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is not', 'is')",
"methods": 10,
"unique": 9,
"unique_ratio": 0.9,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'jsonify', 'jsonify')",
"methods": 10,
"unique": 4,
"unique_ratio": 0.4,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get', 'get', 'if')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'is not')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('pop', 'pop')",
"methods": 9,
"unique": 1,
"unique_ratio": 0.111,
"sore": "(pop)+",
"sore_success": true
},
{
"context": "('setdefault', 'setdefault', 'append')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_request', 'def')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Blueprint', 'Blueprint', 'def')",
"methods": 9,
"unique": 7,
"unique_ratio": 0.778,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('return', 'str', 'str')",
"methods": 8,
"unique": 3,
"unique_ratio": 0.375,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('eturn', 'lask(', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('Blueprint', 'Blueprint', 'Blueprint')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'get', 'get')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('if', 'isinstance', 'isinstance')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'url_for', 'url_for')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('class', 'def', 'get')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'callable', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('record_once', 'record_once', 'lambda')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('class', 'def', '__init__')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'get', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'is', 'raise')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', '_method_route', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('await', 'sleep', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'teardown_appcontext', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'ValueError', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('cho(', 'cho(')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "(cho()+",
"sore_success": true
},
{
"context": "('return', 'dict', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('@', 'errorhandler', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', 'def', 'dispatch_request')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('@', 'before_request', 'def')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'NotImplementedError', 'NotImplementedError')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('get', 'get', 'return')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'tag', 'tag')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('Flask', 'Flask', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test_client', 'test_client', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('class', '@', 'errorhandler')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'render_template_string', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('@', 'template_filter', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'template_test', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'boolean', 'return')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'Forbidden', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('return', 'Response', 'Response')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(Response)+",
"sore_success": true
},
{
"context": "('Flask', 'Flask', 'from_mapping')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('if', 'not in', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'test_client', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('yield',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('login', 'login', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('def', 'wrapper', 'if')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('return', 'join', 'join')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('return', 'dumps', 'dumps')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getattr', 'getattr', 'getattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('or',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('is', 'is not', 'not')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('raise', 'Exception', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('mkdir', 'mkdir', 'syspath_prepend')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('lask(', 'lask(', 'dd_url_rule(')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('em(sys.', 'em(sys.', 's(clic')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('setenv', 'setenv', 'setenv')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'raises')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('yield', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('@', 'stream_with_context', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('update', 'update', '@')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('Flask', 'Flask', 'test_client')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'get', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('@', 'context_processor', 'def')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('def', 'my_reverse', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'blueprintapp', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('from', 'werkzeug', 'routing')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('raise', 'InternalServerError', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('def', 'index', 'return')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('get_flashed_messages', 'get_flashed_messages', 'list')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('ndpoin',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
},
{
"context": "('ain_m', 'ain_m', 'p.route(\"/\"')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 10.7,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 22500,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.4,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean', 'return')",
"removed": "('def', 'is_boolean', 'return')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.4,
"contexts_before": 598,
"contexts_after": 598
}
}

View file

@ -0,0 +1,40 @@
{
"strategy": "Option H: Return type heuristic",
"total_contexts": 3,
"meaningful_contexts": 3,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 2
},
"groups": [
{
"context": "('RETURN_VALUE',)",
"methods": 1013,
"unique": 767,
"unique_ratio": 0.757,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('RETURN_OTHER',)",
"methods": 374,
"unique": 128,
"unique_ratio": 0.342,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('SIDE_EFFECT',)",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
}
],
"coverage": 0.0,
"elapsed_seconds": 0.0
}

View file

@ -0,0 +1,764 @@
[
{
"strategy": "Baseline: Package grouping",
"total_contexts": 15,
"meaningful_contexts": 9,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 4
},
"coverage": 0.0,
"elapsed_seconds": 0.02
},
{
"strategy": "Option A: File path k=1",
"total_contexts": 13,
"meaningful_contexts": 7,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 2
},
"coverage": 0.0,
"elapsed_seconds": 0.01
},
{
"strategy": "Option A: File path k=2",
"total_contexts": 15,
"meaningful_contexts": 9,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 4
},
"coverage": 0.0,
"elapsed_seconds": 0.02
},
{
"strategy": "Option A: File path k=3",
"total_contexts": 15,
"meaningful_contexts": 9,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 1,
"too_diverse": 4
},
"coverage": 0.0,
"elapsed_seconds": 0.01
},
{
"strategy": "Option B: First 1 symbols",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"coverage": 1.4,
"elapsed_seconds": 0.08
},
{
"strategy": "Option B: First 2 symbols",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"coverage": 7.3,
"elapsed_seconds": 0.08
},
{
"strategy": "Option B: First 3 symbols",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"coverage": 10.7,
"elapsed_seconds": 0.11
},
{
"strategy": "Option C: Path k=1 + Symbol k=1",
"total_contexts": 288,
"meaningful_contexts": 68,
"total_methods": 1391,
"methods_in_good_groups": 30,
"sore_successes": 5,
"sore_failures": 19,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 5,
"too_diverse": 36
},
"coverage": 2.2,
"elapsed_seconds": 0.07
},
{
"strategy": "Option C: Path k=1 + Symbol k=2",
"total_contexts": 512,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 141,
"sore_successes": 22,
"sore_failures": 22,
"skip_reasons": {
"too_large": 2,
"too_diverse": 48,
"large_alphabet": 2
},
"coverage": 10.1,
"elapsed_seconds": 0.07
},
{
"strategy": "Option C: Path k=2 + Symbol k=1",
"total_contexts": 297,
"meaningful_contexts": 69,
"total_methods": 1391,
"methods_in_good_groups": 30,
"sore_successes": 5,
"sore_failures": 19,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 5,
"too_diverse": 37
},
"coverage": 2.2,
"elapsed_seconds": 0.08
},
{
"strategy": "Option C: Path k=2 + Symbol k=2",
"total_contexts": 520,
"meaningful_contexts": 93,
"total_methods": 1391,
"methods_in_good_groups": 132,
"sore_successes": 19,
"sore_failures": 22,
"skip_reasons": {
"too_large": 2,
"too_diverse": 48,
"large_alphabet": 2
},
"coverage": 9.5,
"elapsed_seconds": 0.04
},
{
"strategy": "Option H: Return type heuristic",
"total_contexts": 3,
"meaningful_contexts": 3,
"total_methods": 1391,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 1,
"skip_reasons": {
"too_large": 2
},
"coverage": 0.0,
"elapsed_seconds": 0.0
},
{
"strategy": "Reduce k=1 \u03b5=0.05",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"coverage": 1.4,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 228,
"contexts_after": 228
}
},
{
"strategy": "Reduce k=1 \u03b5=0.1",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"coverage": 1.4,
"elapsed_seconds": 0.03,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 228,
"contexts_after": 228
}
},
{
"strategy": "Reduce k=1 \u03b5=0.15",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"coverage": 1.4,
"elapsed_seconds": 0.06,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 228,
"contexts_after": 228
}
},
{
"strategy": "Reduce k=1 \u03b5=0.2",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"coverage": 1.4,
"elapsed_seconds": 0.07,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 228,
"contexts_after": 228
}
},
{
"strategy": "Reduce k=1 \u03b5=0.3",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"coverage": 1.4,
"elapsed_seconds": 0.06,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.3,
"merge_log": []
},
"threshold": 0.3,
"contexts_before": 228,
"contexts_after": 228
}
},
{
"strategy": "Reduce k=1 \u03b5=0.4",
"total_contexts": 228,
"meaningful_contexts": 53,
"total_methods": 1391,
"methods_in_good_groups": 19,
"sore_successes": 2,
"sore_failures": 14,
"skip_reasons": {
"too_large": 5,
"too_diverse": 29,
"large_alphabet": 3
},
"coverage": 1.4,
"elapsed_seconds": 0.04,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 4095,
"contexts_before": 228,
"contexts_after": 228,
"threshold": 0.4,
"merge_log": []
},
"threshold": 0.4,
"contexts_before": 228,
"contexts_after": 228
}
},
{
"strategy": "Reduce k=2 \u03b5=0.05",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"coverage": 7.3,
"elapsed_seconds": 0.07,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 430,
"contexts_after": 430
}
},
{
"strategy": "Reduce k=2 \u03b5=0.1",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 430,
"contexts_after": 430
}
},
{
"strategy": "Reduce k=2 \u03b5=0.15",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 430,
"contexts_after": 430
}
},
{
"strategy": "Reduce k=2 \u03b5=0.2",
"total_contexts": 430,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 50,
"large_alphabet": 2
},
"coverage": 7.3,
"elapsed_seconds": 0.12,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11026,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 430,
"contexts_after": 430
}
},
{
"strategy": "Reduce k=2 \u03b5=0.3",
"total_contexts": 430,
"meaningful_contexts": 97,
"total_methods": 1393,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 51,
"large_alphabet": 2
},
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 21904,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.3,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean')",
"removed": "('def', 'is_boolean')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.3,
"contexts_before": 430,
"contexts_after": 430
}
},
{
"strategy": "Reduce k=2 \u03b5=0.4",
"total_contexts": 430,
"meaningful_contexts": 97,
"total_methods": 1393,
"methods_in_good_groups": 102,
"sore_successes": 18,
"sore_failures": 23,
"skip_reasons": {
"too_large": 3,
"too_diverse": 51,
"large_alphabet": 2
},
"coverage": 7.3,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 21904,
"contexts_before": 430,
"contexts_after": 430,
"threshold": 0.4,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean')",
"removed": "('def', 'is_boolean')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.4,
"contexts_before": 430,
"contexts_after": 430
}
},
{
"strategy": "Reduce k=3 \u03b5=0.05",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"coverage": 10.7,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 598,
"contexts_after": 598
}
},
{
"strategy": "Reduce k=3 \u03b5=0.1",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"coverage": 10.7,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 598,
"contexts_after": 598
}
},
{
"strategy": "Reduce k=3 \u03b5=0.15",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"coverage": 10.7,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 598,
"contexts_after": 598
}
},
{
"strategy": "Reduce k=3 \u03b5=0.2",
"total_contexts": 598,
"meaningful_contexts": 85,
"total_methods": 1391,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 38,
"large_alphabet": 1
},
"coverage": 10.7,
"elapsed_seconds": 0.11,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 11325,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 598,
"contexts_after": 598
}
},
{
"strategy": "Reduce k=3 \u03b5=0.3",
"total_contexts": 598,
"meaningful_contexts": 86,
"total_methods": 1393,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 39,
"large_alphabet": 1
},
"coverage": 10.7,
"elapsed_seconds": 0.11,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 22500,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.3,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean', 'return')",
"removed": "('def', 'is_boolean', 'return')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.3,
"contexts_before": 598,
"contexts_after": 598
}
},
{
"strategy": "Reduce k=3 \u03b5=0.4",
"total_contexts": 598,
"meaningful_contexts": 86,
"total_methods": 1393,
"methods_in_good_groups": 149,
"sore_successes": 21,
"sore_failures": 23,
"skip_reasons": {
"too_large": 2,
"too_diverse": 39,
"large_alphabet": 1
},
"coverage": 10.7,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 22500,
"contexts_before": 598,
"contexts_after": 598,
"threshold": 0.4,
"merge_log": [
{
"iteration": 1,
"merged_into": "('def', 'boolean', 'return')",
"removed": "('def', 'is_boolean', 'return')",
"distance": 0.2424,
"new_size": 4
}
]
},
"threshold": 0.4,
"contexts_before": 598,
"contexts_after": 598
}
}
]

View file

@ -0,0 +1,562 @@
{
"strategy": "Option C: Path k=1 + Symbol k=1",
"total_contexts": 288,
"meaningful_contexts": 68,
"total_methods": 1391,
"methods_in_good_groups": 30,
"sore_successes": 5,
"sore_failures": 19,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 5,
"too_diverse": 36
},
"groups": [
{
"context": "('tests', 'return')",
"methods": 287,
"unique": 36,
"unique_ratio": 0.125,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', '@')",
"methods": 108,
"unique": 100,
"unique_ratio": 0.926,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('flask', 'if')",
"methods": 68,
"unique": 63,
"unique_ratio": 0.926,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', 'raise')",
"methods": 47,
"unique": 24,
"unique_ratio": 0.511,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'class')",
"methods": 45,
"unique": 43,
"unique_ratio": 0.956,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'append')",
"methods": 45,
"unique": 3,
"unique_ratio": 0.067,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'return')",
"methods": 32,
"unique": 25,
"unique_ratio": 0.781,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('sansio', 'if')",
"methods": 28,
"unique": 27,
"unique_ratio": 0.964,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('json', 'return')",
"methods": 26,
"unique": 20,
"unique_ratio": 0.769,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'def')",
"methods": 23,
"unique": 21,
"unique_ratio": 0.913,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'Flask')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('type_check', 'return')",
"methods": 21,
"unique": 7,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('sansio', 'return')",
"methods": 16,
"unique": 11,
"unique_ratio": 0.688,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('tests', 'isinstance')",
"methods": 16,
"unique": 5,
"unique_ratio": 0.312,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'try')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'get')",
"methods": 11,
"unique": 10,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sansio', 'def')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'eturn')",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'get')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setdefault')",
"methods": 9,
"unique": 3,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'from')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'pop')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('json', 'if')",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'yield')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'super')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'for')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sansio', 'append')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('sansio', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'if')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flaskr', 'if')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'app_context')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'raise')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('json', 'raise')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise",
"sore_success": true
},
{
"context": "('tests', 'await')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'ef')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'not')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'import')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flaskr', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'join')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'def')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'from')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sansio', 'raise')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "raise.((NotImplementedError)+)?",
"sore_success": true
},
{
"context": "('sansio', 'or')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('sansio', 'setdefault')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'is')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'rom')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 't')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'lask.u')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'ndpoin')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 2.2,
"elapsed_seconds": 0.07
}

View file

@ -0,0 +1,786 @@
{
"strategy": "Option C: Path k=1 + Symbol k=2",
"total_contexts": 512,
"meaningful_contexts": 96,
"total_methods": 1391,
"methods_in_good_groups": 141,
"sore_successes": 22,
"sore_failures": 22,
"skip_reasons": {
"too_large": 2,
"too_diverse": 48,
"large_alphabet": 2
},
"groups": [
{
"context": "('tests', 'return')",
"methods": 177,
"unique": 1,
"unique_ratio": 0.006,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', '@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', 'append', 'append')",
"methods": 45,
"unique": 3,
"unique_ratio": 0.067,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'class', 'def')",
"methods": 28,
"unique": 26,
"unique_ratio": 0.929,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'render_template')",
"methods": 25,
"unique": 2,
"unique_ratio": 0.08,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'return', 'isinstance')",
"methods": 24,
"unique": 1,
"unique_ratio": 0.042,
"sore": "return.(isinstance)+",
"sore_success": true
},
{
"context": "('flask', 'if', 'is')",
"methods": 22,
"unique": 20,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'Flask', 'Flask')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('tests', 'isinstance', 'isinstance')",
"methods": 16,
"unique": 5,
"unique_ratio": 0.312,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('type_check', 'return')",
"methods": 13,
"unique": 1,
"unique_ratio": 0.077,
"sore": "return",
"sore_success": true
},
{
"context": "('tests', 'raise')",
"methods": 12,
"unique": 1,
"unique_ratio": 0.083,
"sore": "raise",
"sore_success": true
},
{
"context": "('tests', 'get', 'get')",
"methods": 11,
"unique": 10,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'get', 'get')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sansio', 'if', 'is')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'jsonify')",
"methods": 9,
"unique": 4,
"unique_ratio": 0.444,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', '@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setdefault', 'setdefault')",
"methods": 9,
"unique": 3,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'pop', 'pop')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('tests', 'name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'return')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return",
"sore_success": true
},
{
"context": "('flask', 'super', 'super')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'if', 'is not')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('json', 'return', 'isinstance')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'return', 'str')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'for', 'in')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'if', 'return')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', '_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sansio', 'if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sansio', 'append', 'append')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('sansio', 'record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'return', 'url_for')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('tests', 'app_context', 'app_context')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('json', 'raise')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise",
"sore_success": true
},
{
"context": "('sansio', 'return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('tests', 'await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('tests', 'mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('tests', '@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', '@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'return', 'get')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('sansio', 'def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('tests', '@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('tests', 'ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'post', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flaskr', 'get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'test_client')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(test_client)+",
"sore_success": true
},
{
"context": "('tests', 'return', 'get')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "return.(get)+",
"sore_success": true
},
{
"context": "('tests', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "yield",
"sore_success": true
},
{
"context": "('flask', 'try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('flask', 'join', 'join')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'if', 'isinstance')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'try', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'raise', 'NotImplementedError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('json', 'if', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('json', 'return', 'tag')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('sansio', 'or')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('sansio', 'if', 'is not')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sansio', 'setdefault', 'setdefault')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('tests', 'setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('tests', '@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('tests', 'def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'ndpoin')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 10.1,
"elapsed_seconds": 0.07
}

View file

@ -0,0 +1,570 @@
{
"strategy": "Option C: Path k=2 + Symbol k=1",
"total_contexts": 297,
"meaningful_contexts": 69,
"total_methods": 1391,
"methods_in_good_groups": 30,
"sore_successes": 5,
"sore_failures": 19,
"skip_reasons": {
"too_large": 3,
"large_alphabet": 5,
"too_diverse": 37
},
"groups": [
{
"context": "('tests', 'return')",
"methods": 281,
"unique": 33,
"unique_ratio": 0.117,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', '@')",
"methods": 108,
"unique": 100,
"unique_ratio": 0.926,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('src', 'flask', 'if')",
"methods": 68,
"unique": 63,
"unique_ratio": 0.926,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', 'raise')",
"methods": 47,
"unique": 24,
"unique_ratio": 0.511,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'append')",
"methods": 45,
"unique": 3,
"unique_ratio": 0.067,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'class')",
"methods": 44,
"unique": 42,
"unique_ratio": 0.955,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'return')",
"methods": 32,
"unique": 25,
"unique_ratio": 0.781,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'if')",
"methods": 28,
"unique": 27,
"unique_ratio": 0.964,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'json', 'return')",
"methods": 26,
"unique": 20,
"unique_ratio": 0.769,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'def')",
"methods": 22,
"unique": 20,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'Flask')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'type_check', 'return')",
"methods": 21,
"unique": 7,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'return')",
"methods": 16,
"unique": 11,
"unique_ratio": 0.688,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('tests', 'isinstance')",
"methods": 16,
"unique": 5,
"unique_ratio": 0.312,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('src', 'flask', 'try')",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'def')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'eturn')",
"methods": 11,
"unique": 4,
"unique_ratio": 0.364,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('src', 'flask', 'get')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setdefault')",
"methods": 9,
"unique": 3,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'from')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'pop')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'json', 'if')",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tutorial', 'tests', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'super')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'get')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'for')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'append')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'yield')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'if')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tutorial', 'flaskr', 'if')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tutorial', 'tests', 'return')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'raise')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'json', 'raise')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise",
"sore_success": true
},
{
"context": "('tests', 'await')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'ef')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tutorial', 'tests', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'import')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tests', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tutorial', 'flaskr', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'join')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'def')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'from')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'raise')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "raise.((NotImplementedError)+)?",
"sore_success": true
},
{
"context": "('flask', 'sansio', 'or')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('flask', 'sansio', 'setdefault')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'app_context')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'is')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'rom')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'not')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 't')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'lask.u')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'ndpoin')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 2.2,
"elapsed_seconds": 0.08
}

View file

@ -0,0 +1,762 @@
{
"strategy": "Option C: Path k=2 + Symbol k=2",
"total_contexts": 520,
"meaningful_contexts": 93,
"total_methods": 1391,
"methods_in_good_groups": 132,
"sore_successes": 19,
"sore_failures": 22,
"skip_reasons": {
"too_large": 2,
"too_diverse": 48,
"large_alphabet": 2
},
"groups": [
{
"context": "('tests', 'return')",
"methods": 177,
"unique": 1,
"unique_ratio": 0.006,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', '@', 'route')",
"methods": 58,
"unique": 53,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('tests', 'append', 'append')",
"methods": 45,
"unique": 3,
"unique_ratio": 0.067,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'Blueprint', 'Blueprint')",
"methods": 40,
"unique": 37,
"unique_ratio": 0.925,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'class', 'def')",
"methods": 27,
"unique": 25,
"unique_ratio": 0.926,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'render_template')",
"methods": 25,
"unique": 2,
"unique_ratio": 0.08,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'return', 'isinstance')",
"methods": 24,
"unique": 1,
"unique_ratio": 0.042,
"sore": "return.(isinstance)+",
"sore_success": true
},
{
"context": "('src', 'flask', 'if', 'is')",
"methods": 22,
"unique": 20,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'Flask', 'Flask')",
"methods": 21,
"unique": 21,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'abort', 'abort')",
"methods": 16,
"unique": 1,
"unique_ratio": 0.062,
"sore": "(abort)+",
"sore_success": true
},
{
"context": "('tests', 'isinstance', 'isinstance')",
"methods": 16,
"unique": 5,
"unique_ratio": 0.312,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('src', 'flask', 'if', 'not')",
"methods": 13,
"unique": 12,
"unique_ratio": 0.923,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'type_check', 'return')",
"methods": 13,
"unique": 1,
"unique_ratio": 0.077,
"sore": "return",
"sore_success": true
},
{
"context": "('tests', 'raise')",
"methods": 12,
"unique": 1,
"unique_ratio": 0.083,
"sore": "raise",
"sore_success": true
},
{
"context": "('tests', 'class', 'class')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'get', 'get')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'if', 'is')",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'jsonify')",
"methods": 9,
"unique": 4,
"unique_ratio": 0.444,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', '@', 'teardown_request')",
"methods": 9,
"unique": 8,
"unique_ratio": 0.889,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setdefault', 'setdefault')",
"methods": 9,
"unique": 3,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'pop', 'pop')",
"methods": 9,
"unique": 2,
"unique_ratio": 0.222,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'raises', 'raises')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'eturn', 'lask(')",
"methods": 8,
"unique": 1,
"unique_ratio": 0.125,
"sore": "eturn.(lask()+",
"sore_success": true
},
{
"context": "('tests', 'name_', 'name_')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('tutorial', 'tests', 'login', 'login')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'return')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "return",
"sore_success": true
},
{
"context": "('src', 'flask', 'super', 'super')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'if', 'is not')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'json', 'return', 'isinstance')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'get', 'get')",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'str')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('src', 'flask', 'for', 'in')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'if', 'return')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', '_get_current_object', '_get_current_object')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'if', 'callable')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'append', 'append')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'record_once', 'record_once')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'cho(', 'cho(')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'return', 'url_for')",
"methods": 6,
"unique": 1,
"unique_ratio": 0.167,
"sore": "return.(url_for)+",
"sore_success": true
},
{
"context": "('src', 'flask', 'if', 'get')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'json', 'raise')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise",
"sore_success": true
},
{
"context": "('flask', 'sansio', 'return', '_method_route')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(_method_route)+",
"sore_success": true
},
{
"context": "('tests', 'await', 'sleep')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'test_client', 'test_client')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'teardown_appcontext')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raise', 'ValueError')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "raise.(ValueError)+",
"sore_success": true
},
{
"context": "('tests', 'mkdir', 'mkdir')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'lask(', 'lask(')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'return', 'dict')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "return.(dict)+",
"sore_success": true
},
{
"context": "('tests', '@', 'errorhandler')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'get_flashed_messages', 'get_flashed_messages')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', '@', 'before_request')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tutorial', 'tests', 'get', 'get')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'return', 'get')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'def', 'decorator')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'write_text', 'write_text')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'em(sys.', 'em(sys.')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'setenv', 'setenv')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'class', '@')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'return', 'render_template_string')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "return.(render_template_string)+",
"sore_success": true
},
{
"context": "('tests', '@', 'template_filter')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'template_test')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raise', 'Forbidden')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "raise.(Forbidden)+",
"sore_success": true
},
{
"context": "('tests', 'ain_m', 'ain_m')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tutorial', 'flaskr', 'get_db', 'get_db')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'try', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'import', 'warnings')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('src', 'flask', 'join', 'join')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'if', 'isinstance')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'try', 'import')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'flask', 'raise', 'NotImplementedError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(NotImplementedError)+",
"sore_success": true
},
{
"context": "('flask', 'json', 'if', 'return')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'json', 'return', 'tag')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'or')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "or",
"sore_success": true
},
{
"context": "('flask', 'sansio', 'if', 'is not')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('flask', 'sansio', 'setdefault', 'setdefault')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'app_context', 'app_context')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raise', 'Exception')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(Exception)+",
"sore_success": true
},
{
"context": "('tests', 'setattr', 'setattr')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'ef', 'reate_app(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'nvoke(', 'nvoke(')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'yield', 'yield')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "(yield)+",
"sore_success": true
},
{
"context": "('tests', '@', 'stream_with_context')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'update', 'update')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'get')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', '@', 'context_processor')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'def', 'my_reverse')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'from', 'blueprintapp')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'from', 'werkzeug')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tests', 'raise', 'InternalServerError')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "raise.(InternalServerError)+",
"sore_success": true
},
{
"context": "('tests', 'def', 'index')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('tests', 'ndpoin')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "ndpoin",
"sore_success": true
}
],
"coverage": 9.5,
"elapsed_seconds": 0.04
}

View file

@ -0,0 +1,946 @@
{
"strategy": "Baseline: Package grouping",
"total_contexts": 137,
"meaningful_contexts": 116,
"total_methods": 1594,
"methods_in_good_groups": 9,
"sore_successes": 2,
"sore_failures": 10,
"skip_reasons": {
"too_large": 5,
"too_diverse": 89,
"large_alphabet": 10
},
"groups": [
{
"context": "app/src/test/kotlin/eu/corentic/springrag/architecture",
"methods": 87,
"unique": 70,
"unique_ratio": 0.805,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller",
"methods": 83,
"unique": 74,
"unique_ratio": 0.892,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/service/job",
"methods": 61,
"unique": 55,
"unique_ratio": 0.902,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/controller",
"methods": 56,
"unique": 53,
"unique_ratio": 0.946,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "agents/rag/embabel/src/main/kotlin/eu/corentic/springrag/agent/rag/embabel",
"methods": 52,
"unique": 52,
"unique_ratio": 1.0,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/service/job",
"methods": 49,
"unique": 48,
"unique_ratio": 0.98,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "app/src/systemTest/kotlin/eu/corentic/springrag/system",
"methods": 46,
"unique": 38,
"unique_ratio": 0.826,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller/librechat",
"methods": 46,
"unique": 40,
"unique_ratio": 0.87,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/port/adapter",
"methods": 45,
"unique": 44,
"unique_ratio": 0.978,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/storage",
"methods": 40,
"unique": 27,
"unique_ratio": 0.675,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "agents/rag/embabel/src/test/kotlin/eu/corentic/springrag/agent/rag/embabel",
"methods": 35,
"unique": 25,
"unique_ratio": 0.714,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/listener",
"methods": 34,
"unique": 31,
"unique_ratio": 0.912,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/integrationTest/kotlin/eu/corentic/springrag/service/job",
"methods": 33,
"unique": 30,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/graph",
"methods": 30,
"unique": 25,
"unique_ratio": 0.833,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/controller/librechat",
"methods": 29,
"unique": 29,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/port/adapter",
"methods": 28,
"unique": 27,
"unique_ratio": 0.964,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/config",
"methods": 26,
"unique": 23,
"unique_ratio": 0.885,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/repository",
"methods": 24,
"unique": 21,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/systemTest/kotlin/eu/corentic/springrag/repository/graph",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/doc-parser/src/main/kotlin/eu/corentic/springrag/service/docling",
"methods": 21,
"unique": 18,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/repository",
"methods": 19,
"unique": 18,
"unique_ratio": 0.947,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/common/src/main/kotlin/eu/corentic/springrag/common/ids",
"methods": 18,
"unique": 12,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "app/src/e2eTest/kotlin/eu/corentic/springrag/e2e/cucumber/steps",
"methods": 17,
"unique": 13,
"unique_ratio": 0.765,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/service/chunk",
"methods": 17,
"unique": 17,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch",
"methods": 17,
"unique": 17,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/listener",
"methods": 16,
"unique": 13,
"unique_ratio": 0.812,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "modules/knowledgebase/src/test/kotlin/eu/corentic/springrag/service/knowledgebase",
"methods": 16,
"unique": 16,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "app/src/integrationTest/kotlin/eu/corentic/springrag/config",
"methods": 15,
"unique": 5,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "modules/chat/src/systemTest/kotlin/eu/corentic/springrag/config",
"methods": 15,
"unique": 14,
"unique_ratio": 0.933,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch",
"methods": 15,
"unique": 15,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/security/src/test/kotlin/eu/corentic/springrag/security/service",
"methods": 15,
"unique": 12,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "agents/examples/simple-rag/src/test/kotlin/eu/corentic/springrag/example/rag/simple",
"methods": 14,
"unique": 14,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/summarizer/embabel/src/test/kotlin/eu/corentic/springrag/agent/summarizer/embabel",
"methods": 14,
"unique": 14,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "app/src/systemTest/kotlin/eu/corentic/springrag/config",
"methods": 14,
"unique": 14,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/writer",
"methods": 14,
"unique": 14,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/rag/embabel/src/main/kotlin/eu/corentic/springrag/agent/rag/embabel/librechat",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "platform/test-support/src/main/kotlin/eu/corentic/springrag/testcontainers",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/rag/support/src/main/kotlin/eu/corentic/springrag/agent/rag/support",
"methods": 12,
"unique": 11,
"unique_ratio": 0.917,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/summarizer/embabel/src/main/kotlin/eu/corentic/springrag/agent/summarizer/embabel",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/tooling/embabel/src/main/kotlin/eu/corentic/springrag/agent/tooling/embabel",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/config",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/graph",
"methods": 12,
"unique": 12,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/reader",
"methods": 12,
"unique": 11,
"unique_ratio": 0.917,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/rag/support/src/test/kotlin/eu/corentic/springrag/agent/rag/support",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/tooling/embabel/src/main/kotlin/eu/corentic/springrag/agent/tooling/embabel/recording",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/knowledgebase/src/main/kotlin/eu/corentic/springrag/service/knowledgebase",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller/web",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/service/docling",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/security/src/main/kotlin/eu/corentic/springrag/security/service",
"methods": 10,
"unique": 10,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/examples/simple-rag/src/main/kotlin/eu/corentic/springrag/example/rag/simple",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/model/graph",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/wikipedia/adapters/src/test/kotlin/eu/corentic/springrag/agent/wikipedia",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "buildSrc/src/main/kotlin",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/chat/src/test/kotlin/eu/corentic/springrag/service/chat",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/common/src/test/kotlin/eu/corentic/springrag/common/ids",
"methods": 8,
"unique": 4,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/model",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/service/chunk",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/model/graph",
"methods": 7,
"unique": 6,
"unique_ratio": 0.857,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/partition",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/capability/support/src/test/kotlin/eu/corentic/springrag/agent/capability/support",
"methods": 6,
"unique": 5,
"unique_ratio": 0.833,
"sore": "\u2205",
"sore_success": false
},
{
"context": "agents/tooling/embabel/src/test/kotlin/eu/corentic/springrag/agent/tooling/embabel",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/controller/web",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/config",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "infrastructure/adapters/doc-parser/src/systemTest/kotlin/eu/corentic/springrag/config",
"methods": 6,
"unique": 5,
"unique_ratio": 0.833,
"sore": "\u2205",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/health",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/systemTest/kotlin/eu/corentic/springrag/system",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/health",
"methods": 6,
"unique": 5,
"unique_ratio": 0.833,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "modules/chat/src/main/kotlin/eu/corentic/springrag/service/chat",
"methods": 6,
"unique": 5,
"unique_ratio": 0.833,
"sore": "\u2205",
"sore_success": false
},
{
"context": "modules/common/src/main/kotlin/eu/corentic/springrag/common",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/security/src/test/kotlin/eu/corentic/springrag/security/config",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/capability/ports/src/main/kotlin/eu/corentic/springrag/agent/capability",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "(listCapabilities.firstOrNull|(AgentExecutionContext|return AgentCapabilityDescriptor(\n id = id,\n capabilityType = capabilityType,\n displayName = describedCapability?.displayName ",
"sore_success": true
},
{
"context": "agents/capability/support/src/main/kotlin/eu/corentic/springrag/agent/capability/support",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "app/src/integrationTest/kotlin/eu/corentic/springrag/controller",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "buildSrc/src/test/kotlin",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/controller/auth",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/service/embedding",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/chat-memory/src/test/kotlin/eu/corentic/springrag/config",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/test/kotlin/eu/corentic/springrag/batch/processor",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/knowledgebase/ports/src/main/kotlin/eu/corentic/springrag/model",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/security/src/main/kotlin/eu/corentic/springrag/security/config",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "platform/test-support/src/test/kotlin/eu/corentic/springrag/testcontainers",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/rag/ports/src/main/kotlin/eu/corentic/springrag/agent/rag",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/tooling/agent/src/main/kotlin/eu/corentic/springrag/agent/tooling/agent",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "entrypoints/web/src/test/kotlin/eu/corentic/springrag/config",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "infrastructure/adapters/ai-provider/src/main/kotlin/eu/corentic/springrag/config",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/health",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/cleanup",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "info.(deleteByJobId|deleteByKnowledgeBaseId)",
"sore_success": true
},
{
"context": "infrastructure/adapters/search/src/systemTest/kotlin/eu/corentic/springrag/config",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/cleanup",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/chat/src/integrationTest/kotlin/eu/corentic/springrag/service/chat",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/chat/src/systemTest/kotlin/eu/corentic/springrag/system",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/model",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/reader",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/partition",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/rag/embabel/src/test/kotlin/eu/corentic/springrag/testsupport",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/rag/ports/src/test/kotlin/eu/corentic/springrag/model",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/rag/ports/src/test/kotlin/eu/corentic/springrag/agent/rag",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/wikipedia/adapters/src/main/kotlin/eu/corentic/springrag/agent/wikipedia",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/wikipedia/static/src/main/kotlin/eu/corentic/springrag/agent/wikipedia",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "agents/wikipedia/static/src/test/kotlin/eu/corentic/springrag/agent/wikipedia",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "app/src/integrationTest/kotlin/eu/corentic/springrag/service",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "app/src/test/kotlin/eu/corentic/springrag/config",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "entrypoints/agent-mcp-server/src/test/kotlin/eu/corentic/springrag/mcp",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "entrypoints/agent-mcp-server/src/main/kotlin/eu/corentic/springrag/mcp",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "entrypoints/web/src/main/kotlin/eu/corentic/springrag/config",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/ai-provider/src/main/kotlin/eu/corentic/springrag/health",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/ai-provider/src/test/kotlin/eu/corentic/springrag/testsupport",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/doc-parser/src/main/kotlin/eu/corentic/springrag/config",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/health",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/doc-parser/src/test/kotlin/eu/corentic/springrag/testsupport",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/main/kotlin/eu/corentic/springrag/service/agent",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/config",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/service/storage",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "infrastructure/adapters/search/src/test/kotlin/eu/corentic/springrag/testsupport",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/batch/writer",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "modules/ingestion/src/main/kotlin/eu/corentic/springrag/service/document",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 0.6,
"elapsed_seconds": 0.07
}

View file

@ -0,0 +1,362 @@
{
"strategy": "Option A: File path k=1",
"total_contexts": 47,
"meaningful_contexts": 43,
"total_methods": 1594,
"methods_in_good_groups": 17,
"sore_successes": 2,
"sore_failures": 1,
"skip_reasons": {
"too_large": 9,
"too_diverse": 28,
"large_alphabet": 3
},
"groups": [
{
"context": "('controller',)",
"methods": 144,
"unique": 132,
"unique_ratio": 0.917,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('job',)",
"methods": 143,
"unique": 133,
"unique_ratio": 0.93,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('config',)",
"methods": 140,
"unique": 97,
"unique_ratio": 0.693,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('embabel',)",
"methods": 131,
"unique": 119,
"unique_ratio": 0.908,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('librechat',)",
"methods": 89,
"unique": 83,
"unique_ratio": 0.933,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('architecture',)",
"methods": 87,
"unique": 70,
"unique_ratio": 0.805,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('graph',)",
"methods": 81,
"unique": 74,
"unique_ratio": 0.914,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('adapter',)",
"methods": 76,
"unique": 74,
"unique_ratio": 0.974,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('system',)",
"methods": 58,
"unique": 50,
"unique_ratio": 0.862,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('listener',)",
"methods": 50,
"unique": 44,
"unique_ratio": 0.88,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('repository',)",
"methods": 43,
"unique": 39,
"unique_ratio": 0.907,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('storage',)",
"methods": 43,
"unique": 29,
"unique_ratio": 0.674,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('support',)",
"methods": 34,
"unique": 32,
"unique_ratio": 0.941,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch',)",
"methods": 32,
"unique": 32,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('docling',)",
"methods": 31,
"unique": 28,
"unique_ratio": 0.903,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service',)",
"methods": 28,
"unique": 25,
"unique_ratio": 0.893,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('knowledgebase',)",
"methods": 27,
"unique": 27,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ids',)",
"methods": 26,
"unique": 16,
"unique_ratio": 0.615,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('chunk',)",
"methods": 25,
"unique": 25,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('health',)",
"methods": 24,
"unique": 22,
"unique_ratio": 0.917,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('simple',)",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('model',)",
"methods": 23,
"unique": 21,
"unique_ratio": 0.913,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('wikipedia',)",
"methods": 18,
"unique": 17,
"unique_ratio": 0.944,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 18,
"unique": 17,
"unique_ratio": 0.944,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('testcontainers',)",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('steps',)",
"methods": 17,
"unique": 13,
"unique_ratio": 0.765,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('writer',)",
"methods": 17,
"unique": 17,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('web',)",
"methods": 16,
"unique": 16,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('reader',)",
"methods": 16,
"unique": 15,
"unique_ratio": 0.938,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('kotlin',)",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('testsupport',)",
"methods": 12,
"unique": 3,
"unique_ratio": 0.25,
"sore": "(get|(Builder|Any))",
"sore_success": true
},
{
"context": "('recording',)",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('partition',)",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent',)",
"methods": 9,
"unique": 9,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('cleanup',)",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('rag',)",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('auth',)",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('mcp',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('common',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('processor',)",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('capability',)",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "(listCapabilities.firstOrNull|(AgentExecutionContext|return AgentCapabilityDescriptor(\n id = id,\n capabilityType = capabilityType,\n displayName = describedCapability?.displayName ",
"sore_success": true
},
{
"context": "('embedding',)",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('document',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 1.1,
"elapsed_seconds": 0.0
}

View file

@ -0,0 +1,450 @@
{
"strategy": "Option A: File path k=2",
"total_contexts": 59,
"meaningful_contexts": 54,
"total_methods": 1594,
"methods_in_good_groups": 17,
"sore_successes": 2,
"sore_failures": 1,
"skip_reasons": {
"too_large": 8,
"too_diverse": 39,
"large_alphabet": 4
},
"groups": [
{
"context": "('springrag', 'controller')",
"methods": 144,
"unique": 132,
"unique_ratio": 0.917,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('service', 'job')",
"methods": 143,
"unique": 133,
"unique_ratio": 0.93,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('springrag', 'config')",
"methods": 128,
"unique": 85,
"unique_ratio": 0.664,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('rag', 'embabel')",
"methods": 87,
"unique": 77,
"unique_ratio": 0.885,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('springrag', 'architecture')",
"methods": 87,
"unique": 70,
"unique_ratio": 0.805,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('port', 'adapter')",
"methods": 76,
"unique": 74,
"unique_ratio": 0.974,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('controller', 'librechat')",
"methods": 75,
"unique": 69,
"unique_ratio": 0.92,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('springrag', 'system')",
"methods": 58,
"unique": 50,
"unique_ratio": 0.862,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('batch', 'listener')",
"methods": 50,
"unique": 44,
"unique_ratio": 0.88,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'repository')",
"methods": 43,
"unique": 39,
"unique_ratio": 0.907,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'storage')",
"methods": 43,
"unique": 29,
"unique_ratio": 0.674,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('service', 'graph')",
"methods": 42,
"unique": 37,
"unique_ratio": 0.881,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'batch')",
"methods": 32,
"unique": 32,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'docling')",
"methods": 31,
"unique": 28,
"unique_ratio": 0.903,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'knowledgebase')",
"methods": 27,
"unique": 27,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('summarizer', 'embabel')",
"methods": 26,
"unique": 26,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('common', 'ids')",
"methods": 26,
"unique": 16,
"unique_ratio": 0.615,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('service', 'chunk')",
"methods": 25,
"unique": 25,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('security', 'service')",
"methods": 25,
"unique": 22,
"unique_ratio": 0.88,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'health')",
"methods": 24,
"unique": 22,
"unique_ratio": 0.917,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rag', 'simple')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rag', 'support')",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('repository', 'graph')",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'wikipedia')",
"methods": 18,
"unique": 17,
"unique_ratio": 0.944,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tooling', 'embabel')",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'chat')",
"methods": 18,
"unique": 17,
"unique_ratio": 0.944,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'testcontainers')",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('cucumber', 'steps')",
"methods": 17,
"unique": 13,
"unique_ratio": 0.765,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('batch', 'writer')",
"methods": 17,
"unique": 17,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'web')",
"methods": 16,
"unique": 16,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('model', 'graph')",
"methods": 16,
"unique": 15,
"unique_ratio": 0.938,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'reader')",
"methods": 16,
"unique": 15,
"unique_ratio": 0.938,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('embabel', 'librechat')",
"methods": 14,
"unique": 14,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'testsupport')",
"methods": 12,
"unique": 3,
"unique_ratio": 0.25,
"sore": "(get|(Builder|Any))",
"sore_success": true
},
{
"context": "('batch', 'model')",
"methods": 12,
"unique": 10,
"unique_ratio": 0.833,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('capability', 'support')",
"methods": 11,
"unique": 10,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'model')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('embabel', 'recording')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'partition')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('security', 'config')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('main', 'kotlin')",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'cleanup')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('agent', 'rag')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'auth')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tooling', 'agent')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'mcp')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'common')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'processor')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'capability')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "(listCapabilities.firstOrNull|(AgentExecutionContext|return AgentCapabilityDescriptor(\n id = id,\n capabilityType = capabilityType,\n displayName = describedCapability?.displayName ",
"sore_success": true
},
{
"context": "('test', 'kotlin')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'embedding')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'agent')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'document')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 1.1,
"elapsed_seconds": 0.01
}

View file

@ -0,0 +1,450 @@
{
"strategy": "Option A: File path k=3",
"total_contexts": 59,
"meaningful_contexts": 54,
"total_methods": 1594,
"methods_in_good_groups": 17,
"sore_successes": 2,
"sore_failures": 1,
"skip_reasons": {
"too_large": 8,
"too_diverse": 39,
"large_alphabet": 4
},
"groups": [
{
"context": "('corentic', 'springrag', 'controller')",
"methods": 144,
"unique": 132,
"unique_ratio": 0.917,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'job')",
"methods": 143,
"unique": 133,
"unique_ratio": 0.93,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'config')",
"methods": 128,
"unique": 85,
"unique_ratio": 0.664,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('agent', 'rag', 'embabel')",
"methods": 87,
"unique": 77,
"unique_ratio": 0.885,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'architecture')",
"methods": 87,
"unique": 70,
"unique_ratio": 0.805,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('service', 'port', 'adapter')",
"methods": 76,
"unique": 74,
"unique_ratio": 0.974,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'librechat')",
"methods": 75,
"unique": 69,
"unique_ratio": 0.92,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'system')",
"methods": 58,
"unique": 50,
"unique_ratio": 0.862,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('springrag', 'batch', 'listener')",
"methods": 50,
"unique": 44,
"unique_ratio": 0.88,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'repository')",
"methods": 43,
"unique": 39,
"unique_ratio": 0.907,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'storage')",
"methods": 43,
"unique": 29,
"unique_ratio": 0.674,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'graph')",
"methods": 42,
"unique": 37,
"unique_ratio": 0.881,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'batch')",
"methods": 32,
"unique": 32,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'docling')",
"methods": 31,
"unique": 28,
"unique_ratio": 0.903,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'knowledgebase')",
"methods": 27,
"unique": 27,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'summarizer', 'embabel')",
"methods": 26,
"unique": 26,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'common', 'ids')",
"methods": 26,
"unique": 16,
"unique_ratio": 0.615,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'chunk')",
"methods": 25,
"unique": 25,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'security', 'service')",
"methods": 25,
"unique": 22,
"unique_ratio": 0.88,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'health')",
"methods": 24,
"unique": 22,
"unique_ratio": 0.917,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('example', 'rag', 'simple')",
"methods": 23,
"unique": 23,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'rag', 'support')",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'repository', 'graph')",
"methods": 23,
"unique": 22,
"unique_ratio": 0.957,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'agent', 'wikipedia')",
"methods": 18,
"unique": 17,
"unique_ratio": 0.944,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'tooling', 'embabel')",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'chat')",
"methods": 18,
"unique": 17,
"unique_ratio": 0.944,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'testcontainers')",
"methods": 18,
"unique": 18,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('e2e', 'cucumber', 'steps')",
"methods": 17,
"unique": 13,
"unique_ratio": 0.765,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('springrag', 'batch', 'writer')",
"methods": 17,
"unique": 17,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'web')",
"methods": 16,
"unique": 16,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'model', 'graph')",
"methods": 16,
"unique": 15,
"unique_ratio": 0.938,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'batch', 'reader')",
"methods": 16,
"unique": 15,
"unique_ratio": 0.938,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rag', 'embabel', 'librechat')",
"methods": 14,
"unique": 14,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'testsupport')",
"methods": 12,
"unique": 3,
"unique_ratio": 0.25,
"sore": "(get|(Builder|Any))",
"sore_success": true
},
{
"context": "('springrag', 'batch', 'model')",
"methods": 12,
"unique": 10,
"unique_ratio": 0.833,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('agent', 'capability', 'support')",
"methods": 11,
"unique": 10,
"unique_ratio": 0.909,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'model')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('tooling', 'embabel', 'recording')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'batch', 'partition')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'security', 'config')",
"methods": 11,
"unique": 11,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('src', 'main', 'kotlin')",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'cleanup')",
"methods": 8,
"unique": 6,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('springrag', 'agent', 'rag')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'auth')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'tooling', 'agent')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'mcp')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'common')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'batch', 'processor')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'agent', 'capability')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "(listCapabilities.firstOrNull|(AgentExecutionContext|return AgentCapabilityDescriptor(\n id = id,\n capabilityType = capabilityType,\n displayName = describedCapability?.displayName ",
"sore_success": true
},
{
"context": "('src', 'test', 'kotlin')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'embedding')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('corentic', 'springrag', 'service')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'agent')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'service', 'document')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 1.1,
"elapsed_seconds": 0.01
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,953 @@
{
"strategy": "Option B: First 3 symbols",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"groups": [
{
"context": "('VectorChunk', 'mapOf', 'mapOf')",
"methods": 13,
"unique": 11,
"unique_ratio": 0.846,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')",
"methods": 12,
"unique": 4,
"unique_ratio": 0.333,
"sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))",
"sore_success": true
},
{
"context": "('listOf', 'listOf', 'productionFiles')",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk',)",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('File', 'writeBytes', 'byteArrayOf')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'ChatResponse', 'emptyList')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'assertTrue', 'hasImport')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "filesIn.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('of',)",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('assertEquals', 'of', 'assertFailsWith')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('runTest', 'mockk', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'forEach')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('session', 'use', 'run')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'now', 'update')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('HybridChunkingConfig', 'service', 'GraphDocument')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'KnowledgeBase', 'asKnowledgeBaseId')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('very', 'istKnowledgeBases(', 'agRequest(')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk', 'mockk', 'mockk')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'VectorChunk')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('await', 'pollInterval', 'ofSeconds')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('productionClasses', 'filter', 'contains')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'filter', 'contains')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('runTest', 'mockFilePart', 'every')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'findPageRendering', 'of')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('coEvery', 'ingestMultipart', 'any')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DoclingConfig', 'assertThatThrownBy', 'validateCriticalSettings')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('trim', 'lowercase', 'warn')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('every', 'existsById', 'asKnowledgeBaseId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('upsertStaging', 'of', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentInput', 'asJobId', 'asDocumentId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('defaultCapabilityId',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "defaultCapabilityId",
"sore_success": true
},
{
"context": "('clearAllMocks',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "clearAllMocks",
"sore_success": true
},
{
"context": "('Builder',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('Any',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('get',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('mockkObject', 'slot', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'every', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ToolInvocationPolicyProperties', 'mapOf', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('registerProperties',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('assumeTrue', 'isDockerAvailable', 'start')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('queryForObject',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "queryForObject",
"sore_success": true
},
{
"context": "('filesIn', 'assertTrue', 'contains')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "filesIn.assertTrue.(contains)+",
"sore_success": true
},
{
"context": "('JobStatus', 'every', 'getJobStatus')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "JobStatus.every.getJobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('every', 'getJobStatus', 'get')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('runBlocking', 'controller', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('builder', 'inputType', 'truncate')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getMethod', 'invoke', 'return configureAndBuild(builder, config)')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "getMethod.invoke.return configureAndBuild(builder, config).configureAndBuild",
"sore_success": true
},
{
"context": "('leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('`when`', 'healthCheckAsync', 'thenReturn')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('asJobId', 'asFilename', 'emptyGraphDocument')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('resolveUploadStorageUri',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('IngestionDocumentState', 'asDocumentId', 'asJobId')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('mapOf', 'mapOf', 'requireNotNull')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('createTempFile', 'apply', 'writeText')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'fetchTracking', 'asJobId')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'existsByUsername', 'any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "every.existsByUsername.any.assertThrows.registerUser.assertEquals",
"sore_success": true
},
{
"context": "('AgentExecutionContext',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('runTest', 'TestRequest', 'every')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('map',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "map",
"sore_success": true
},
{
"context": "('run', 'Supplier', 'action')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ChatResponse', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sortedBy', 'map', 'toDescriptor')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "sortedBy.map.toDescriptor",
"sore_success": true
},
{
"context": "('isNullOrBlank', 'error', 'error')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "isNullOrBlank.(error)+",
"sore_success": true
},
{
"context": "('runTest', 'RagInvocation', 'RagRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'invoke', 'WikipediaLookupRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('mockk', 'also', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'uri', 'exchange')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('newClient', 'callTool', 'CallToolRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createKnowledgeBase', 'copyTestDocument', 'copyTestDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('MultipartBodyBuilder', 'part', 'readBytes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('assertNoMainProjectDependencies', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('scopeFromProject', 'filter', 'contains')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('productionFiles', 'filter', 'contains')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('productionClasses', 'filter', 'hasAnnotationWithName')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eFromProject()', 'ses()', 't { i')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('joinToString', 'warn', 'return ResponseEntity.status(HttpStatus.BAD_REQUEST)\\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('post', 'uri', 'exchange')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('every', 'knowledgeBaseExists', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('KnowledgeBaseResponse', 'now', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "KnowledgeBaseResponse.(now)+",
"sore_success": true
},
{
"context": "('runTest', 'ChatResponse', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('runTest', 'coEvery', 'chatWithMemory')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('JobStatus', 'now', 'minusMinutes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('runTest', 'mockk', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('every', 'getOrCreateAgentKnowledgeBase', 'slot')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'getJobStatus', 'JobStatus')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "every.getJobStatus.JobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('`when`', 'listModels', 'thenReturn')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('assertThrows', 'EmbabelAiHttpClientProperties', 'ofSeconds')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('ilder()', 'ery(\"', 'pK(5')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('info', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByJobId",
"sore_success": true
},
{
"context": "('info', 'deleteByKnowledgeBaseId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByKnowledgeBaseId",
"sore_success": true
},
{
"context": "('buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))', 'storeObject')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('resolveLocation', 'builder', 'bucket')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('replace', 'ifBlank', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('lowercase',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('loadObject',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "loadObject",
"sore_success": true
},
{
"context": "('parse', 'KnowledgeBaseNode', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'save', 'KnowledgeBaseNode')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'similaritySearch', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentGraphJob', 'asDocumentId', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('asJobId', 'every', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('runBlocking', 'adminClient', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('execute',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('every', 'process', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('policy', 'assertTrue', 'shouldRetry')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('state', 'every', 'recordFailure')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update', 'trimIndent', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "update.trimIndent.now.insertRow",
"sore_success": true
},
{
"context": "('input', 'beforeProcess', 'verify')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('processedDocument', 'every', 'enforce')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobParametersBuilder', 'addString', 'toJobParameters')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobExecution', 'JobParametersBuilder')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createJobExecution', 'every', 'findExecutionById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('StagedUploadCleanupService', 'StorageProperties', 'toString')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JwtService', 'JwtProperties', 'generateToken')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 12.0,
"elapsed_seconds": 0.1
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,967 @@
{
"strategy": "Reduce k=3 \u03b5=0.05",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"groups": [
{
"context": "('VectorChunk', 'mapOf', 'mapOf')",
"methods": 13,
"unique": 11,
"unique_ratio": 0.846,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')",
"methods": 12,
"unique": 4,
"unique_ratio": 0.333,
"sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))",
"sore_success": true
},
{
"context": "('listOf', 'listOf', 'productionFiles')",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk',)",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('File', 'writeBytes', 'byteArrayOf')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'ChatResponse', 'emptyList')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'assertTrue', 'hasImport')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "filesIn.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('of',)",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('assertEquals', 'of', 'assertFailsWith')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('runTest', 'mockk', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'forEach')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('session', 'use', 'run')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'now', 'update')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('HybridChunkingConfig', 'service', 'GraphDocument')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'KnowledgeBase', 'asKnowledgeBaseId')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('very', 'istKnowledgeBases(', 'agRequest(')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk', 'mockk', 'mockk')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'VectorChunk')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('await', 'pollInterval', 'ofSeconds')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('productionClasses', 'filter', 'contains')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'filter', 'contains')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('runTest', 'mockFilePart', 'every')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'findPageRendering', 'of')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('coEvery', 'ingestMultipart', 'any')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DoclingConfig', 'assertThatThrownBy', 'validateCriticalSettings')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('trim', 'lowercase', 'warn')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('every', 'existsById', 'asKnowledgeBaseId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('upsertStaging', 'of', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentInput', 'asJobId', 'asDocumentId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('defaultCapabilityId',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "defaultCapabilityId",
"sore_success": true
},
{
"context": "('clearAllMocks',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "clearAllMocks",
"sore_success": true
},
{
"context": "('Builder',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('Any',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('get',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('mockkObject', 'slot', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'every', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ToolInvocationPolicyProperties', 'mapOf', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('registerProperties',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('assumeTrue', 'isDockerAvailable', 'start')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('queryForObject',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "queryForObject",
"sore_success": true
},
{
"context": "('filesIn', 'assertTrue', 'contains')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "filesIn.assertTrue.(contains)+",
"sore_success": true
},
{
"context": "('JobStatus', 'every', 'getJobStatus')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "JobStatus.every.getJobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('every', 'getJobStatus', 'get')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('runBlocking', 'controller', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('builder', 'inputType', 'truncate')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getMethod', 'invoke', 'return configureAndBuild(builder, config)')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "getMethod.invoke.return configureAndBuild(builder, config).configureAndBuild",
"sore_success": true
},
{
"context": "('leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('`when`', 'healthCheckAsync', 'thenReturn')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('asJobId', 'asFilename', 'emptyGraphDocument')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('resolveUploadStorageUri',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('IngestionDocumentState', 'asDocumentId', 'asJobId')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('mapOf', 'mapOf', 'requireNotNull')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('createTempFile', 'apply', 'writeText')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'fetchTracking', 'asJobId')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'existsByUsername', 'any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "every.existsByUsername.any.assertThrows.registerUser.assertEquals",
"sore_success": true
},
{
"context": "('AgentExecutionContext',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('runTest', 'TestRequest', 'every')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('map',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "map",
"sore_success": true
},
{
"context": "('run', 'Supplier', 'action')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ChatResponse', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sortedBy', 'map', 'toDescriptor')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "sortedBy.map.toDescriptor",
"sore_success": true
},
{
"context": "('isNullOrBlank', 'error', 'error')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "isNullOrBlank.(error)+",
"sore_success": true
},
{
"context": "('runTest', 'RagInvocation', 'RagRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'invoke', 'WikipediaLookupRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('mockk', 'also', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'uri', 'exchange')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('newClient', 'callTool', 'CallToolRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createKnowledgeBase', 'copyTestDocument', 'copyTestDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('MultipartBodyBuilder', 'part', 'readBytes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('assertNoMainProjectDependencies', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('scopeFromProject', 'filter', 'contains')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('productionFiles', 'filter', 'contains')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('productionClasses', 'filter', 'hasAnnotationWithName')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eFromProject()', 'ses()', 't { i')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('joinToString', 'warn', 'return ResponseEntity.status(HttpStatus.BAD_REQUEST)\\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('post', 'uri', 'exchange')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('every', 'knowledgeBaseExists', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('KnowledgeBaseResponse', 'now', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "KnowledgeBaseResponse.(now)+",
"sore_success": true
},
{
"context": "('runTest', 'ChatResponse', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('runTest', 'coEvery', 'chatWithMemory')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('JobStatus', 'now', 'minusMinutes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('runTest', 'mockk', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('every', 'getOrCreateAgentKnowledgeBase', 'slot')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'getJobStatus', 'JobStatus')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "every.getJobStatus.JobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('`when`', 'listModels', 'thenReturn')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('assertThrows', 'EmbabelAiHttpClientProperties', 'ofSeconds')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('ilder()', 'ery(\"', 'pK(5')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('info', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByJobId",
"sore_success": true
},
{
"context": "('info', 'deleteByKnowledgeBaseId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByKnowledgeBaseId",
"sore_success": true
},
{
"context": "('buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))', 'storeObject')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('resolveLocation', 'builder', 'bucket')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('replace', 'ifBlank', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('lowercase',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('loadObject',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "loadObject",
"sore_success": true
},
{
"context": "('parse', 'KnowledgeBaseNode', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'save', 'KnowledgeBaseNode')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'similaritySearch', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentGraphJob', 'asDocumentId', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('asJobId', 'every', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('runBlocking', 'adminClient', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('execute',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('every', 'process', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('policy', 'assertTrue', 'shouldRetry')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('state', 'every', 'recordFailure')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update', 'trimIndent', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "update.trimIndent.now.insertRow",
"sore_success": true
},
{
"context": "('input', 'beforeProcess', 'verify')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('processedDocument', 'every', 'enforce')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobParametersBuilder', 'addString', 'toJobParameters')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobExecution', 'JobParametersBuilder')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createJobExecution', 'every', 'findExecutionById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('StagedUploadCleanupService', 'StorageProperties', 'toString')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JwtService', 'JwtProperties', 'generateToken')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 12.0,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 1112,
"contexts_after": 1112
}
}

View file

@ -0,0 +1,967 @@
{
"strategy": "Reduce k=3 \u03b5=0.1",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"groups": [
{
"context": "('VectorChunk', 'mapOf', 'mapOf')",
"methods": 13,
"unique": 11,
"unique_ratio": 0.846,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')",
"methods": 12,
"unique": 4,
"unique_ratio": 0.333,
"sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))",
"sore_success": true
},
{
"context": "('listOf', 'listOf', 'productionFiles')",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk',)",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('File', 'writeBytes', 'byteArrayOf')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'ChatResponse', 'emptyList')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'assertTrue', 'hasImport')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "filesIn.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('of',)",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('assertEquals', 'of', 'assertFailsWith')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('runTest', 'mockk', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'forEach')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('session', 'use', 'run')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'now', 'update')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('HybridChunkingConfig', 'service', 'GraphDocument')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'KnowledgeBase', 'asKnowledgeBaseId')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('very', 'istKnowledgeBases(', 'agRequest(')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk', 'mockk', 'mockk')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'VectorChunk')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('await', 'pollInterval', 'ofSeconds')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('productionClasses', 'filter', 'contains')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'filter', 'contains')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('runTest', 'mockFilePart', 'every')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'findPageRendering', 'of')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('coEvery', 'ingestMultipart', 'any')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DoclingConfig', 'assertThatThrownBy', 'validateCriticalSettings')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('trim', 'lowercase', 'warn')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('every', 'existsById', 'asKnowledgeBaseId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('upsertStaging', 'of', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentInput', 'asJobId', 'asDocumentId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('defaultCapabilityId',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "defaultCapabilityId",
"sore_success": true
},
{
"context": "('clearAllMocks',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "clearAllMocks",
"sore_success": true
},
{
"context": "('Builder',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('Any',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('get',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('mockkObject', 'slot', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'every', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ToolInvocationPolicyProperties', 'mapOf', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('registerProperties',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('assumeTrue', 'isDockerAvailable', 'start')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('queryForObject',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "queryForObject",
"sore_success": true
},
{
"context": "('filesIn', 'assertTrue', 'contains')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "filesIn.assertTrue.(contains)+",
"sore_success": true
},
{
"context": "('JobStatus', 'every', 'getJobStatus')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "JobStatus.every.getJobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('every', 'getJobStatus', 'get')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('runBlocking', 'controller', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('builder', 'inputType', 'truncate')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getMethod', 'invoke', 'return configureAndBuild(builder, config)')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "getMethod.invoke.return configureAndBuild(builder, config).configureAndBuild",
"sore_success": true
},
{
"context": "('leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('`when`', 'healthCheckAsync', 'thenReturn')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('asJobId', 'asFilename', 'emptyGraphDocument')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('resolveUploadStorageUri',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('IngestionDocumentState', 'asDocumentId', 'asJobId')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('mapOf', 'mapOf', 'requireNotNull')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('createTempFile', 'apply', 'writeText')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'fetchTracking', 'asJobId')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'existsByUsername', 'any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "every.existsByUsername.any.assertThrows.registerUser.assertEquals",
"sore_success": true
},
{
"context": "('AgentExecutionContext',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('runTest', 'TestRequest', 'every')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('map',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "map",
"sore_success": true
},
{
"context": "('run', 'Supplier', 'action')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ChatResponse', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sortedBy', 'map', 'toDescriptor')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "sortedBy.map.toDescriptor",
"sore_success": true
},
{
"context": "('isNullOrBlank', 'error', 'error')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "isNullOrBlank.(error)+",
"sore_success": true
},
{
"context": "('runTest', 'RagInvocation', 'RagRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'invoke', 'WikipediaLookupRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('mockk', 'also', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'uri', 'exchange')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('newClient', 'callTool', 'CallToolRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createKnowledgeBase', 'copyTestDocument', 'copyTestDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('MultipartBodyBuilder', 'part', 'readBytes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('assertNoMainProjectDependencies', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('scopeFromProject', 'filter', 'contains')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('productionFiles', 'filter', 'contains')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('productionClasses', 'filter', 'hasAnnotationWithName')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eFromProject()', 'ses()', 't { i')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('joinToString', 'warn', 'return ResponseEntity.status(HttpStatus.BAD_REQUEST)\\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('post', 'uri', 'exchange')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('every', 'knowledgeBaseExists', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('KnowledgeBaseResponse', 'now', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "KnowledgeBaseResponse.(now)+",
"sore_success": true
},
{
"context": "('runTest', 'ChatResponse', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('runTest', 'coEvery', 'chatWithMemory')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('JobStatus', 'now', 'minusMinutes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('runTest', 'mockk', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('every', 'getOrCreateAgentKnowledgeBase', 'slot')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'getJobStatus', 'JobStatus')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "every.getJobStatus.JobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('`when`', 'listModels', 'thenReturn')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('assertThrows', 'EmbabelAiHttpClientProperties', 'ofSeconds')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('ilder()', 'ery(\"', 'pK(5')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('info', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByJobId",
"sore_success": true
},
{
"context": "('info', 'deleteByKnowledgeBaseId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByKnowledgeBaseId",
"sore_success": true
},
{
"context": "('buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))', 'storeObject')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('resolveLocation', 'builder', 'bucket')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('replace', 'ifBlank', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('lowercase',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('loadObject',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "loadObject",
"sore_success": true
},
{
"context": "('parse', 'KnowledgeBaseNode', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'save', 'KnowledgeBaseNode')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'similaritySearch', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentGraphJob', 'asDocumentId', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('asJobId', 'every', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('runBlocking', 'adminClient', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('execute',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('every', 'process', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('policy', 'assertTrue', 'shouldRetry')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('state', 'every', 'recordFailure')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update', 'trimIndent', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "update.trimIndent.now.insertRow",
"sore_success": true
},
{
"context": "('input', 'beforeProcess', 'verify')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('processedDocument', 'every', 'enforce')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobParametersBuilder', 'addString', 'toJobParameters')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobExecution', 'JobParametersBuilder')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createJobExecution', 'every', 'findExecutionById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('StagedUploadCleanupService', 'StorageProperties', 'toString')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JwtService', 'JwtProperties', 'generateToken')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 12.0,
"elapsed_seconds": 0.12,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 1112,
"contexts_after": 1112
}
}

View file

@ -0,0 +1,967 @@
{
"strategy": "Reduce k=3 \u03b5=0.15",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"groups": [
{
"context": "('VectorChunk', 'mapOf', 'mapOf')",
"methods": 13,
"unique": 11,
"unique_ratio": 0.846,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')",
"methods": 12,
"unique": 4,
"unique_ratio": 0.333,
"sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))",
"sore_success": true
},
{
"context": "('listOf', 'listOf', 'productionFiles')",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk',)",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('File', 'writeBytes', 'byteArrayOf')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'ChatResponse', 'emptyList')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'assertTrue', 'hasImport')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "filesIn.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('of',)",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('assertEquals', 'of', 'assertFailsWith')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('runTest', 'mockk', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'forEach')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('session', 'use', 'run')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'now', 'update')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('HybridChunkingConfig', 'service', 'GraphDocument')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'KnowledgeBase', 'asKnowledgeBaseId')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('very', 'istKnowledgeBases(', 'agRequest(')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk', 'mockk', 'mockk')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'VectorChunk')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('await', 'pollInterval', 'ofSeconds')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('productionClasses', 'filter', 'contains')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'filter', 'contains')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('runTest', 'mockFilePart', 'every')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'findPageRendering', 'of')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('coEvery', 'ingestMultipart', 'any')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DoclingConfig', 'assertThatThrownBy', 'validateCriticalSettings')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('trim', 'lowercase', 'warn')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('every', 'existsById', 'asKnowledgeBaseId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('upsertStaging', 'of', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentInput', 'asJobId', 'asDocumentId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('defaultCapabilityId',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "defaultCapabilityId",
"sore_success": true
},
{
"context": "('clearAllMocks',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "clearAllMocks",
"sore_success": true
},
{
"context": "('Builder',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('Any',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('get',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('mockkObject', 'slot', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'every', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ToolInvocationPolicyProperties', 'mapOf', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('registerProperties',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('assumeTrue', 'isDockerAvailable', 'start')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('queryForObject',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "queryForObject",
"sore_success": true
},
{
"context": "('filesIn', 'assertTrue', 'contains')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "filesIn.assertTrue.(contains)+",
"sore_success": true
},
{
"context": "('JobStatus', 'every', 'getJobStatus')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "JobStatus.every.getJobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('every', 'getJobStatus', 'get')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('runBlocking', 'controller', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('builder', 'inputType', 'truncate')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getMethod', 'invoke', 'return configureAndBuild(builder, config)')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "getMethod.invoke.return configureAndBuild(builder, config).configureAndBuild",
"sore_success": true
},
{
"context": "('leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('`when`', 'healthCheckAsync', 'thenReturn')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('asJobId', 'asFilename', 'emptyGraphDocument')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('resolveUploadStorageUri',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('IngestionDocumentState', 'asDocumentId', 'asJobId')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('mapOf', 'mapOf', 'requireNotNull')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('createTempFile', 'apply', 'writeText')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'fetchTracking', 'asJobId')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'existsByUsername', 'any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "every.existsByUsername.any.assertThrows.registerUser.assertEquals",
"sore_success": true
},
{
"context": "('AgentExecutionContext',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('runTest', 'TestRequest', 'every')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('map',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "map",
"sore_success": true
},
{
"context": "('run', 'Supplier', 'action')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ChatResponse', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sortedBy', 'map', 'toDescriptor')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "sortedBy.map.toDescriptor",
"sore_success": true
},
{
"context": "('isNullOrBlank', 'error', 'error')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "isNullOrBlank.(error)+",
"sore_success": true
},
{
"context": "('runTest', 'RagInvocation', 'RagRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'invoke', 'WikipediaLookupRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('mockk', 'also', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'uri', 'exchange')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('newClient', 'callTool', 'CallToolRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createKnowledgeBase', 'copyTestDocument', 'copyTestDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('MultipartBodyBuilder', 'part', 'readBytes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('assertNoMainProjectDependencies', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('scopeFromProject', 'filter', 'contains')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('productionFiles', 'filter', 'contains')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('productionClasses', 'filter', 'hasAnnotationWithName')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eFromProject()', 'ses()', 't { i')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('joinToString', 'warn', 'return ResponseEntity.status(HttpStatus.BAD_REQUEST)\\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('post', 'uri', 'exchange')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('every', 'knowledgeBaseExists', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('KnowledgeBaseResponse', 'now', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "KnowledgeBaseResponse.(now)+",
"sore_success": true
},
{
"context": "('runTest', 'ChatResponse', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('runTest', 'coEvery', 'chatWithMemory')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('JobStatus', 'now', 'minusMinutes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('runTest', 'mockk', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('every', 'getOrCreateAgentKnowledgeBase', 'slot')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'getJobStatus', 'JobStatus')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "every.getJobStatus.JobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('`when`', 'listModels', 'thenReturn')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('assertThrows', 'EmbabelAiHttpClientProperties', 'ofSeconds')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('ilder()', 'ery(\"', 'pK(5')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('info', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByJobId",
"sore_success": true
},
{
"context": "('info', 'deleteByKnowledgeBaseId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByKnowledgeBaseId",
"sore_success": true
},
{
"context": "('buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))', 'storeObject')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('resolveLocation', 'builder', 'bucket')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('replace', 'ifBlank', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('lowercase',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('loadObject',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "loadObject",
"sore_success": true
},
{
"context": "('parse', 'KnowledgeBaseNode', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'save', 'KnowledgeBaseNode')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'similaritySearch', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentGraphJob', 'asDocumentId', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('asJobId', 'every', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('runBlocking', 'adminClient', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('execute',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('every', 'process', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('policy', 'assertTrue', 'shouldRetry')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('state', 'every', 'recordFailure')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update', 'trimIndent', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "update.trimIndent.now.insertRow",
"sore_success": true
},
{
"context": "('input', 'beforeProcess', 'verify')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('processedDocument', 'every', 'enforce')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobParametersBuilder', 'addString', 'toJobParameters')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobExecution', 'JobParametersBuilder')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createJobExecution', 'every', 'findExecutionById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('StagedUploadCleanupService', 'StorageProperties', 'toString')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JwtService', 'JwtProperties', 'generateToken')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 12.0,
"elapsed_seconds": 0.04,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 1112,
"contexts_after": 1112
}
}

View file

@ -0,0 +1,967 @@
{
"strategy": "Reduce k=3 \u03b5=0.2",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"groups": [
{
"context": "('VectorChunk', 'mapOf', 'mapOf')",
"methods": 13,
"unique": 11,
"unique_ratio": 0.846,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')",
"methods": 12,
"unique": 4,
"unique_ratio": 0.333,
"sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))",
"sore_success": true
},
{
"context": "('listOf', 'listOf', 'productionFiles')",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk',)",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('File', 'writeBytes', 'byteArrayOf')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'ChatResponse', 'emptyList')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'assertTrue', 'hasImport')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "filesIn.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('of',)",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('assertEquals', 'of', 'assertFailsWith')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('runTest', 'mockk', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'forEach')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('session', 'use', 'run')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'now', 'update')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('HybridChunkingConfig', 'service', 'GraphDocument')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'KnowledgeBase', 'asKnowledgeBaseId')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('very', 'istKnowledgeBases(', 'agRequest(')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk', 'mockk', 'mockk')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'VectorChunk')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('await', 'pollInterval', 'ofSeconds')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('productionClasses', 'filter', 'contains')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'filter', 'contains')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('runTest', 'mockFilePart', 'every')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'findPageRendering', 'of')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('coEvery', 'ingestMultipart', 'any')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DoclingConfig', 'assertThatThrownBy', 'validateCriticalSettings')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('trim', 'lowercase', 'warn')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('every', 'existsById', 'asKnowledgeBaseId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('upsertStaging', 'of', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentInput', 'asJobId', 'asDocumentId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('defaultCapabilityId',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "defaultCapabilityId",
"sore_success": true
},
{
"context": "('clearAllMocks',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "clearAllMocks",
"sore_success": true
},
{
"context": "('Builder',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('Any',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('get',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('mockkObject', 'slot', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'every', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ToolInvocationPolicyProperties', 'mapOf', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('registerProperties',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('assumeTrue', 'isDockerAvailable', 'start')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('queryForObject',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "queryForObject",
"sore_success": true
},
{
"context": "('filesIn', 'assertTrue', 'contains')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "filesIn.assertTrue.(contains)+",
"sore_success": true
},
{
"context": "('JobStatus', 'every', 'getJobStatus')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "JobStatus.every.getJobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('every', 'getJobStatus', 'get')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('runBlocking', 'controller', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('builder', 'inputType', 'truncate')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getMethod', 'invoke', 'return configureAndBuild(builder, config)')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "getMethod.invoke.return configureAndBuild(builder, config).configureAndBuild",
"sore_success": true
},
{
"context": "('leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('`when`', 'healthCheckAsync', 'thenReturn')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('asJobId', 'asFilename', 'emptyGraphDocument')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('resolveUploadStorageUri',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('IngestionDocumentState', 'asDocumentId', 'asJobId')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('mapOf', 'mapOf', 'requireNotNull')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('createTempFile', 'apply', 'writeText')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'fetchTracking', 'asJobId')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'existsByUsername', 'any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "every.existsByUsername.any.assertThrows.registerUser.assertEquals",
"sore_success": true
},
{
"context": "('AgentExecutionContext',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('runTest', 'TestRequest', 'every')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('map',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "map",
"sore_success": true
},
{
"context": "('run', 'Supplier', 'action')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ChatResponse', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sortedBy', 'map', 'toDescriptor')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "sortedBy.map.toDescriptor",
"sore_success": true
},
{
"context": "('isNullOrBlank', 'error', 'error')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "isNullOrBlank.(error)+",
"sore_success": true
},
{
"context": "('runTest', 'RagInvocation', 'RagRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'invoke', 'WikipediaLookupRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('mockk', 'also', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'uri', 'exchange')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('newClient', 'callTool', 'CallToolRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createKnowledgeBase', 'copyTestDocument', 'copyTestDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('MultipartBodyBuilder', 'part', 'readBytes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('assertNoMainProjectDependencies', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('scopeFromProject', 'filter', 'contains')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('productionFiles', 'filter', 'contains')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('productionClasses', 'filter', 'hasAnnotationWithName')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eFromProject()', 'ses()', 't { i')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('joinToString', 'warn', 'return ResponseEntity.status(HttpStatus.BAD_REQUEST)\\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('post', 'uri', 'exchange')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('every', 'knowledgeBaseExists', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('KnowledgeBaseResponse', 'now', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "KnowledgeBaseResponse.(now)+",
"sore_success": true
},
{
"context": "('runTest', 'ChatResponse', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('runTest', 'coEvery', 'chatWithMemory')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('JobStatus', 'now', 'minusMinutes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('runTest', 'mockk', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('every', 'getOrCreateAgentKnowledgeBase', 'slot')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'getJobStatus', 'JobStatus')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "every.getJobStatus.JobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('`when`', 'listModels', 'thenReturn')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('assertThrows', 'EmbabelAiHttpClientProperties', 'ofSeconds')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('ilder()', 'ery(\"', 'pK(5')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('info', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByJobId",
"sore_success": true
},
{
"context": "('info', 'deleteByKnowledgeBaseId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByKnowledgeBaseId",
"sore_success": true
},
{
"context": "('buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))', 'storeObject')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('resolveLocation', 'builder', 'bucket')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('replace', 'ifBlank', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('lowercase',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('loadObject',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "loadObject",
"sore_success": true
},
{
"context": "('parse', 'KnowledgeBaseNode', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'save', 'KnowledgeBaseNode')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'similaritySearch', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentGraphJob', 'asDocumentId', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('asJobId', 'every', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('runBlocking', 'adminClient', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('execute',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('every', 'process', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('policy', 'assertTrue', 'shouldRetry')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('state', 'every', 'recordFailure')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update', 'trimIndent', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "update.trimIndent.now.insertRow",
"sore_success": true
},
{
"context": "('input', 'beforeProcess', 'verify')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('processedDocument', 'every', 'enforce')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobParametersBuilder', 'addString', 'toJobParameters')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobExecution', 'JobParametersBuilder')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createJobExecution', 'every', 'findExecutionById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('StagedUploadCleanupService', 'StorageProperties', 'toString')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JwtService', 'JwtProperties', 'generateToken')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 12.0,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 1112,
"contexts_after": 1112
}
}

View file

@ -0,0 +1,975 @@
{
"strategy": "Reduce k=3 \u03b5=0.3",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1597,
"methods_in_good_groups": 187,
"sore_successes": 46,
"sore_failures": 15,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"groups": [
{
"context": "('VectorChunk', 'mapOf', 'mapOf')",
"methods": 13,
"unique": 11,
"unique_ratio": 0.846,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')",
"methods": 12,
"unique": 4,
"unique_ratio": 0.333,
"sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))",
"sore_success": true
},
{
"context": "('listOf', 'listOf', 'productionFiles')",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk',)",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('File', 'writeBytes', 'byteArrayOf')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'ChatResponse', 'emptyList')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'assertTrue', 'hasImport')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "filesIn.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('JobStatus', 'every', 'getJobStatus')",
"methods": 7,
"unique": 4,
"unique_ratio": 0.571,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('of',)",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('assertEquals', 'of', 'assertFailsWith')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('runTest', 'mockk', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'forEach')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('session', 'use', 'run')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'now', 'update')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('HybridChunkingConfig', 'service', 'GraphDocument')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'KnowledgeBase', 'asKnowledgeBaseId')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('very', 'istKnowledgeBases(', 'agRequest(')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk', 'mockk', 'mockk')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'VectorChunk')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('await', 'pollInterval', 'ofSeconds')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('productionClasses', 'filter', 'contains')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'filter', 'contains')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('runTest', 'mockFilePart', 'every')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'findPageRendering', 'of')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('coEvery', 'ingestMultipart', 'any')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DoclingConfig', 'assertThatThrownBy', 'validateCriticalSettings')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('trim', 'lowercase', 'warn')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('every', 'existsById', 'asKnowledgeBaseId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('upsertStaging', 'of', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentInput', 'asJobId', 'asDocumentId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('defaultCapabilityId',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "defaultCapabilityId",
"sore_success": true
},
{
"context": "('clearAllMocks',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "clearAllMocks",
"sore_success": true
},
{
"context": "('Builder',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('Any',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('get',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('mockkObject', 'slot', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'every', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ToolInvocationPolicyProperties', 'mapOf', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('registerProperties',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('assumeTrue', 'isDockerAvailable', 'start')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('queryForObject',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "queryForObject",
"sore_success": true
},
{
"context": "('filesIn', 'assertTrue', 'contains')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "filesIn.assertTrue.(contains)+",
"sore_success": true
},
{
"context": "('every', 'getJobStatus', 'get')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('runBlocking', 'controller', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('builder', 'inputType', 'truncate')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getMethod', 'invoke', 'return configureAndBuild(builder, config)')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "getMethod.invoke.return configureAndBuild(builder, config).configureAndBuild",
"sore_success": true
},
{
"context": "('leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('`when`', 'healthCheckAsync', 'thenReturn')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('asJobId', 'asFilename', 'emptyGraphDocument')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('resolveUploadStorageUri',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('IngestionDocumentState', 'asDocumentId', 'asJobId')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('mapOf', 'mapOf', 'requireNotNull')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('createTempFile', 'apply', 'writeText')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'fetchTracking', 'asJobId')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'existsByUsername', 'any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "every.existsByUsername.any.assertThrows.registerUser.assertEquals",
"sore_success": true
},
{
"context": "('AgentExecutionContext',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('runTest', 'TestRequest', 'every')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('map',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "map",
"sore_success": true
},
{
"context": "('run', 'Supplier', 'action')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ChatResponse', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sortedBy', 'map', 'toDescriptor')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "sortedBy.map.toDescriptor",
"sore_success": true
},
{
"context": "('isNullOrBlank', 'error', 'error')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "isNullOrBlank.(error)+",
"sore_success": true
},
{
"context": "('runTest', 'RagInvocation', 'RagRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'invoke', 'WikipediaLookupRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('mockk', 'also', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'uri', 'exchange')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('newClient', 'callTool', 'CallToolRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createKnowledgeBase', 'copyTestDocument', 'copyTestDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('MultipartBodyBuilder', 'part', 'readBytes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('assertNoMainProjectDependencies', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('scopeFromProject', 'filter', 'contains')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('productionFiles', 'filter', 'contains')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('productionClasses', 'filter', 'hasAnnotationWithName')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eFromProject()', 'ses()', 't { i')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('joinToString', 'warn', 'return ResponseEntity.status(HttpStatus.BAD_REQUEST)\\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('post', 'uri', 'exchange')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('every', 'knowledgeBaseExists', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('KnowledgeBaseResponse', 'now', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "KnowledgeBaseResponse.(now)+",
"sore_success": true
},
{
"context": "('runTest', 'ChatResponse', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('runTest', 'coEvery', 'chatWithMemory')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('runTest', 'mockk', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('every', 'getOrCreateAgentKnowledgeBase', 'slot')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'getJobStatus', 'JobStatus')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "every.getJobStatus.JobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('`when`', 'listModels', 'thenReturn')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('assertThrows', 'EmbabelAiHttpClientProperties', 'ofSeconds')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('ilder()', 'ery(\"', 'pK(5')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('info', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByJobId",
"sore_success": true
},
{
"context": "('info', 'deleteByKnowledgeBaseId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByKnowledgeBaseId",
"sore_success": true
},
{
"context": "('buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))', 'storeObject')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('resolveLocation', 'builder', 'bucket')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('replace', 'ifBlank', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('lowercase',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('loadObject',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "loadObject",
"sore_success": true
},
{
"context": "('parse', 'KnowledgeBaseNode', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'save', 'KnowledgeBaseNode')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'similaritySearch', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentGraphJob', 'asDocumentId', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('asJobId', 'every', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('runBlocking', 'adminClient', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('execute',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('every', 'process', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('policy', 'assertTrue', 'shouldRetry')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('state', 'every', 'recordFailure')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update', 'trimIndent', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "update.trimIndent.now.insertRow",
"sore_success": true
},
{
"context": "('input', 'beforeProcess', 'verify')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('processedDocument', 'every', 'enforce')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobParametersBuilder', 'addString', 'toJobParameters')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobExecution', 'JobParametersBuilder')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createJobExecution', 'every', 'findExecutionById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('StagedUploadCleanupService', 'StorageProperties', 'toString')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JwtService', 'JwtProperties', 'generateToken')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobStatus', 'now', 'minusMinutes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
}
],
"coverage": 11.7,
"elapsed_seconds": 0.07,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 54756,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.3,
"merge_log": [
{
"iteration": 1,
"merged_into": "('JobStatus', 'every', 'getJobStatus')",
"removed": "('JobStatus', 'now', 'minusMinutes')",
"distance": 0.2714,
"new_size": 7
}
]
},
"threshold": 0.3,
"contexts_before": 1112,
"contexts_after": 1112
}
}

View file

@ -0,0 +1,975 @@
{
"strategy": "Reduce k=3 \u03b5=0.4",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1597,
"methods_in_good_groups": 187,
"sore_successes": 46,
"sore_failures": 15,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"groups": [
{
"context": "('VectorChunk', 'mapOf', 'mapOf')",
"methods": 13,
"unique": 11,
"unique_ratio": 0.846,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('ery {', 'stKnowledgeBases()', 'gRequest(m')",
"methods": 12,
"unique": 4,
"unique_ratio": 0.333,
"sore": "ery {.stKnowledgeBases().gRequest(m.(ckKnowledgeBase(re.ertEquals(Kn.\"k|eckKnowledgeBase(r.(sertEquals(K.(\"|(sertEquals(t|sertNull(o)))",
"sore_success": true
},
{
"context": "('listOf', 'listOf', 'productionFiles')",
"methods": 12,
"unique": 6,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk',)",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('File', 'writeBytes', 'byteArrayOf')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'ChatResponse', 'emptyList')",
"methods": 7,
"unique": 7,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'assertTrue', 'hasImport')",
"methods": 7,
"unique": 2,
"unique_ratio": 0.286,
"sore": "filesIn.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('JobStatus', 'every', 'getJobStatus')",
"methods": 7,
"unique": 4,
"unique_ratio": 0.571,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('of',)",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('assertEquals', 'of', 'assertFailsWith')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('runTest', 'mockk', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'forEach')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('session', 'use', 'run')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('from', 'now', 'update')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('HybridChunkingConfig', 'service', 'GraphDocument')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'KnowledgeBase', 'asKnowledgeBaseId')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('very', 'istKnowledgeBases(', 'agRequest(')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('mockk', 'mockk', 'mockk')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listOf', 'listOf', 'VectorChunk')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('await', 'pollInterval', 'ofSeconds')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('productionClasses', 'filter', 'contains')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('filesIn', 'filter', 'contains')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('runTest', 'mockFilePart', 'every')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'findPageRendering', 'of')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('coEvery', 'ingestMultipart', 'any')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DoclingConfig', 'assertThatThrownBy', 'validateCriticalSettings')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('trim', 'lowercase', 'warn')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('every', 'existsById', 'asKnowledgeBaseId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('upsertStaging', 'of', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentInput', 'asJobId', 'asDocumentId')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('defaultCapabilityId',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "defaultCapabilityId",
"sore_success": true
},
{
"context": "('clearAllMocks',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "clearAllMocks",
"sore_success": true
},
{
"context": "('Builder',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('Any',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('get',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('mockkObject', 'slot', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'every', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ToolInvocationPolicyProperties', 'mapOf', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('registerProperties',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('assumeTrue', 'isDockerAvailable', 'start')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('queryForObject',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "queryForObject",
"sore_success": true
},
{
"context": "('filesIn', 'assertTrue', 'contains')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "filesIn.assertTrue.(contains)+",
"sore_success": true
},
{
"context": "('every', 'getJobStatus', 'get')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('runBlocking', 'controller', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('builder', 'inputType', 'truncate')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('getMethod', 'invoke', 'return configureAndBuild(builder, config)')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "getMethod.invoke.return configureAndBuild(builder, config).configureAndBuild",
"sore_success": true
},
{
"context": "('leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('`when`', 'healthCheckAsync', 'thenReturn')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('asJobId', 'asFilename', 'emptyGraphDocument')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('resolveUploadStorageUri',)",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('IngestionDocumentState', 'asDocumentId', 'asJobId')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('mapOf', 'mapOf', 'requireNotNull')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('createTempFile', 'apply', 'writeText')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'fetchTracking', 'asJobId')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'existsByUsername', 'any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "every.existsByUsername.any.assertThrows.registerUser.assertEquals",
"sore_success": true
},
{
"context": "('AgentExecutionContext',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('runTest', 'TestRequest', 'every')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('map',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "map",
"sore_success": true
},
{
"context": "('run', 'Supplier', 'action')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ChatResponse', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('sortedBy', 'map', 'toDescriptor')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "sortedBy.map.toDescriptor",
"sore_success": true
},
{
"context": "('isNullOrBlank', 'error', 'error')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "isNullOrBlank.(error)+",
"sore_success": true
},
{
"context": "('runTest', 'RagInvocation', 'RagRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'invoke', 'WikipediaLookupRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('chat',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('mockk', 'also', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('get', 'uri', 'exchange')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('newClient', 'callTool', 'CallToolRequest')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createKnowledgeBase', 'copyTestDocument', 'copyTestDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('MultipartBodyBuilder', 'part', 'readBytes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('assertNoMainProjectDependencies', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('scopeFromProject', 'filter', 'contains')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('productionFiles', 'filter', 'contains')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('productionClasses', 'filter', 'hasAnnotationWithName')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('eFromProject()', 'ses()', 't { i')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('joinToString', 'warn', 'return ResponseEntity.status(HttpStatus.BAD_REQUEST)\\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('post', 'uri', 'exchange')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('every', 'knowledgeBaseExists', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('KnowledgeBaseResponse', 'now', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "KnowledgeBaseResponse.(now)+",
"sore_success": true
},
{
"context": "('runTest', 'ChatResponse', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('runTest', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('runTest', 'coEvery', 'chatWithMemory')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('runTest', 'mockk', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('every', 'getOrCreateAgentKnowledgeBase', 'slot')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'getJobStatus', 'JobStatus')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "every.getJobStatus.JobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('`when`', 'listModels', 'thenReturn')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('assertThrows', 'EmbabelAiHttpClientProperties', 'ofSeconds')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('ilder()', 'ery(\"', 'pK(5')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('info', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByJobId",
"sore_success": true
},
{
"context": "('info', 'deleteByKnowledgeBaseId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "info.deleteByKnowledgeBaseId",
"sore_success": true
},
{
"context": "('buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))', 'storeObject')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('resolveLocation', 'builder', 'bucket')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('replace', 'ifBlank', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('lowercase',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('loadObject',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "loadObject",
"sore_success": true
},
{
"context": "('parse', 'KnowledgeBaseNode', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('parse', 'save', 'KnowledgeBaseNode')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('every', 'similaritySearch', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('DocumentGraphJob', 'asDocumentId', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('asJobId', 'every', 'deleteByJobId')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('runBlocking', 'adminClient', 'post')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('execute',)",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('every', 'process', 'any')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('policy', 'assertTrue', 'shouldRetry')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('state', 'every', 'recordFailure')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('update', 'trimIndent', 'now')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "update.trimIndent.now.insertRow",
"sore_success": true
},
{
"context": "('input', 'beforeProcess', 'verify')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('processedDocument', 'every', 'enforce')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobParametersBuilder', 'addString', 'toJobParameters')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobInstance', 'JobExecution', 'JobParametersBuilder')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('createJobExecution', 'every', 'findExecutionById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('StagedUploadCleanupService', 'StorageProperties', 'toString')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JwtService', 'JwtProperties', 'generateToken')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('JobStatus', 'now', 'minusMinutes')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
}
],
"coverage": 11.7,
"elapsed_seconds": 0.04,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 54756,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.4,
"merge_log": [
{
"iteration": 1,
"merged_into": "('JobStatus', 'every', 'getJobStatus')",
"removed": "('JobStatus', 'now', 'minusMinutes')",
"distance": 0.2714,
"new_size": 7
}
]
},
"threshold": 0.4,
"contexts_before": 1112,
"contexts_after": 1112
}
}

View file

@ -0,0 +1,57 @@
{
"strategy": "Option H: Return type heuristic",
"total_contexts": 60,
"meaningful_contexts": 5,
"total_methods": 1594,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 0,
"skip_reasons": {
"too_large": 1,
"too_diverse": 4
},
"groups": [
{
"context": "('RETURN_VALUE',)",
"methods": 1517,
"unique": 1312,
"unique_ratio": 0.865,
"sore": "SKIP(too_large)",
"sore_success": false
},
{
"context": "('SIDE_EFFECT',)",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('RETURN_false',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('RETURN_result',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('RETURN_normalized',)",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 0.0,
"elapsed_seconds": 0.0
}

View file

@ -0,0 +1,754 @@
[
{
"strategy": "Baseline: Package grouping",
"total_contexts": 137,
"meaningful_contexts": 116,
"total_methods": 1594,
"methods_in_good_groups": 9,
"sore_successes": 2,
"sore_failures": 10,
"skip_reasons": {
"too_large": 5,
"too_diverse": 89,
"large_alphabet": 10
},
"coverage": 0.6,
"elapsed_seconds": 0.07
},
{
"strategy": "Option A: File path k=1",
"total_contexts": 47,
"meaningful_contexts": 43,
"total_methods": 1594,
"methods_in_good_groups": 17,
"sore_successes": 2,
"sore_failures": 1,
"skip_reasons": {
"too_large": 9,
"too_diverse": 28,
"large_alphabet": 3
},
"coverage": 1.1,
"elapsed_seconds": 0.0
},
{
"strategy": "Option A: File path k=2",
"total_contexts": 59,
"meaningful_contexts": 54,
"total_methods": 1594,
"methods_in_good_groups": 17,
"sore_successes": 2,
"sore_failures": 1,
"skip_reasons": {
"too_large": 8,
"too_diverse": 39,
"large_alphabet": 4
},
"coverage": 1.1,
"elapsed_seconds": 0.01
},
{
"strategy": "Option A: File path k=3",
"total_contexts": 59,
"meaningful_contexts": 54,
"total_methods": 1594,
"methods_in_good_groups": 17,
"sore_successes": 2,
"sore_failures": 1,
"skip_reasons": {
"too_large": 8,
"too_diverse": 39,
"large_alphabet": 4
},
"coverage": 1.1,
"elapsed_seconds": 0.01
},
{
"strategy": "Option B: First 1 symbols",
"total_contexts": 550,
"meaningful_contexts": 134,
"total_methods": 1594,
"methods_in_good_groups": 74,
"sore_successes": 20,
"sore_failures": 19,
"skip_reasons": {
"too_large": 2,
"large_alphabet": 13,
"too_diverse": 80
},
"coverage": 4.6,
"elapsed_seconds": 0.08
},
{
"strategy": "Option B: First 2 symbols",
"total_contexts": 961,
"meaningful_contexts": 141,
"total_methods": 1594,
"methods_in_good_groups": 157,
"sore_successes": 39,
"sore_failures": 23,
"skip_reasons": {
"large_alphabet": 7,
"too_diverse": 72
},
"coverage": 9.8,
"elapsed_seconds": 0.13
},
{
"strategy": "Option B: First 3 symbols",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"coverage": 12.0,
"elapsed_seconds": 0.1
},
{
"strategy": "Option C: Path k=1 + Symbol k=1",
"total_contexts": 813,
"meaningful_contexts": 151,
"total_methods": 1594,
"methods_in_good_groups": 101,
"sore_successes": 24,
"sore_failures": 19,
"skip_reasons": {
"too_diverse": 99,
"large_alphabet": 9
},
"coverage": 6.3,
"elapsed_seconds": 0.1
},
{
"strategy": "Option C: Path k=1 + Symbol k=2",
"total_contexts": 1073,
"meaningful_contexts": 119,
"total_methods": 1594,
"methods_in_good_groups": 138,
"sore_successes": 33,
"sore_failures": 21,
"skip_reasons": {
"too_diverse": 61,
"large_alphabet": 4
},
"coverage": 8.7,
"elapsed_seconds": 0.07
},
{
"strategy": "Option C: Path k=2 + Symbol k=1",
"total_contexts": 832,
"meaningful_contexts": 146,
"total_methods": 1594,
"methods_in_good_groups": 101,
"sore_successes": 24,
"sore_failures": 19,
"skip_reasons": {
"too_diverse": 94,
"large_alphabet": 9
},
"coverage": 6.3,
"elapsed_seconds": 0.08
},
{
"strategy": "Option C: Path k=2 + Symbol k=2",
"total_contexts": 1080,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 138,
"sore_successes": 33,
"sore_failures": 21,
"skip_reasons": {
"too_diverse": 59,
"large_alphabet": 4
},
"coverage": 8.7,
"elapsed_seconds": 0.07
},
{
"strategy": "Option H: Return type heuristic",
"total_contexts": 60,
"meaningful_contexts": 5,
"total_methods": 1594,
"methods_in_good_groups": 0,
"sore_successes": 0,
"sore_failures": 0,
"skip_reasons": {
"too_large": 1,
"too_diverse": 4
},
"coverage": 0.0,
"elapsed_seconds": 0.0
},
{
"strategy": "Reduce k=1 \u03b5=0.05",
"total_contexts": 550,
"meaningful_contexts": 134,
"total_methods": 1594,
"methods_in_good_groups": 74,
"sore_successes": 20,
"sore_failures": 19,
"skip_reasons": {
"too_large": 2,
"large_alphabet": 13,
"too_diverse": 80
},
"coverage": 4.6,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 23653,
"contexts_before": 550,
"contexts_after": 550,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 550,
"contexts_after": 550
}
},
{
"strategy": "Reduce k=1 \u03b5=0.1",
"total_contexts": 550,
"meaningful_contexts": 134,
"total_methods": 1594,
"methods_in_good_groups": 74,
"sore_successes": 20,
"sore_failures": 19,
"skip_reasons": {
"too_large": 2,
"large_alphabet": 13,
"too_diverse": 80
},
"coverage": 4.6,
"elapsed_seconds": 0.08,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 23653,
"contexts_before": 550,
"contexts_after": 550,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 550,
"contexts_after": 550
}
},
{
"strategy": "Reduce k=1 \u03b5=0.15",
"total_contexts": 550,
"meaningful_contexts": 134,
"total_methods": 1594,
"methods_in_good_groups": 74,
"sore_successes": 20,
"sore_failures": 19,
"skip_reasons": {
"too_large": 2,
"large_alphabet": 13,
"too_diverse": 80
},
"coverage": 4.6,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 23653,
"contexts_before": 550,
"contexts_after": 550,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 550,
"contexts_after": 550
}
},
{
"strategy": "Reduce k=1 \u03b5=0.2",
"total_contexts": 550,
"meaningful_contexts": 134,
"total_methods": 1594,
"methods_in_good_groups": 74,
"sore_successes": 20,
"sore_failures": 19,
"skip_reasons": {
"too_large": 2,
"large_alphabet": 13,
"too_diverse": 80
},
"coverage": 4.6,
"elapsed_seconds": 0.13,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 23653,
"contexts_before": 550,
"contexts_after": 550,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 550,
"contexts_after": 550
}
},
{
"strategy": "Reduce k=1 \u03b5=0.3",
"total_contexts": 550,
"meaningful_contexts": 134,
"total_methods": 1594,
"methods_in_good_groups": 74,
"sore_successes": 20,
"sore_failures": 19,
"skip_reasons": {
"too_large": 2,
"large_alphabet": 13,
"too_diverse": 80
},
"coverage": 4.6,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 23653,
"contexts_before": 550,
"contexts_after": 550,
"threshold": 0.3,
"merge_log": []
},
"threshold": 0.3,
"contexts_before": 550,
"contexts_after": 550
}
},
{
"strategy": "Reduce k=1 \u03b5=0.4",
"total_contexts": 550,
"meaningful_contexts": 134,
"total_methods": 1594,
"methods_in_good_groups": 74,
"sore_successes": 20,
"sore_failures": 19,
"skip_reasons": {
"too_large": 2,
"large_alphabet": 13,
"too_diverse": 80
},
"coverage": 4.6,
"elapsed_seconds": 0.05,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 23653,
"contexts_before": 550,
"contexts_after": 550,
"threshold": 0.4,
"merge_log": []
},
"threshold": 0.4,
"contexts_before": 550,
"contexts_after": 550
}
},
{
"strategy": "Reduce k=2 \u03b5=0.05",
"total_contexts": 961,
"meaningful_contexts": 141,
"total_methods": 1594,
"methods_in_good_groups": 157,
"sore_successes": 39,
"sore_failures": 23,
"skip_reasons": {
"large_alphabet": 7,
"too_diverse": 72
},
"coverage": 9.8,
"elapsed_seconds": 0.06,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 32896,
"contexts_before": 961,
"contexts_after": 961,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 961,
"contexts_after": 961
}
},
{
"strategy": "Reduce k=2 \u03b5=0.1",
"total_contexts": 961,
"meaningful_contexts": 141,
"total_methods": 1594,
"methods_in_good_groups": 157,
"sore_successes": 39,
"sore_failures": 23,
"skip_reasons": {
"large_alphabet": 7,
"too_diverse": 72
},
"coverage": 9.8,
"elapsed_seconds": 0.12,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 32896,
"contexts_before": 961,
"contexts_after": 961,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 961,
"contexts_after": 961
}
},
{
"strategy": "Reduce k=2 \u03b5=0.15",
"total_contexts": 961,
"meaningful_contexts": 141,
"total_methods": 1594,
"methods_in_good_groups": 157,
"sore_successes": 39,
"sore_failures": 23,
"skip_reasons": {
"large_alphabet": 7,
"too_diverse": 72
},
"coverage": 9.8,
"elapsed_seconds": 0.15,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 32896,
"contexts_before": 961,
"contexts_after": 961,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 961,
"contexts_after": 961
}
},
{
"strategy": "Reduce k=2 \u03b5=0.2",
"total_contexts": 961,
"meaningful_contexts": 141,
"total_methods": 1594,
"methods_in_good_groups": 157,
"sore_successes": 39,
"sore_failures": 23,
"skip_reasons": {
"large_alphabet": 7,
"too_diverse": 72
},
"coverage": 9.8,
"elapsed_seconds": 0.13,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 32896,
"contexts_before": 961,
"contexts_after": 961,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 961,
"contexts_after": 961
}
},
{
"strategy": "Reduce k=2 \u03b5=0.3",
"total_contexts": 961,
"meaningful_contexts": 141,
"total_methods": 1597,
"methods_in_good_groups": 153,
"sore_successes": 38,
"sore_failures": 24,
"skip_reasons": {
"large_alphabet": 7,
"too_diverse": 72
},
"coverage": 9.6,
"elapsed_seconds": 0.1,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 65536,
"contexts_before": 961,
"contexts_after": 961,
"threshold": 0.3,
"merge_log": [
{
"iteration": 1,
"merged_into": "('JobStatus', 'every')",
"removed": "('JobStatus', 'now')",
"distance": 0.2714,
"new_size": 7
}
]
},
"threshold": 0.3,
"contexts_before": 961,
"contexts_after": 961
}
},
{
"strategy": "Reduce k=2 \u03b5=0.4",
"total_contexts": 961,
"meaningful_contexts": 141,
"total_methods": 1604,
"methods_in_good_groups": 153,
"sore_successes": 38,
"sore_failures": 24,
"skip_reasons": {
"large_alphabet": 7,
"too_diverse": 72
},
"coverage": 9.5,
"elapsed_seconds": 0.1,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 2,
"comparisons": 65281,
"contexts_before": 961,
"contexts_after": 961,
"threshold": 0.4,
"merge_log": [
{
"iteration": 1,
"merged_into": "('JobStatus', 'every')",
"removed": "('every', 'getJobStatus')",
"distance": 0.3853,
"new_size": 11
},
{
"iteration": 1,
"merged_into": "('JobStatus', 'every')",
"removed": "('JobStatus', 'now')",
"distance": 0.2714,
"new_size": 14
}
]
},
"threshold": 0.4,
"contexts_before": 961,
"contexts_after": 961
}
},
{
"strategy": "Reduce k=3 \u03b5=0.05",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"coverage": 12.0,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.05,
"merge_log": []
},
"threshold": 0.05,
"contexts_before": 1112,
"contexts_after": 1112
}
},
{
"strategy": "Reduce k=3 \u03b5=0.1",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"coverage": 12.0,
"elapsed_seconds": 0.12,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.1,
"merge_log": []
},
"threshold": 0.1,
"contexts_before": 1112,
"contexts_after": 1112
}
},
{
"strategy": "Reduce k=3 \u03b5=0.15",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"coverage": 12.0,
"elapsed_seconds": 0.04,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.15,
"merge_log": []
},
"threshold": 0.15,
"contexts_before": 1112,
"contexts_after": 1112
}
},
{
"strategy": "Reduce k=3 \u03b5=0.2",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 191,
"sore_successes": 47,
"sore_failures": 14,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"coverage": 12.0,
"elapsed_seconds": 0.09,
"merge_info": {
"merges": {
"iterations": 1,
"merges": 0,
"comparisons": 27495,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.2,
"merge_log": []
},
"threshold": 0.2,
"contexts_before": 1112,
"contexts_after": 1112
}
},
{
"strategy": "Reduce k=3 \u03b5=0.3",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1597,
"methods_in_good_groups": 187,
"sore_successes": 46,
"sore_failures": 15,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"coverage": 11.7,
"elapsed_seconds": 0.07,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 54756,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.3,
"merge_log": [
{
"iteration": 1,
"merged_into": "('JobStatus', 'every', 'getJobStatus')",
"removed": "('JobStatus', 'now', 'minusMinutes')",
"distance": 0.2714,
"new_size": 7
}
]
},
"threshold": 0.3,
"contexts_before": 1112,
"contexts_after": 1112
}
},
{
"strategy": "Reduce k=3 \u03b5=0.4",
"total_contexts": 1112,
"meaningful_contexts": 117,
"total_methods": 1597,
"methods_in_good_groups": 187,
"sore_successes": 46,
"sore_failures": 15,
"skip_reasons": {
"large_alphabet": 6,
"too_diverse": 50
},
"coverage": 11.7,
"elapsed_seconds": 0.04,
"merge_info": {
"merges": {
"iterations": 2,
"merges": 1,
"comparisons": 54756,
"contexts_before": 1112,
"contexts_after": 1112,
"threshold": 0.4,
"merge_log": [
{
"iteration": 1,
"merged_into": "('JobStatus', 'every', 'getJobStatus')",
"removed": "('JobStatus', 'now', 'minusMinutes')",
"distance": 0.2714,
"new_size": 7
}
]
},
"threshold": 0.4,
"contexts_before": 1112,
"contexts_after": 1112
}
}
]

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,969 @@
{
"strategy": "Option C: Path k=1 + Symbol k=2",
"total_contexts": 1073,
"meaningful_contexts": 119,
"total_methods": 1594,
"methods_in_good_groups": 138,
"sore_successes": 33,
"sore_failures": 21,
"skip_reasons": {
"too_diverse": 61,
"large_alphabet": 4
},
"groups": [
{
"context": "('architecture', 'listOf', 'listOf')",
"methods": 15,
"unique": 8,
"unique_ratio": 0.533,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('embabel', 'ery {', 'stKnowledgeBases()')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('architecture', 'productionClasses', 'filter')",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('config', 'mockk')",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('architecture', 'filesIn', 'assertTrue')",
"methods": 11,
"unique": 5,
"unique_ratio": 0.455,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('reader', 'File', 'writeBytes')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'JwtService', 'JwtProperties')",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('ids', 'of')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('ids', 'assertEquals', 'of')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('job', 'from', 'now')",
"methods": 7,
"unique": 4,
"unique_ratio": 0.571,
"sore": "((from.now|(trimIndent|debug)).((update)+)?)+",
"sore_success": true
},
{
"context": "('simple', 'runTest', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('embabel', 'very', 'istKnowledgeBases(')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('web', 'runBlocking', 'controller')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('config', 'getMethod', 'invoke')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('storage', 'parseStorageUri', 'return false')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "parseStorageUri.return false.((return try {\n s3Client.headObject(\n HeadObjectRequest.builder()\n .bucket(location.bucket)\n .key(location.",
"sore_success": true
},
{
"context": "('repository', 'listOf', 'listOf')",
"methods": 6,
"unique": 5,
"unique_ratio": 0.833,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('chunk', 'HybridChunkingConfig', 'service')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'every', 'existsByUsername')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('system', 'createKnowledgeBase', 'copyTestDocument')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('system', 'await', 'pollInterval')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('architecture', 'filesIn', 'filter')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('controller', 'runTest', 'ChatResponse')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('librechat', 'runTest', 'mockFilePart')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('librechat', 'VectorChunk', 'mapOf')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('librechat', 'every', 'findPageRendering')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('librechat', 'coEvery', 'ingestMultipart')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('config', 'DoclingConfig', 'assertThatThrownBy')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('docling', 'trim', 'lowercase')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('job', 'upsertStaging', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'query', 'trimIndent')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'update', 'trimIndent')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "update.trimIndent.(now.insertRow)?",
"sore_success": true
},
{
"context": "('model', 'mapOf', 'mapOf')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('testsupport', 'Builder')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('testsupport', 'Any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('testsupport', 'get')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('embabel', 'mockkObject', 'slot')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('embabel', 'ToolInvocationPolicyProperties', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('steps', 'requireNotNull', 'requireNotNull')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('config', 'registerProperties')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('config', 'assumeTrue', 'isDockerAvailable')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('system', 'session', 'use')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('architecture', 'eFromProject()', 'ses()')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'mockk', 'mockk')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'JobStatus', 'every')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "JobStatus.every.getJobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('controller', 'runTest', 'coEvery')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('librechat', 'every', 'getOrCreateAgentKnowledgeBase')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('librechat', 'every', 'getJobStatus')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('embedding', 'builder', 'inputType')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('health', '`when`', 'listModels')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('repository', 'ilder()', 'ery(\"')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('repository', 'leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('graph', 'parse', 'KnowledgeBaseNode')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('health', '`when`', 'healthCheckAsync')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('graph', 'asJobId', 'asFilename')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('chat', 'runTest', 'ChatResponse')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('config', 'resolveUploadStorageUri')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('job', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listener', 'state', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'createTempFile', 'apply')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'JobInstance', 'JobParametersBuilder')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'every', 'fetchTracking')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('knowledgebase', 'parse', 'KnowledgeBase')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('capability', 'AgentExecutionContext')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('support', 'runTest', 'TestRequest')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('embabel', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('embabel', 'VectorChunk', 'mapOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('support', 'VectorChunk', 'mapOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('support', 'every', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('wikipedia', 'every', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('wikipedia', 'runTest', 'invoke')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('steps', 'chat')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('config', 'mockk', 'also')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('config', 'run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('system', 'newClient', 'callTool')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('system', 'MultipartBodyBuilder', 'part')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('architecture', 'assertNoMainProjectDependencies', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('kotlin', 'builder', 'build')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('architecture', 'scopeFromProject', 'filter')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('architecture', 'productionFiles', 'filter')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('architecture', 'productionClasses', 'withAnnotationOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'every', 'getJobStatus')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus",
"sore_success": true
},
{
"context": "('controller', 'joinToString', 'warn')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('controller', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('controller', 'every', 'knowledgeBaseExists')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'runTest', 'post')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('controller', 'JobStatus', 'now')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('librechat', 'runTest', 'mockk')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('config', 'assertThrows', 'EmbabelAiHttpClientProperties')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('config', 'ChatMemoryConfig', 'chatMemory')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('config', 'DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('health', '`when`', 'health')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('storage', 'buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('storage', 'parseStorageUri', 'return null')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('storage', 'resolveLocation', 'builder')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('storage', 'replace', 'ifBlank')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('storage', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('storage', 'isBlank', 'return null')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('graph', 'runBlocking', 'createTestImage')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('graph', 'parse', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('repository', 'every', 'similaritySearch')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('adapter', 'DocumentJobNode', 'now')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('graph', 'DocumentGraphJob', 'asDocumentId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('graph', 'asJobId', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('graph', 'emptyGraphDocument', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('system', 'runBlocking', 'adminClient')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'execute')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('job', 'every', 'process')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'policy', 'assertTrue')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('listener', 'createJobExecution', 'createStepExecution')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('listener', 'input', 'beforeProcess')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('model', 'DocumentInput', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('writer', 'processedDocument', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('writer', 'runTest', 'GraphDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'every', 'objectExists')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'JobInstance', 'JobExecution')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'createJobExecution', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('job', 'StagedUploadCleanupService', 'StorageProperties')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('knowledgebase', 'every', 'existsById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 8.7,
"elapsed_seconds": 0.07
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,953 @@
{
"strategy": "Option C: Path k=2 + Symbol k=2",
"total_contexts": 1080,
"meaningful_contexts": 117,
"total_methods": 1594,
"methods_in_good_groups": 138,
"sore_successes": 33,
"sore_failures": 21,
"skip_reasons": {
"too_diverse": 59,
"large_alphabet": 4
},
"groups": [
{
"context": "('springrag', 'architecture', 'listOf', 'listOf')",
"methods": 15,
"unique": 8,
"unique_ratio": 0.533,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('rag', 'embabel', 'ery {', 'stKnowledgeBases()')",
"methods": 13,
"unique": 5,
"unique_ratio": 0.385,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('springrag', 'architecture', 'productionClasses', 'filter')",
"methods": 13,
"unique": 13,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'config', 'mockk')",
"methods": 11,
"unique": 1,
"unique_ratio": 0.091,
"sore": "mockk",
"sore_success": true
},
{
"context": "('springrag', 'architecture', 'filesIn', 'assertTrue')",
"methods": 11,
"unique": 5,
"unique_ratio": 0.455,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('batch', 'reader', 'File', 'writeBytes')",
"methods": 8,
"unique": 7,
"unique_ratio": 0.875,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('security', 'service', 'JwtService', 'JwtProperties')",
"methods": 8,
"unique": 8,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('common', 'ids', 'of')",
"methods": 7,
"unique": 1,
"unique_ratio": 0.143,
"sore": "of",
"sore_success": true
},
{
"context": "('common', 'ids', 'assertEquals', 'of')",
"methods": 7,
"unique": 3,
"unique_ratio": 0.429,
"sore": "assertEquals.(of.(assertFailsWith)?)+",
"sore_success": true
},
{
"context": "('service', 'job', 'from', 'now')",
"methods": 7,
"unique": 4,
"unique_ratio": 0.571,
"sore": "((from.now|(trimIndent|debug)).((update)+)?)+",
"sore_success": true
},
{
"context": "('rag', 'simple', 'runTest', 'mockk')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rag', 'embabel', 'very', 'istKnowledgeBases(')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('controller', 'web', 'runBlocking', 'controller')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'config', 'getMethod', 'invoke')",
"methods": 6,
"unique": 2,
"unique_ratio": 0.333,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('service', 'storage', 'parseStorageUri', 'return false')",
"methods": 6,
"unique": 4,
"unique_ratio": 0.667,
"sore": "parseStorageUri.return false.((return try {\n s3Client.headObject(\n HeadObjectRequest.builder()\n .bucket(location.bucket)\n .key(location.",
"sore_success": true
},
{
"context": "('springrag', 'repository', 'listOf', 'listOf')",
"methods": 6,
"unique": 5,
"unique_ratio": 0.833,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('service', 'chunk', 'HybridChunkingConfig', 'service')",
"methods": 6,
"unique": 6,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('security', 'service', 'every', 'existsByUsername')",
"methods": 6,
"unique": 3,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('springrag', 'system', 'createKnowledgeBase', 'copyTestDocument')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'system', 'await', 'pollInterval')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('springrag', 'architecture', 'filesIn', 'filter')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "filesIn.filter.contains.assertTrue.(hasImport)+",
"sore_success": true
},
{
"context": "('springrag', 'controller', 'runTest', 'ChatResponse')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'librechat', 'runTest', 'mockFilePart')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'librechat', 'VectorChunk', 'mapOf')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('controller', 'librechat', 'every', 'findPageRendering')",
"methods": 5,
"unique": 4,
"unique_ratio": 0.8,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('controller', 'librechat', 'coEvery', 'ingestMultipart')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'config', 'DoclingConfig', 'assertThatThrownBy')",
"methods": 5,
"unique": 1,
"unique_ratio": 0.2,
"sore": "DoclingConfig.assertThatThrownBy.validateCriticalSettings.isInstanceOf.hasMessageContaining",
"sore_success": true
},
{
"context": "('service', 'docling', 'trim', 'lowercase')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "trim.lowercase.(warn)+",
"sore_success": true
},
{
"context": "('service', 'job', 'upsertStaging', 'of')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'query', 'trimIndent')",
"methods": 5,
"unique": 5,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'update', 'trimIndent')",
"methods": 5,
"unique": 2,
"unique_ratio": 0.4,
"sore": "update.trimIndent.(now.insertRow)?",
"sore_success": true
},
{
"context": "('batch', 'model', 'mapOf', 'mapOf')",
"methods": 5,
"unique": 3,
"unique_ratio": 0.6,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('springrag', 'testsupport', 'Builder')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Builder",
"sore_success": true
},
{
"context": "('springrag', 'testsupport', 'Any')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "Any",
"sore_success": true
},
{
"context": "('springrag', 'testsupport', 'get')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "get",
"sore_success": true
},
{
"context": "('tooling', 'embabel', 'ToolInvocationPolicyProperties', 'mapOf')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('cucumber', 'steps', 'requireNotNull', 'requireNotNull')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'config', 'registerProperties')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "registerProperties",
"sore_success": true
},
{
"context": "('springrag', 'config', 'assumeTrue', 'isDockerAvailable')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "assumeTrue.isDockerAvailable.start.pullAndWarmup",
"sore_success": true
},
{
"context": "('springrag', 'system', 'session', 'use')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('springrag', 'architecture', 'eFromProject()', 'ses()')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'mockk', 'mockk')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'JobStatus', 'every')",
"methods": 4,
"unique": 2,
"unique_ratio": 0.5,
"sore": "JobStatus.every.getJobStatus.get.uri.exchange.expectStatus.expectBody.(jsonPath.isEqualTo)+",
"sore_success": true
},
{
"context": "('springrag', 'controller', 'runTest', 'coEvery')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('controller', 'librechat', 'every', 'getOrCreateAgentKnowledgeBase')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('controller', 'librechat', 'every', 'getJobStatus')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('service', 'embedding', 'builder', 'inputType')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'health', '`when`', 'listModels')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('springrag', 'repository', 'ilder()', 'ery(\"')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'repository', 'leteByFilter(f', 'lterEquals(M')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "leteByFilter(f.lterEquals(M",
"sore_success": true
},
{
"context": "('repository', 'graph', 'parse', 'KnowledgeBaseNode')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'health', '`when`', 'healthCheckAsync')",
"methods": 4,
"unique": 3,
"unique_ratio": 0.75,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('service', 'graph', 'asJobId', 'asFilename')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('service', 'chat', 'runTest', 'ChatResponse')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'config', 'resolveUploadStorageUri')",
"methods": 4,
"unique": 1,
"unique_ratio": 0.25,
"sore": "resolveUploadStorageUri",
"sore_success": true
},
{
"context": "('service', 'job', 'JobParametersBuilder', 'addString')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'listener', 'state', 'every')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'createTempFile', 'apply')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'JobInstance', 'JobParametersBuilder')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'every', 'fetchTracking')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'knowledgebase', 'parse', 'KnowledgeBase')",
"methods": 4,
"unique": 4,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'capability', 'AgentExecutionContext')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "AgentExecutionContext",
"sore_success": true
},
{
"context": "('capability', 'support', 'runTest', 'TestRequest')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('rag', 'embabel', 'VectorChunk', 'mapOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rag', 'support', 'VectorChunk', 'mapOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('rag', 'support', 'every', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'wikipedia', 'every', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('agent', 'wikipedia', 'runTest', 'invoke')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('cucumber', 'steps', 'chat')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "chat",
"sore_success": true
},
{
"context": "('springrag', 'config', 'mockk', 'also')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'config', 'run', 'collectionPointCount')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "run.collectionPointCount",
"sore_success": true
},
{
"context": "('springrag', 'system', 'newClient', 'callTool')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'system', 'MultipartBodyBuilder', 'part')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "SKIP(large_alphabet)",
"sore_success": false
},
{
"context": "('springrag', 'architecture', 'assertNoMainProjectDependencies', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('test', 'kotlin', 'builder', 'build')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'architecture', 'scopeFromProject', 'filter')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'architecture', 'productionFiles', 'filter')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "productionFiles.filter.(contains.(assertTrue)?)+",
"sore_success": true
},
{
"context": "('springrag', 'architecture', 'productionClasses', 'withAnnotationOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'every', 'getJobStatus')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "every.getJobStatus.get.uri.exchange.expectStatus",
"sore_success": true
},
{
"context": "('springrag', 'controller', 'joinToString', 'warn')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "joinToString.warn.return ResponseEntity.status(HttpStatus.BAD_REQUEST)\n .body(ErrorResponse(\"VALIDATION_ERROR\", \"Validation failed\", errors)).status.body.ErrorResponse",
"sore_success": true
},
{
"context": "('springrag', 'controller', 'listOf', 'listOf')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'post', 'uri')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "post.uri.exchange.expectStatus.(expectBody.jsonPath.isEqualTo)?",
"sore_success": true
},
{
"context": "('springrag', 'controller', 'every', 'knowledgeBaseExists')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'controller', 'runTest', 'post')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "runTest.post.uri.bodyValue.(ChatRequest|SessionChatRequest).exchange.expectStatus",
"sore_success": true
},
{
"context": "('springrag', 'controller', 'JobStatus', 'now')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('controller', 'librechat', 'runTest', 'mockk')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "runTest.mockk.every.filename.assertFailsWith.ingestMultipart",
"sore_success": true
},
{
"context": "('springrag', 'config', 'assertThrows', 'EmbabelAiHttpClientProperties')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "assertThrows.EmbabelAiHttpClientProperties.ofSeconds",
"sore_success": true
},
{
"context": "('springrag', 'config', 'ChatMemoryConfig', 'chatMemory')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'config', 'DoclingConfig', 'validateCriticalSettings')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "DoclingConfig.validateCriticalSettings",
"sore_success": true
},
{
"context": "('springrag', 'health', '`when`', 'health')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'storage', 'buildImageKey', 'return storeObject(key, bytes, contentTypeFor(format))')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "buildImageKey.return storeObject(key, bytes, contentTypeFor(format)).storeObject.contentTypeFor",
"sore_success": true
},
{
"context": "('service', 'storage', 'parseStorageUri', 'return null')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('service', 'storage', 'resolveLocation', 'builder')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('service', 'storage', 'replace', 'ifBlank')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "replace.ifBlank.lowercase.return StorageUri.of(\"images/${jobId.value}/$sanitizedId.$extension\").of",
"sore_success": true
},
{
"context": "('service', 'storage', 'lowercase')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "lowercase",
"sore_success": true
},
{
"context": "('service', 'storage', 'isBlank', 'return null')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('repository', 'graph', 'runBlocking', 'createTestImage')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('repository', 'graph', 'parse', 'save')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'repository', 'every', 'similaritySearch')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('port', 'adapter', 'DocumentJobNode', 'now')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'graph', 'DocumentGraphJob', 'asDocumentId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'graph', 'asJobId', 'every')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "asJobId.every.(deleteByJobId.(assertDoesNotThrow)?)+",
"sore_success": true
},
{
"context": "('service', 'graph', 'emptyGraphDocument', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'system', 'runBlocking', 'adminClient')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'execute')",
"methods": 3,
"unique": 1,
"unique_ratio": 0.333,
"sore": "execute",
"sore_success": true
},
{
"context": "('service', 'job', 'every', 'process')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('springrag', 'batch', 'policy', 'assertTrue')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'listener', 'createJobExecution', 'createStepExecution')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('batch', 'listener', 'input', 'beforeProcess')",
"methods": 3,
"unique": 2,
"unique_ratio": 0.667,
"sore": "\u2205",
"sore_success": false
},
{
"context": "('batch', 'model', 'DocumentInput', 'asJobId')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'writer', 'processedDocument', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('batch', 'writer', 'runTest', 'GraphDocument')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'every', 'objectExists')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'JobInstance', 'JobExecution')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'createJobExecution', 'every')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'job', 'StagedUploadCleanupService', 'StorageProperties')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
},
{
"context": "('service', 'knowledgebase', 'every', 'existsById')",
"methods": 3,
"unique": 3,
"unique_ratio": 1.0,
"sore": "SKIP(too_diverse)",
"sore_success": false
}
],
"coverage": 8.7,
"elapsed_seconds": 0.07
}

264
tests/test_reduce.py Normal file
View file

@ -0,0 +1,264 @@
"""Tests for bex/reduce.py — Algorithm 4 (TODS 2010)."""
import pytest
from bex.reduce import (
build_soa_with_support, soa_distance, adjunct_support,
reduce_contexts, minimize_contexts, reduce_and_infer,
)
from bex.twotinf import build_soa
from bex.rwr0 import rwr0
class TestBuildSoaWithSupport:
"""Test support-annotated SOA building."""
def test_single_sequence(self):
seqs = [["a", "b", "c"]]
soa, supp = build_soa_with_support(seqs)
assert len(supp) > 0
# Should have edges: (src, a), (a, b), (b, c), (c, sink)
assert len(supp) == 4
def test_multiple_sequences_share_edges(self):
seqs = [["a", "b"], ["a", "b"]]
soa, supp = build_soa_with_support(seqs)
# Support keys are labeled tuples: (('SRC',), ('a',)), etc.
src_key = (('SRC',), ('a',))
assert src_key in supp
assert supp[src_key] == 2
def test_different_sequences(self):
seqs = [["a", "b"], ["a", "c"]]
soa, supp = build_soa_with_support(seqs)
# Both share (src, a) but diverge after
src_key = (('SRC',), ('a',))
assert src_key in supp
assert supp[src_key] == 2
def test_empty_sequence(self):
seqs = [[]]
soa, supp = build_soa_with_support(seqs)
empty_key = (('SRC',), ('SINK',))
assert empty_key in supp
class TestSoaDistance:
"""Test SOA edit distance (Definition 14)."""
def test_identical_soas(self):
seqs_a = [["a", "b"]]
seqs_b = [["a", "b"]]
_, supp_a = build_soa_with_support(seqs_a)
_, supp_b = build_soa_with_support(seqs_b)
assert soa_distance(supp_a, supp_b) == 0.0
def test_completely_disjoint(self):
seqs_a = [["a", "b"]]
seqs_b = [["x", "y"]]
_, supp_a = build_soa_with_support(seqs_a)
_, supp_b = build_soa_with_support(seqs_b)
dist = soa_distance(supp_a, supp_b)
# They share src->first and last->sink edges
# But the middle edges are completely different
assert dist > 0.5
def test_partial_overlap(self):
seqs_a = [["a", "b", "c"]]
seqs_b = [["a", "b", "d"]]
_, supp_a = build_soa_with_support(seqs_a)
_, supp_b = build_soa_with_support(seqs_b)
dist = soa_distance(supp_a, supp_b)
# Each SOA has 2 unique edges out of 4 total
# dist = 2/4 + 2/4 = 1.0 (formula sums both sides)
assert dist == 1.0
def test_asymmetric_support(self):
"""One SOA with high support shared edges, other with unique edges."""
seqs_a = [["a", "b"]] * 10 # (a,b) has support 10
seqs_b = [["a", "c"]] # (a,c) has support 1
_, supp_a = build_soa_with_support(seqs_a)
_, supp_b = build_soa_with_support(seqs_b)
dist = soa_distance(supp_a, supp_b)
# dist_a = 0 (all A edges in B? no - (a,b) not in B)
# Actually: E_A = {(SRC,a):10, (a,b):10, (b,SINK):10}
# F_B = {(SRC,a):1, (a,c):1, (c,SINK):1}
# E-F = {(a,b):10, (b,SINK):10} → only_a = 20, total_a = 30 → 2/3
# F-E = {(a,c):1, (c,SINK):1} → only_b = 2, total_b = 3 → 2/3
# dist = 2/3 + 2/3 ≈ 1.33... wait, that can't be right
# Actually dist can exceed 1.0 because it's two separate fractions summed
assert dist > 0.5
def test_symmetry(self):
seqs_a = [["a", "b", "c"]]
seqs_b = [["x", "y", "z"]]
_, supp_a = build_soa_with_support(seqs_a)
_, supp_b = build_soa_with_support(seqs_b)
assert soa_distance(supp_a, supp_b) == soa_distance(supp_b, supp_a)
def test_support_weighted(self):
# Edge with high support should contribute more to distance
seqs_a = [["a", "b"]] * 10 + [["a", "c"]]
seqs_b = [["a", "b"]] * 10 + [["a", "d"]]
_, supp_a = build_soa_with_support(seqs_a)
_, supp_b = build_soa_with_support(seqs_b)
dist = soa_distance(supp_a, supp_b)
# Distance should be small because (a,b) has high support in both
assert dist < 0.2
class TestAdjunctSupport:
"""Test SOA adjunction (line 6, Algorithm 4)."""
def test_basic_adjunction(self):
supp_a = {(0, 1): 5, (1, 2): 3}
supp_b = {(0, 1): 2, (1, 3): 4}
combined = adjunct_support(supp_a, supp_b)
assert combined[(0, 1)] == 7 # 5 + 2
assert combined[(1, 2)] == 3
assert combined[(1, 3)] == 4
def test_disjoint_edges(self):
supp_a = {(0, 1): 1}
supp_b = {(2, 3): 1}
combined = adjunct_support(supp_a, supp_b)
assert len(combined) == 2
def test_empty(self):
supp_a = {}
supp_b = {}
combined = adjunct_support(supp_a, supp_b)
assert combined == {}
class TestReduceContexts:
"""Test Reduce algorithm (Algorithm 4)."""
def test_no_merge_high_threshold(self):
"""With very high threshold, nothing should merge."""
contexts = {
"a": [["x", "y"]] * 5,
"b": [["p", "q"]] * 5,
}
merged, info = reduce_contexts(contexts, threshold=0.99)
assert info["merges"] == 0
assert len(merged) == 2
def test_no_merge_identical(self):
"""Identical contexts (dist=0) are NOT merged by Reduce.
From the paper: M := {(s, t) | 0 < distD(s, t) < ε}
dist=0 means already equivalent unified by Minimize, not Reduce.
"""
contexts = {
"a": [["x", "y"]] * 5,
"b": [["x", "y"]] * 5,
}
merged, info = reduce_contexts(contexts, threshold=0.5)
assert info["merges"] == 0 # No merge for identical contexts
assert len(merged) == 2
def test_merge_similar(self):
"""Similar contexts (0 < dist < threshold) should merge.
Use asymmetric support: many shared sequences, few unique ones.
This makes the unique edges have low support relative to shared edges.
"""
seqs_a = [["a", "b"]] * 10 + [["a", "c"]] # 10 shared, 1 unique
seqs_b = [["a", "b"]] * 10 + [["a", "d"]] # 10 shared, 1 unique
contexts = {
"a": seqs_a,
"b": seqs_b,
}
merged, info = reduce_contexts(contexts, threshold=0.5)
# dist ≈ 0.12 (2/33 + 2/33), well below threshold 0.5
assert info["merges"] >= 1
def test_small_contexts_preserved(self):
"""Contexts with < 2 sequences should be preserved."""
contexts = {
"a": [["x", "y"]], # Only 1 sequence
"b": [["p", "q"]] * 5,
}
merged, info = reduce_contexts(contexts, threshold=0.5)
assert "a" in merged # Preserved
assert "b" in merged
def test_merge_info_contains_log(self):
"""Merge log should record each merge."""
contexts = {
"a": [["a", "b", "c"]] * 5,
"b": [["a", "b", "d"]] * 5,
}
merged, info = reduce_contexts(contexts, threshold=0.5)
if info["merges"] > 0:
assert len(info["merge_log"]) == 1
assert "merged_into" in info["merge_log"][0]
assert "removed" in info["merge_log"][0]
def test_iterative_merging(self):
"""Multiple iterations should work correctly."""
# Create contexts that form a chain: a~b, b~c, but a!~c
contexts = {
"a": [["a", "b"]] * 5,
"b": [["a", "b", "c"]] * 5,
"c": [["a", "b", "c", "d"]] * 5,
}
merged, info = reduce_contexts(contexts, threshold=0.6)
# Should merge at least some pairs
assert info["iterations"] >= 1
class TestMinimizeContexts:
"""Test Minimize (Line 15, Algorithm 4)."""
def test_merge_same_sore(self):
"""Contexts with identical SOREs should be merged."""
# Both contexts produce the same SORE
contexts = {
"a": [["mockk"]] * 5,
"b": [["mockk"]] * 5,
}
minimized = minimize_contexts(contexts)
# Should merge into one context
assert len(minimized) == 1
total_seqs = sum(len(v) for v in minimized.values())
assert total_seqs == 10
def test_keep_different_sores(self):
"""Contexts with different SOREs should stay separate."""
contexts = {
"a": [["a", "b"]] * 5,
"b": [["x", "y"]] * 5,
}
minimized = minimize_contexts(contexts)
assert len(minimized) == 2
def test_empty_contexts(self):
"""Empty contexts should be handled gracefully."""
contexts = {}
minimized = minimize_contexts(contexts)
assert len(minimized) == 0
class TestReduceAndInfer:
"""Test full pipeline: Reduce + Minimize + Infer."""
def test_basic_pipeline(self):
contexts = {
"a": [["a", "b", "c"]] * 5,
"b": [["a", "b", "d"]] * 5,
}
result = reduce_and_infer(contexts, threshold=0.5)
assert "merged" in result
assert "infer_results" in result
assert "merge_info" in result
assert "minimize_info" in result
def test_coverage_count(self):
"""Coverage count should equal total methods in successful contexts."""
contexts = {
"a": [["a", "b"]] * 5,
"b": [["x", "y"]] * 5,
}
result = reduce_and_infer(contexts, threshold=0.99) # No merging
assert result["coverage_count"] >= 0