Coverage for src \ sec_report_kit \ parsers \ bandit.py: 100%
16 statements
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-13 08:06 +0530
« prev ^ index » next coverage.py v7.14.0, created at 2026-05-13 08:06 +0530
1from __future__ import annotations
3from sec_report_kit.models import Finding
4from sec_report_kit.services.normalize import normalize_severity
7def _best_url(issue: dict) -> str:
8 cwe = issue.get("issue_cwe")
9 if isinstance(cwe, dict) and cwe.get("link"):
10 return str(cwe["link"])
11 if issue.get("more_info"):
12 return str(issue["more_info"])
13 return ""
16def parse_bandit_json(data: dict) -> list[Finding]:
17 findings: list[Finding] = []
19 results = data.get("results", []) if isinstance(data, dict) else []
20 for issue in results:
21 findings.append(
22 Finding(
23 source_type="python-sast",
24 target=str(issue.get("filename") or "Python"),
25 severity=normalize_severity(issue.get("issue_severity")),
26 vulnerability_id=str(issue.get("test_id") or "-"),
27 package=str(issue.get("test_name") or "-"),
28 installed_version="-",
29 fixed_version="-",
30 title=str(issue.get("issue_text") or "-"),
31 primary_url=_best_url(issue),
32 )
33 )
35 return findings