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
« 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 parse_checkov_json(data: dict) -> list[Finding]:
8 findings: list[Finding] = []
10 results = data.get("results", {}) if isinstance(data, dict) else {}
11 failed = results.get("failed_checks", []) if isinstance(results, dict) else []
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 )
29 return findings