Sweet spot: 0.01-0.05. At 0.01 RAGSAK gets 61 SOREs (26.1% cov) with real conventions like warn.status.body.ErrorResponse. At 0.05 coverage jumps to 45.4% but that pattern disappears. Flask dies at 0.15+. Current default min_coverage=0.2 is too aggressive for most codebases.
258 lines
No EOL
5.8 KiB
JSON
258 lines
No EOL
5.8 KiB
JSON
{
|
|
"codebase": "Flask",
|
|
"results": [
|
|
{
|
|
"threshold": 0.0,
|
|
"symbols_total": 1055,
|
|
"symbols_kept": 1055,
|
|
"seqs_total": 1424,
|
|
"seqs_surviving": 1109,
|
|
"contexts": 598,
|
|
"sore_successes": 25,
|
|
"total_methods": 1109,
|
|
"methods_in_good": 207,
|
|
"coverage": 18.7,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('append', 'append')",
|
|
"methods": 51,
|
|
"unique": 1,
|
|
"sore": "(append)+"
|
|
},
|
|
{
|
|
"context": "('render_template', 'render_template')",
|
|
"methods": 31,
|
|
"unique": 1,
|
|
"sore": "(render_template)+"
|
|
},
|
|
{
|
|
"context": "('abort', 'abort')",
|
|
"methods": 16,
|
|
"unique": 1,
|
|
"sore": "(abort)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 10,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('pop', 'pop')",
|
|
"methods": 10,
|
|
"unique": 1,
|
|
"sore": "(pop)+"
|
|
}
|
|
],
|
|
"elapsed": 0.05
|
|
},
|
|
{
|
|
"threshold": 0.01,
|
|
"symbols_total": 1055,
|
|
"symbols_kept": 47,
|
|
"seqs_total": 1424,
|
|
"seqs_surviving": 784,
|
|
"contexts": 173,
|
|
"sore_successes": 28,
|
|
"total_methods": 784,
|
|
"methods_in_good": 276,
|
|
"coverage": 35.2,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('append', 'append')",
|
|
"methods": 54,
|
|
"unique": 1,
|
|
"sore": "(append)+"
|
|
},
|
|
{
|
|
"context": "('render_template', 'render_template')",
|
|
"methods": 33,
|
|
"unique": 1,
|
|
"sore": "(render_template)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 19,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('abort', 'abort')",
|
|
"methods": 16,
|
|
"unique": 1,
|
|
"sore": "(abort)+"
|
|
},
|
|
{
|
|
"context": "('pop', 'pop')",
|
|
"methods": 15,
|
|
"unique": 1,
|
|
"sore": "(pop)+"
|
|
}
|
|
],
|
|
"elapsed": 0.13
|
|
},
|
|
{
|
|
"threshold": 0.02,
|
|
"symbols_total": 1055,
|
|
"symbols_kept": 20,
|
|
"seqs_total": 1424,
|
|
"seqs_surviving": 621,
|
|
"contexts": 86,
|
|
"sore_successes": 11,
|
|
"total_methods": 621,
|
|
"methods_in_good": 213,
|
|
"coverage": 34.3,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('append', 'append')",
|
|
"methods": 64,
|
|
"unique": 1,
|
|
"sore": "(append)+"
|
|
},
|
|
{
|
|
"context": "('render_template', 'render_template')",
|
|
"methods": 35,
|
|
"unique": 1,
|
|
"sore": "(render_template)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 34,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('pop', 'pop')",
|
|
"methods": 17,
|
|
"unique": 1,
|
|
"sore": "(pop)+"
|
|
},
|
|
{
|
|
"context": "('abort', 'abort')",
|
|
"methods": 16,
|
|
"unique": 1,
|
|
"sore": "(abort)+"
|
|
}
|
|
],
|
|
"elapsed": 0.07
|
|
},
|
|
{
|
|
"threshold": 0.05,
|
|
"symbols_total": 1055,
|
|
"symbols_kept": 5,
|
|
"seqs_total": 1424,
|
|
"seqs_surviving": 414,
|
|
"contexts": 16,
|
|
"sore_successes": 7,
|
|
"total_methods": 414,
|
|
"methods_in_good": 184,
|
|
"coverage": 44.4,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('append', 'append')",
|
|
"methods": 83,
|
|
"unique": 1,
|
|
"sore": "(append)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 53,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get', 'get')",
|
|
"methods": 23,
|
|
"unique": 4,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('route', 'route')",
|
|
"methods": 11,
|
|
"unique": 1,
|
|
"sore": "(route)+"
|
|
},
|
|
{
|
|
"context": "('route', 'route', 'get')",
|
|
"methods": 8,
|
|
"unique": 3,
|
|
"sore": "((route)+|(get)+)+"
|
|
}
|
|
],
|
|
"elapsed": 0.02
|
|
},
|
|
{
|
|
"threshold": 0.1,
|
|
"symbols_total": 1055,
|
|
"symbols_kept": 2,
|
|
"seqs_total": 1424,
|
|
"seqs_surviving": 237,
|
|
"contexts": 5,
|
|
"sore_successes": 5,
|
|
"total_methods": 237,
|
|
"methods_in_good": 237,
|
|
"coverage": 100.0,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('route', 'route', 'get')",
|
|
"methods": 83,
|
|
"unique": 5,
|
|
"sore": "((route)+|(get)+)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 60,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('route', 'route', 'route')",
|
|
"methods": 38,
|
|
"unique": 14,
|
|
"sore": "((route)+|(get)+)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get', 'get')",
|
|
"methods": 33,
|
|
"unique": 6,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('route', 'route')",
|
|
"methods": 23,
|
|
"unique": 1,
|
|
"sore": "(route)+"
|
|
}
|
|
],
|
|
"elapsed": 0.01
|
|
},
|
|
{
|
|
"threshold": 0.15,
|
|
"symbols_total": 1055,
|
|
"symbols_kept": 0,
|
|
"seqs_total": 1424,
|
|
"seqs_surviving": 0,
|
|
"contexts": 0,
|
|
"sore_successes": 0,
|
|
"total_methods": 0,
|
|
"methods_in_good": 0,
|
|
"coverage": 0,
|
|
"top_patterns": [],
|
|
"elapsed": 0.01
|
|
},
|
|
{
|
|
"threshold": 0.2,
|
|
"symbols_total": 1055,
|
|
"symbols_kept": 0,
|
|
"seqs_total": 1424,
|
|
"seqs_surviving": 0,
|
|
"contexts": 0,
|
|
"sore_successes": 0,
|
|
"total_methods": 0,
|
|
"methods_in_good": 0,
|
|
"coverage": 0,
|
|
"top_patterns": [],
|
|
"elapsed": 0.01
|
|
}
|
|
]
|
|
} |