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

1from __future__ import annotations 

2 

3from sec_report_kit.models import Finding 

4from sec_report_kit.services.normalize import normalize_severity 

5 

6 

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

14 

15 

16def parse_bandit_json(data: dict) -> list[Finding]: 

17 findings: list[Finding] = [] 

18 

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 ) 

34 

35 return findings