157 lines
3.9 KiB
JSON
157 lines
3.9 KiB
JSON
{
|
|
"summary": "Analyzed 2 changed file(s):\n - 3 changed function(s)/class(es)\n - 2 affected flow(s)\n - 1 test gap(s)\n - Overall risk score: 0.72\n - Untested: rotate_token",
|
|
"risk_score": 0.72,
|
|
"changed_functions": [
|
|
{
|
|
"id": 101,
|
|
"kind": "Function",
|
|
"name": "rotate_token",
|
|
"qualified_name": "auth/session.py::rotate_token",
|
|
"file_path": "auth/session.py",
|
|
"line_start": 42,
|
|
"line_end": 78,
|
|
"language": "python",
|
|
"parent_name": null,
|
|
"is_test": false,
|
|
"risk_score": 0.72
|
|
},
|
|
{
|
|
"id": 102,
|
|
"kind": "Function",
|
|
"name": "validate_session",
|
|
"qualified_name": "auth/session.py::validate_session",
|
|
"file_path": "auth/session.py",
|
|
"line_start": 80,
|
|
"line_end": 112,
|
|
"language": "python",
|
|
"parent_name": null,
|
|
"is_test": false,
|
|
"risk_score": 0.41
|
|
},
|
|
{
|
|
"id": 103,
|
|
"kind": "Function",
|
|
"name": "format_expiry",
|
|
"qualified_name": "auth/display.py::format_expiry",
|
|
"file_path": "auth/display.py",
|
|
"line_start": 10,
|
|
"line_end": 18,
|
|
"language": "python",
|
|
"parent_name": null,
|
|
"is_test": false,
|
|
"risk_score": 0.1
|
|
}
|
|
],
|
|
"affected_flows": [
|
|
{
|
|
"id": 7,
|
|
"name": "login_handler -> rotate_token",
|
|
"entry_point_id": 90,
|
|
"depth": 4,
|
|
"node_count": 6,
|
|
"file_count": 3,
|
|
"criticality": 0.83,
|
|
"path": [90, 95, 101, 102, 110, 111],
|
|
"steps": [
|
|
{
|
|
"node_id": 90,
|
|
"name": "login_handler",
|
|
"kind": "Function",
|
|
"file": "auth/routes.py",
|
|
"line_start": 12,
|
|
"line_end": 40,
|
|
"qualified_name": "auth/routes.py::login_handler"
|
|
},
|
|
{
|
|
"node_id": 101,
|
|
"name": "rotate_token",
|
|
"kind": "Function",
|
|
"file": "auth/session.py",
|
|
"line_start": 42,
|
|
"line_end": 78,
|
|
"qualified_name": "auth/session.py::rotate_token"
|
|
}
|
|
],
|
|
"created_at": "2026-06-01T10:00:00"
|
|
},
|
|
{
|
|
"id": 9,
|
|
"name": "cli_main -> validate_session",
|
|
"entry_point_id": 120,
|
|
"depth": 3,
|
|
"node_count": 4,
|
|
"file_count": 2,
|
|
"criticality": 0.55,
|
|
"path": [120, 121, 102, 130],
|
|
"steps": [
|
|
{
|
|
"node_id": 120,
|
|
"name": "cli_main",
|
|
"kind": "Function",
|
|
"file": "cli.py",
|
|
"line_start": 5,
|
|
"line_end": 60,
|
|
"qualified_name": "cli.py::cli_main"
|
|
}
|
|
],
|
|
"created_at": "2026-06-01T10:00:00"
|
|
}
|
|
],
|
|
"test_gaps": [
|
|
{
|
|
"name": "rotate_token",
|
|
"qualified_name": "auth/session.py::rotate_token",
|
|
"file": "auth/session.py",
|
|
"line_start": 42,
|
|
"line_end": 78
|
|
}
|
|
],
|
|
"review_priorities": [
|
|
{
|
|
"id": 101,
|
|
"kind": "Function",
|
|
"name": "rotate_token",
|
|
"qualified_name": "auth/session.py::rotate_token",
|
|
"file_path": "auth/session.py",
|
|
"line_start": 42,
|
|
"line_end": 78,
|
|
"language": "python",
|
|
"parent_name": null,
|
|
"is_test": false,
|
|
"risk_score": 0.72
|
|
},
|
|
{
|
|
"id": 102,
|
|
"kind": "Function",
|
|
"name": "validate_session",
|
|
"qualified_name": "auth/session.py::validate_session",
|
|
"file_path": "auth/session.py",
|
|
"line_start": 80,
|
|
"line_end": 112,
|
|
"language": "python",
|
|
"parent_name": null,
|
|
"is_test": false,
|
|
"risk_score": 0.41
|
|
},
|
|
{
|
|
"id": 103,
|
|
"kind": "Function",
|
|
"name": "format_expiry",
|
|
"qualified_name": "auth/display.py::format_expiry",
|
|
"file_path": "auth/display.py",
|
|
"line_start": 10,
|
|
"line_end": 18,
|
|
"language": "python",
|
|
"parent_name": null,
|
|
"is_test": false,
|
|
"risk_score": 0.1
|
|
}
|
|
],
|
|
"functions_truncated": false,
|
|
"context_savings": {
|
|
"estimated": true,
|
|
"saved_tokens": 12159,
|
|
"saved_percent": 94
|
|
}
|
|
}
|