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.
320 lines
No EOL
7.4 KiB
JSON
320 lines
No EOL
7.4 KiB
JSON
{
|
|
"codebase": "FastAPI",
|
|
"results": [
|
|
{
|
|
"threshold": 0.0,
|
|
"symbols_total": 1503,
|
|
"symbols_kept": 1503,
|
|
"seqs_total": 4811,
|
|
"seqs_surviving": 3657,
|
|
"contexts": 795,
|
|
"sore_successes": 53,
|
|
"total_methods": 3657,
|
|
"methods_in_good": 518,
|
|
"coverage": 14.2,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 89,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('HTTPException', 'HTTPException')",
|
|
"methods": 38,
|
|
"unique": 1,
|
|
"sore": "(HTTPException)+"
|
|
},
|
|
{
|
|
"context": "('update', 'update')",
|
|
"methods": 33,
|
|
"unique": 1,
|
|
"sore": "(update)+"
|
|
},
|
|
{
|
|
"context": "('post', 'post')",
|
|
"methods": 30,
|
|
"unique": 1,
|
|
"sore": "(post)+"
|
|
},
|
|
{
|
|
"context": "('User', 'User')",
|
|
"methods": 23,
|
|
"unique": 1,
|
|
"sore": "(User)+"
|
|
}
|
|
],
|
|
"elapsed": 0.52
|
|
},
|
|
{
|
|
"threshold": 0.01,
|
|
"symbols_total": 1503,
|
|
"symbols_kept": 23,
|
|
"seqs_total": 4811,
|
|
"seqs_surviving": 2678,
|
|
"contexts": 78,
|
|
"sore_successes": 14,
|
|
"total_methods": 2678,
|
|
"methods_in_good": 456,
|
|
"coverage": 17.0,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 123,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('put', 'put', 'json')",
|
|
"methods": 67,
|
|
"unique": 2,
|
|
"sore": "((put)+|(json)+)+"
|
|
},
|
|
{
|
|
"context": "('HTTPException', 'HTTPException')",
|
|
"methods": 53,
|
|
"unique": 1,
|
|
"sore": "(HTTPException)+"
|
|
},
|
|
{
|
|
"context": "('update', 'update')",
|
|
"methods": 41,
|
|
"unique": 1,
|
|
"sore": "(update)+"
|
|
},
|
|
{
|
|
"context": "('post', 'post')",
|
|
"methods": 32,
|
|
"unique": 1,
|
|
"sore": "(post)+"
|
|
}
|
|
],
|
|
"elapsed": 0.16
|
|
},
|
|
{
|
|
"threshold": 0.02,
|
|
"symbols_total": 1503,
|
|
"symbols_kept": 8,
|
|
"seqs_total": 4811,
|
|
"seqs_surviving": 2331,
|
|
"contexts": 32,
|
|
"sore_successes": 9,
|
|
"total_methods": 2331,
|
|
"methods_in_good": 430,
|
|
"coverage": 18.4,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 173,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('json', 'json')",
|
|
"methods": 73,
|
|
"unique": 1,
|
|
"sore": "(json)+"
|
|
},
|
|
{
|
|
"context": "('snapshot', 'snapshot')",
|
|
"methods": 42,
|
|
"unique": 1,
|
|
"sore": "(snapshot)+"
|
|
},
|
|
{
|
|
"context": "('post', 'post')",
|
|
"methods": 33,
|
|
"unique": 1,
|
|
"sore": "(post)+"
|
|
},
|
|
{
|
|
"context": "('raises', 'raises', 'get')",
|
|
"methods": 33,
|
|
"unique": 2,
|
|
"sore": "((raises)+|(get)+)+"
|
|
}
|
|
],
|
|
"elapsed": 0.09
|
|
},
|
|
{
|
|
"threshold": 0.05,
|
|
"symbols_total": 1503,
|
|
"symbols_kept": 5,
|
|
"seqs_total": 4811,
|
|
"seqs_surviving": 2277,
|
|
"contexts": 17,
|
|
"sore_successes": 5,
|
|
"total_methods": 2277,
|
|
"methods_in_good": 574,
|
|
"coverage": 25.2,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 234,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('TestClient', 'TestClient')",
|
|
"methods": 176,
|
|
"unique": 1,
|
|
"sore": "(TestClient)+"
|
|
},
|
|
{
|
|
"context": "('json', 'json')",
|
|
"methods": 73,
|
|
"unique": 1,
|
|
"sore": "(json)+"
|
|
},
|
|
{
|
|
"context": "('post', 'post')",
|
|
"methods": 48,
|
|
"unique": 1,
|
|
"sore": "(post)+"
|
|
},
|
|
{
|
|
"context": "('snapshot', 'snapshot')",
|
|
"methods": 43,
|
|
"unique": 1,
|
|
"sore": "(snapshot)+"
|
|
}
|
|
],
|
|
"elapsed": 0.08
|
|
},
|
|
{
|
|
"threshold": 0.1,
|
|
"symbols_total": 1503,
|
|
"symbols_kept": 3,
|
|
"seqs_total": 4811,
|
|
"seqs_surviving": 2182,
|
|
"contexts": 10,
|
|
"sore_successes": 8,
|
|
"total_methods": 2182,
|
|
"methods_in_good": 1997,
|
|
"coverage": 91.5,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('get', 'get', 'json')",
|
|
"methods": 951,
|
|
"unique": 6,
|
|
"sore": "((get)+|(json)+)+"
|
|
},
|
|
{
|
|
"context": "('TestClient', 'TestClient', 'get')",
|
|
"methods": 274,
|
|
"unique": 11,
|
|
"sore": "((TestClient)+|((get)+|(json)+)+)+"
|
|
},
|
|
{
|
|
"context": "('json', 'json')",
|
|
"methods": 248,
|
|
"unique": 1,
|
|
"sore": "(json)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 235,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('TestClient', 'TestClient')",
|
|
"methods": 184,
|
|
"unique": 1,
|
|
"sore": "(TestClient)+"
|
|
}
|
|
],
|
|
"elapsed": 0.05
|
|
},
|
|
{
|
|
"threshold": 0.15,
|
|
"symbols_total": 1503,
|
|
"symbols_kept": 2,
|
|
"seqs_total": 4811,
|
|
"seqs_surviving": 1998,
|
|
"contexts": 6,
|
|
"sore_successes": 5,
|
|
"total_methods": 1998,
|
|
"methods_in_good": 1987,
|
|
"coverage": 99.4,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('get', 'get', 'json')",
|
|
"methods": 1161,
|
|
"unique": 7,
|
|
"sore": "((get)+|(json)+)+"
|
|
},
|
|
{
|
|
"context": "('json', 'json')",
|
|
"methods": 425,
|
|
"unique": 1,
|
|
"sore": "(json)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 302,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get', 'get')",
|
|
"methods": 96,
|
|
"unique": 20,
|
|
"sore": "((get)+|(json)+)+"
|
|
},
|
|
{
|
|
"context": "('json', 'json', 'get')",
|
|
"methods": 3,
|
|
"unique": 2,
|
|
"sore": "((json)+|(get)+)+"
|
|
}
|
|
],
|
|
"elapsed": 0.04
|
|
},
|
|
{
|
|
"threshold": 0.2,
|
|
"symbols_total": 1503,
|
|
"symbols_kept": 2,
|
|
"seqs_total": 4811,
|
|
"seqs_surviving": 1998,
|
|
"contexts": 6,
|
|
"sore_successes": 5,
|
|
"total_methods": 1998,
|
|
"methods_in_good": 1987,
|
|
"coverage": 99.4,
|
|
"top_patterns": [
|
|
{
|
|
"context": "('get', 'get', 'json')",
|
|
"methods": 1161,
|
|
"unique": 7,
|
|
"sore": "((get)+|(json)+)+"
|
|
},
|
|
{
|
|
"context": "('json', 'json')",
|
|
"methods": 425,
|
|
"unique": 1,
|
|
"sore": "(json)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get')",
|
|
"methods": 302,
|
|
"unique": 1,
|
|
"sore": "(get)+"
|
|
},
|
|
{
|
|
"context": "('get', 'get', 'get')",
|
|
"methods": 96,
|
|
"unique": 20,
|
|
"sore": "((get)+|(json)+)+"
|
|
},
|
|
{
|
|
"context": "('json', 'json', 'get')",
|
|
"methods": 3,
|
|
"unique": 2,
|
|
"sore": "((json)+|(get)+)+"
|
|
}
|
|
],
|
|
"elapsed": 0.04
|
|
}
|
|
]
|
|
} |