domains / / bridgecrewio/checkov
Safe dictionary access
Always use safe dictionary access patterns when handling potentially null or missing values. This prevents KeyError and AttributeError exceptions that can crash your application.
Always use safe dictionary access patterns when handling potentially null or missing values. This prevents KeyError and AttributeError exceptions that can crash your application.
Key practices to follow:
- Use
.get()with default values when accessing dictionaries:# Instead of conf["properties"]["siteConfig"] # Use this pattern: conf.get("properties", {}).get("siteConfig") - Validate types before performing operations:
# Before accessing nested attributes or methods: if isinstance(nic_bloc, dict) and nic_bloc.get('allow_ip_spoofing', [False])[0]: # Process nic_bloc - Use explicit checks for None vs. empty collections:
# For dictionaries with empty values vs None if each["change"]["before"] is None: # Check specifically for None each["change"]["before"] = {} - Handle deeply nested structures safely:
# For complex nested access: inline_suppressions_by_cve = inline_suppressions.get("cves", {}).get("byCve", []) for cve_suppression in inline_suppressions_by_cve: cve_id = cve_suppression.get("cveId") if cve_id: cve_by_cve_map[cve_id] = cve_suppression
This pattern reduces bugs, improves code readability, and eliminates the need for multiple conditional checks.