- bex/reduce.py: Faithful implementation of Reduce with support-weighted SOA edit distance, adjunction, iterative merging, and Minimize - experiments/context_eval.py: Multi-codebase support (RAGSAK + Flask), Reduce experiments with thresholds 0.05-0.4 - tests/test_reduce.py: 24 tests covering all Reduce components - Flask cloned to external_refs/flask for cross-validation Results: - RAGSAK: 12.0% coverage (First 3 symbols) - Flask: 10.7% coverage (First 3 symbols) - Reduce has minimal impact (1-2 merges per codebase at ε=0.3) - Coverage ceiling appears to be ~10-12% for prefix-based grouping
562 lines
No EOL
12 KiB
JSON
562 lines
No EOL
12 KiB
JSON
{
|
|
"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
|
|
} |