Files
2026-07-13 12:42:18 +08:00

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
}
}