Coverage for src \ sec_report_kit \ parsers \ checkov.py: 100%

11 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 parse_checkov_json(data: dict) -> list[Finding]: 

8 findings: list[Finding] = [] 

9 

10 results = data.get("results", {}) if isinstance(data, dict) else {} 

11 failed = results.get("failed_checks", []) if isinstance(results, dict) else [] 

12 

13 for issue in failed: 

14 guideline = issue.get("guideline") 

15 findings.append( 

16 Finding( 

17 source_type="checkov-iac", 

18 target=str(issue.get("file_path") or issue.get("resource") or "infrastructure-code"), 

19 severity=normalize_severity(issue.get("severity")), 

20 vulnerability_id=str(issue.get("check_id") or "-"), 

21 package=str(issue.get("check_name") or "checkov-rule"), 

22 installed_version="-", 

23 fixed_version="-", 

24 title=str(issue.get("check_name") or issue.get("guideline") or "Checkov finding"), 

25 primary_url=str(guideline) if guideline else "", 

26 ) 

27 ) 

28 

29 return findings