Prometheus-based Kubernetes Resource Recommendations
This report summarizes scanner evidence for robusta-dev/krr, a Python project with 4,745 GitHub stars. SynthScan examined 10,690 lines of code across 104 source files, recording 237 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 39.5 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 99 finding(s).
Are imports declared and package/API names verified? 90 finding(s).
Are wrappers, guards, and repeated structures necessary? 108 finding(s).
Which changes need focused human review? 237 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 237 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/formatters/test_csv_formatter.py | 34 | "hpa": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 104 | "kubeconfig": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 105 | "impersonate_user": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 106 | "impersonate_group": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 109 | "selector": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 112 | "prometheus_url": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 113 | "prometheus_auth_header": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 116 | "prometheus_cluster_label": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 117 | "prometheus_label": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 119 | "eks_managed_prom_profile_name": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 120 | "eks_access_key": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 121 | "eks_secret_key": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 123 | "eks_managed_prom_region": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 124 | "coralogix_token": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 131 | "width": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 132 | "file_output": null, | CODE |
| HIGH⚡ | tests/formatters/test_csv_formatter.py | 133 | "slack_output": null, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/__init__.py | 1 | CODE | |
| LOW | robusta_krr/main.py | 1 | CODE | |
| LOW | robusta_krr/main.py | 16 | CODE | |
| LOW | robusta_krr/core/runner.py | 5 | CODE | |
| LOW | robusta_krr/core/runner.py | 6 | CODE | |
| LOW | robusta_krr/core/runner.py | 14 | CODE | |
| LOW | robusta_krr/core/abstract/formatters.py | 1 | CODE | |
| LOW | robusta_krr/core/abstract/strategies.py | 1 | CODE | |
| LOW | robusta_krr/core/abstract/strategies.py | 5 | CODE | |
| LOW | robusta_krr/core/abstract/strategies.py | 15 | CODE | |
| LOW | robusta_krr/core/abstract/strategies.py | 140 | CODE | |
| LOW | robusta_krr/core/models/config.py | 1 | CODE | |
| LOW | robusta_krr/core/models/severity.py | 1 | CODE | |
| LOW | robusta_krr/core/models/result.py | 1 | CODE | |
| LOW | robusta_krr/core/models/allocations.py | 1 | CODE | |
| LOW | robusta_krr/core/integrations/openshift/__init__.py | 1 | CODE | |
| LOW | robusta_krr/core/integrations/openshift/__init__.py | 1 | CODE | |
| LOW | robusta_krr/core/integrations/prometheus/__init__.py | 1 | CODE | |
| LOW | robusta_krr/core/integrations/prometheus/__init__.py | 2 | CODE | |
| LOW | robusta_krr/core/integrations/prometheus/__init__.py | 2 | CODE | |
| LOW | robusta_krr/core/integrations/prometheus/__init__.py | 3 | CODE | |
| LOW | robusta_krr/core/integrations/prometheus/loader.py | 1 | CODE | |
| LOW | robusta_krr/core/integrations/prometheus/loader.py | 8 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/prometheus_utils.py | 1 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 1 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 2 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 2 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 2 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 3 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 3 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 3 | CODE | |
| LOW | …a_krr/core/integrations/prometheus/metrics/__init__.py | 3 | CODE | |
| LOW | …busta_krr/core/integrations/prometheus/metrics/base.py | 1 | CODE | |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 35 | CODE | |
| LOW | …busta_krr/core/integrations/kubernetes/config_patch.py | 4 | CODE | |
| LOW | robusta_krr/strategies/__init__.py | 1 | CODE | |
| LOW | robusta_krr/strategies/__init__.py | 2 | CODE | |
| LOW | robusta_krr/formatters/__init__.py | 1 | CODE | |
| LOW | robusta_krr/formatters/__init__.py | 2 | CODE | |
| LOW | robusta_krr/formatters/__init__.py | 3 | CODE | |
| LOW | robusta_krr/formatters/__init__.py | 4 | CODE | |
| LOW | robusta_krr/formatters/__init__.py | 5 | CODE | |
| LOW | robusta_krr/formatters/__init__.py | 6 | CODE | |
| LOW | robusta_krr/formatters/__init__.py | 7 | CODE | |
| LOW | robusta_krr/formatters/table.py | 14 | CODE | |
| LOW | robusta_krr/utils/version.py | 2 | CODE | |
| LOW | robusta_krr/utils/version.py | 4 | CODE | |
| LOW | robusta_krr/api/formatters.py | 1 | CODE | |
| LOW | robusta_krr/api/formatters.py | 1 | CODE | |
| LOW | robusta_krr/api/formatters.py | 1 | CODE | |
| LOW | robusta_krr/api/models.py | 1 | CODE | |
| LOW | robusta_krr/api/models.py | 1 | CODE | |
| LOW | robusta_krr/api/models.py | 1 | CODE | |
| LOW | robusta_krr/api/models.py | 1 | CODE | |
| LOW | robusta_krr/api/models.py | 2 | CODE | |
| LOW | robusta_krr/api/models.py | 2 | CODE | |
| LOW | robusta_krr/api/models.py | 2 | CODE | |
| LOW | robusta_krr/api/models.py | 3 | CODE | |
| LOW | robusta_krr/api/models.py | 3 | CODE | |
| LOW | robusta_krr/api/models.py | 4 | CODE | |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/core/runner.py | 82 | def __check_newer_version_available(self, current_version: str, latest_version: str) -> bool: | CODE |
| LOW⚡ | robusta_krr/core/runner.py | 262 | def _extract_storage_info_from_sas(self, sas_url: str) -> tuple[str, str]: | CODE |
| LOW | robusta_krr/core/runner.py | 326 | async def _calculate_object_recommendations(self, object: K8sObjectData) -> Optional[RunResult]: | CODE |
| LOW | robusta_krr/core/runner.py | 404 | async def _gather_object_allocations(self, k8s_object: K8sObjectData) -> Optional[ResourceScan]: | CODE |
| LOW | robusta_krr/core/models/config.py | 122 | def validate_prometheus_other_headers(cls, headers: Union[list[str], dict[str, str]]) -> dict[str, str]: | CODE |
| LOW | robusta_krr/core/models/config.py | 150 | def validate_job_grouping_labels(cls, v: Union[list[str], str, None]) -> Union[list[str], None]: | CODE |
| LOW | robusta_krr/core/models/severity.py | 43 | def register_severity_calculator(resource_type: ResourceType) -> Callable[[SeverityCalculator], SeverityCalculator]: | CODE |
| LOW | robusta_krr/core/models/severity.py | 83 | def default_severity_calculator( | CODE |
| LOW | robusta_krr/core/models/severity.py | 111 | def memory_severity_calculator( | CODE |
| LOW | robusta_krr/core/models/allocations.py | 32 | def format_recommendation_value(value: RecommendationValue) -> str: | CODE |
| LOW | …a_krr/core/integrations/prometheus/prometheus_utils.py | 24 | def generate_prometheus_config( | CODE |
| LOW | …busta_krr/core/integrations/prometheus/metrics/base.py | 79 | def get_prometheus_cluster_label(self) -> str: | CODE |
| LOW | …ions/prometheus/metrics_service/base_metric_service.py | 49 | def get_prometheus_cluster_label(self) -> str: | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 193 | def _get_match_expression_filter(expression) -> str: | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 284 | async def _list_namespaced_or_global_objects_batched( | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 348 | async def _list_namespaced_or_global_objects( | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 841 | def _try_create_cluster_loader(self, cluster: Optional[str]) -> Optional[ClusterLoader]: | CODE |
| LOW | robusta_krr/strategies/simple_limit.py | 48 | def calculate_memory_proposal(self, data: PodsTimeData, max_oomkill: float = 0) -> float: | CODE |
| LOW | robusta_krr/strategies/simple_limit.py | 142 | def __calculate_memory_proposal( | STRING |
| LOW | robusta_krr/strategies/simple.py | 47 | def calculate_memory_proposal(self, data: PodsTimeData, max_oomkill: float = 0) -> float: | CODE |
| LOW | robusta_krr/strategies/simple.py | 140 | def __calculate_memory_proposal( | STRING |
| LOW | robusta_krr/formatters/csv_raw.py | 50 | def _format_request_recommend(item: ResourceScan, resource: ResourceType, selector: str) -> str: | CODE |
| LOW | robusta_krr/utils/patch.py | 13 | def patched_setter_pod_failure_policy(self, on_pod_conditions): | CODE |
| LOW | robusta_krr/common/ssl_utils.py | 9 | def append_custom_certificate(custom_ca: str) -> None: | CODE |
| LOW | robusta_krr/common/ssl_utils.py | 16 | def create_temporary_certificate(custom_ca: str) -> None: | CODE |
| LOW | tests/test_grouped_jobs.py | 59 | async def test_list_all_groupedjobs_with_limit(mock_kubernetes_loader, mock_config): | CODE |
| LOW | tests/test_grouped_jobs.py | 87 | def mock_build_scannable_object(item, container, kind): | CODE |
| LOW | tests/test_grouped_jobs.py | 132 | async def test_list_all_groupedjobs_with_different_namespaces(mock_kubernetes_loader, mock_config): | CODE |
| LOW | tests/test_grouped_jobs.py | 153 | def mock_build_scannable_object(item, container, kind): | CODE |
| LOW | tests/test_grouped_jobs.py | 187 | async def test_list_all_groupedjobs_with_cronjob_owner_reference(mock_kubernetes_loader, mock_config): | CODE |
| LOW | tests/test_grouped_jobs.py | 209 | def mock_build_scannable_object(item, container, kind): | CODE |
| LOW | tests/test_grouped_jobs.py | 231 | async def test_list_all_groupedjobs_no_grouping_labels(mock_kubernetes_loader): | CODE |
| LOW | tests/test_grouped_jobs.py | 244 | async def test_list_all_groupedjobs_multiple_labels(mock_kubernetes_loader, mock_config): | CODE |
| LOW | tests/test_grouped_jobs.py | 264 | def mock_build_scannable_object(item, container, kind): | CODE |
| LOW | tests/test_grouped_jobs.py | 290 | async def test_list_all_groupedjobs_job_in_multiple_groups(mock_kubernetes_loader, mock_config): | CODE |
| LOW | tests/test_grouped_jobs.py | 309 | def mock_build_scannable_object(item, container, kind): | CODE |
| LOW | tests/test_grouped_jobs.py | 353 | async def test_groupedjobs_respects_global_batch_limit_across_namespaces(mock_kubernetes_loader, mock_config): | CODE |
| LOW | tests/test_grouped_jobs.py | 376 | async def test_groupedjobs_calls_each_explicit_namespace(mock_kubernetes_loader, mock_config): | CODE |
| LOW | tests/test_grouped_jobs.py | 392 | def mock_build_scannable_object(item, container, kind): | CODE |
| LOW | tests/test_grouped_jobs_metrics_logic.py | 8 | def test_grouped_job_extracts_job_names(): | CODE |
| LOW | tests/test_grouped_jobs_metrics_logic.py | 44 | def test_grouped_job_with_different_namespaces(): | CODE |
| LOW | tests/test_grouped_jobs_metrics_logic.py | 85 | def test_grouped_job_prometheus_query_construction(): | CODE |
| LOW | tests/test_grouped_jobs_metrics_logic.py | 133 | def test_grouped_job_batched_queries(): | STRING |
| LOW⚡ | tests/test_grouped_jobs_metrics_logic.py | 171 | def test_grouped_job_fallback_logic(): | CODE |
| LOW | tests/test_grouped_jobs_metrics_logic.py | 200 | def test_lightweight_job_info_structure(): | CODE |
| LOW | tests/test_grouped_jobs_metrics_logic.py | 227 | def test_grouped_job_multiple_groups_metrics_extraction(): | CODE |
| LOW | tests/conftest.py | 39 | def mock_list_scannable_objects(): | CODE |
| LOW | tests/conftest.py | 77 | def mock_prometheus_load_pods(): | CODE |
| LOW | tests/conftest.py | 89 | def mock_prometheus_get_history_range(): | CODE |
| LOW | tests/test_app_imports.py | 44 | def test_app_files_have_correct_initial_lines(file_path, file_name, expected_lines): | CODE |
| LOW | tests/test_krr.py | 72 | def test_cluster_namespace_list( | CODE |
| LOW | tests/test_runner.py | 19 | def test_exclude_severity_option(args: list[str], expected_exit_code: int) -> None: | CODE |
| LOW | tests/models/test_resource_allocations.py | 26 | def test_resource_allocation_supported_formats( | CODE |
| LOW | enforcer/patch_manager.py | 232 | def patch_container_resources( | CODE |
| LOW | enforcer/utils.py | 9 | def append_custom_certificate(custom_ca: str) -> None: | CODE |
| LOW | enforcer/utils.py | 16 | def create_temporary_certificate(custom_ca: str) -> None: | CODE |
| LOW | enforcer/resources/owner_store.py | 27 | def finalize_owner_initialization(self): | CODE |
| LOW | enforcer/resources/owner_store.py | 130 | def _cleanup_deleted_replica_sets(self): | CODE |
| LOW | examples/custom_severity_calculator.py | 12 | def percentage_severity_calculator( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | robusta_krr/core/abstract/strategies.py | 123 | # This method is intended to calculate resource recommendation based on history data and kubernetes object data. | COMMENT |
| MEDIUM⚡ | robusta_krr/core/abstract/strategies.py | 128 | # This method is intended to return a strategy by its name. | COMMENT |
| MEDIUM⚡ | robusta_krr/core/abstract/strategies.py | 137 | # This method is intended to return all the available strategies. | COMMENT |
| MEDIUM⚡ | robusta_krr/core/abstract/strategies.py | 144 | # This method is intended to return the type of settings used in strategy. | COMMENT |
| MEDIUM | tests/test_grouped_jobs.py | 51 | # Create a mock container with a proper name | COMMENT |
| MEDIUM | tests/test_grouped_jobs.py | 293 | # Create a job that matches multiple grouping labels | COMMENT |
| MEDIUM | tests/test_grouped_jobs_metrics_logic.py | 11 | # Create a mock GroupedJob object | COMMENT |
| MEDIUM | tests/test_grouped_jobs_metrics_logic.py | 88 | # Create a mock GroupedJob object | COMMENT |
| MEDIUM | tests/test_grouped_jobs_metrics_logic.py | 136 | # Create a grouped job with many lightweight jobs | COMMENT |
| MEDIUM⚡ | tests/test_grouped_jobs_metrics_logic.py | 174 | # Create a GroupedJob without _grouped_jobs | COMMENT |
| MEDIUM⚡ | tests/test_grouped_jobs_metrics_logic.py | 180 | # Create a mock API resource that doesn't have _grouped_jobs | COMMENT |
| MEDIUM | tests/test_grouped_jobs_metrics_logic.py | 203 | # Create a LightweightJobInfo instance | COMMENT |
| MEDIUM | tests/test_grouped_jobs_metrics_logic.py | 230 | # Create a job that appears in multiple groups | COMMENT |
| MEDIUM | enforcer/enforcer_main.py | 53 | # Define the mention pattern regex | COMMENT |
| MEDIUM | helm/krr-enforcer/templates/enforcer-cert-job.yaml | 93 | # Create a Secret with the certificates | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/core/runner.py | 63 | except Exception as e: | CODE |
| LOW | robusta_krr/core/runner.py | 89 | except Exception: | CODE |
| LOW | robusta_krr/core/runner.py | 203 | except Exception as e: | CODE |
| LOW⚡ | robusta_krr/core/runner.py | 259 | except Exception as e: | CODE |
| LOW⚡ | robusta_krr/core/runner.py | 272 | except Exception as e: | CODE |
| LOW | robusta_krr/core/runner.py | 361 | except Exception as e: | CODE |
| LOW | robusta_krr/core/runner.py | 477 | except Exception as e: | CODE |
| LOW | robusta_krr/core/runner.py | 502 | except Exception: | CODE |
| LOW | robusta_krr/core/runner.py | 574 | except Exception as e: | CODE |
| LOW | robusta_krr/core/integrations/prometheus/loader.py | 94 | except Exception as e: | CODE |
| LOW | robusta_krr/core/integrations/prometheus/loader.py | 101 | except Exception as e: | CODE |
| MEDIUM | robusta_krr/core/integrations/prometheus/loader.py | 98 | def get_cluster_summary(self) -> Dict[str, Any]: | CODE |
| LOW | …busta_krr/core/integrations/prometheus/metrics/base.py | 134 | except Exception as e: | CODE |
| LOW | …ometheus/metrics_service/prometheus_metrics_service.py | 216 | except Exception: | CODE |
| LOW | …ometheus/metrics_service/prometheus_metrics_service.py | 283 | except Exception as e: | STRING |
| MEDIUM | …ometheus/metrics_service/prometheus_metrics_service.py | 173 | def get_cluster_names(self) -> Optional[List[str]]: | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 582 | except Exception as e: | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 663 | except Exception as e: | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 788 | except Exception as e: | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 844 | except Exception as e: | CODE |
| MEDIUM | robusta_krr/core/integrations/kubernetes/__init__.py | 785 | def _try_list_hpa(self) -> dict[HPAKey, HPAData]: | CODE |
| LOW | robusta_krr/utils/version.py | 32 | except Exception: | CODE |
| LOW | robusta_krr/utils/version.py | 44 | except Exception: | CODE |
| LOW | robusta_krr/utils/intro.py | 20 | except Exception as e1: | CODE |
| LOW | robusta_krr/utils/intro.py | 25 | except Exception as e2: | CODE |
| MEDIUM | robusta_krr/utils/intro.py | 13 | def fetch_intro_message() -> str: | CODE |
| LOW | enforcer/enforcer_main.py | 179 | except Exception as e: | CODE |
| LOW | enforcer/enforcer_main.py | 240 | except Exception as e: | CODE |
| LOW | enforcer/resources/recommendation_store.py | 50 | except Exception: | CODE |
| LOW | enforcer/resources/recommendation_store.py | 71 | except Exception as e: | CODE |
| LOW | enforcer/resources/owner_store.py | 53 | except Exception: | CODE |
| LOW | enforcer/resources/owner_store.py | 94 | except Exception: | CODE |
| LOW | enforcer/resources/owner_store.py | 150 | except Exception as e: | CODE |
| LOW | enforcer/dal/supabase_dal.py | 216 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …ns/prometheus/metrics_service/mimir_metrics_service.py | 0 | finds the victoria metrics url using selectors. args: api_client (optional[apiclient]): a kubernetes api client. default | STRING |
| HIGH | …ometheus/metrics_service/prometheus_metrics_service.py | 0 | finds the victoria metrics url using selectors. args: api_client (optional[apiclient]): a kubernetes api client. default | STRING |
| HIGH | …s/prometheus/metrics_service/thanos_metrics_service.py | 0 | finds the victoria metrics url using selectors. args: api_client (optional[apiclient]): a kubernetes api client. default | STRING |
| HIGH | …prometheus/metrics_service/victoria_metrics_service.py | 0 | finds the victoria metrics url using selectors. args: api_client (optional[apiclient]): a kubernetes api client. default | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/core/runner.py | 108 | CODE | |
| LOW | robusta_krr/core/runner.py | 171 | CODE | |
| LOW | robusta_krr/core/models/result.py | 31 | CODE | |
| LOW | …ometheus/metrics_service/prometheus_metrics_service.py | 287 | CODE | |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 63 | CODE | |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 284 | CODE | |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 538 | CODE | |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 597 | CODE | |
| LOW | robusta_krr/formatters/csv_raw.py | 30 | CODE | |
| LOW | enforcer/params_utils.py | 21 | CODE | |
| LOW | enforcer/patch_manager.py | 138 | CODE | |
| LOW | enforcer/resources/kubernetes_resource_loader.py | 21 | CODE | |
| LOW | enforcer/resources/recommendation_store.py | 24 | CODE | |
| LOW | enforcer/resources/owner_store.py | 63 | CODE | |
| LOW | enforcer/resources/owner_store.py | 99 | CODE | |
| LOW | enforcer/dal/supabase_dal.py | 80 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | robusta_krr/core/abstract/formatters.py | 52 | Find a formatter by name in the registry. Args: name (str): The name of the formatter. Returns: | STRING |
| HIGH | enforcer/patch_manager.py | 16 | Convert Kubernetes CPU request string to float number of CPUs. Args: cpu_str: CPU string like "100m", | STRING |
| HIGH | enforcer/patch_manager.py | 55 | Convert Kubernetes memory request string to bytes. Args: mem_str: Memory string like "128Mi", "1Gi", " | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/__init__.py | 4 | __all__ = ["run", "__version__"] | CODE |
| LOW | robusta_krr/core/abstract/formatters.py | 82 | __all__ = ["register", "find"] | CODE |
| LOW⚡ | robusta_krr/core/abstract/strategies.py | 153 | __all__ = [ | CODE |
| LOW | robusta_krr/core/models/config.py | 204 | def set_config(config: Config) -> None: | CODE |
| LOW | robusta_krr/core/integrations/openshift/__init__.py | 3 | __all__ = ["TOKEN_LOCATION", "load_token"] | CODE |
| LOW | robusta_krr/utils/intro.py | 41 | __all__ = ["load_intro_message"] | CODE |
| LOW | robusta_krr/api/formatters.py | 3 | __all__ = ["register", "find", "list_available"] | CODE |
| LOW | robusta_krr/api/models.py | 7 | __all__ = [ | CODE |
| LOW | robusta_krr/api/strategies.py | 3 | __all__ = ["BaseStrategy", "StrategySettings"] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | robusta_krr/core/integrations/kubernetes/__init__.py | 344 | except (json.JSONDecodeError, KeyError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/main.py | 48 | return str # If the type is unknown, just use str and let pydantic handle it | CODE |
| LOW | robusta_krr/core/integrations/kubernetes/__init__.py | 69 | # just return the list if it's already initialized | COMMENT |
| LOW | enforcer/resources/owner_store.py | 34 | # Another thread is loading, just return | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/core/models/config.py | 236 | # NOTE: This class is just a proxy for _config. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/utils/version.py | 26 | # Check if there are uncommitted changes | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | robusta_krr/main.py | 55 | CODE |