Repository Analysis

keephq/keep

The open-source AIOps and alert management platform

16.5 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of keephq/keep, a Python project with 12,052 GitHub stars. SynthScan v2.0 examined 245,344 lines of code across 1738 source files, recording 2904 pattern matches distributed across 25 syntactic categories. The overall adjusted score of 16.5 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

16.5
Adjusted Score
16.5
Raw Score
100%
Time Factor
2026-07-13
Last Push
12.1K
Stars
Python
Language
245.3K
Lines of Code
1.7K
Files
2.9K
Pattern Hits
2026-07-14
Scan Date
0.09
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 5HIGH 145MEDIUM 278LOW 2476

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 2904 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers987 hits · 914 pts
SeverityFileLineSnippetContext
LOWkeep/workflowmanager/workflowstore.py55 def get_workflow_execution_with_logs(CODE
LOWkeep/workflowmanager/workflowstore.py198 def get_all_workflows_with_last_execution(CODE
LOWkeep/workflowmanager/workflowstore.py265 def _get_workflows_from_directory(CODE
LOWkeep/workflowmanager/workflowstore.py518 def _read_workflow_from_stream(self, stream) -> dict:CODE
LOWkeep/workflowmanager/workflowstore.py539 def get_random_workflow_templates(CODE
LOWkeep/workflowmanager/workflowscheduler.py710 def _finish_workflow_execution(CODE
LOWkeep/workflowmanager/workflowscheduler.py115 def _handle_interval_workflows(self):CODE
LOWkeep/workflowmanager/workflowscheduler.py284 def handle_manual_event_workflow(CODE
LOWkeep/workflowmanager/workflowscheduler.py355 def _get_unique_execution_number(self, fingerprint=None, workflow_id=None):CODE
LOWkeep/rulesengine/rulesengine.py361 def _process_event_for_history_based_rule(CODE
LOWkeep/iohandler/iohandler.py506 def _encode_single_quotes_in_double_quotes(self, s):CODE
LOWkeep/iohandler/iohandler.py576 def _render_template_with_context(CODE
LOWkeep/identitymanager/identitymanagerfactory.py143 def _backward_compatible_get_identity_manager(CODE
LOWkeep/identitymanager/identitymanager.py217 def get_user_permission_on_resource_type(CODE
LOWkeep/providers/providers_factory.py43def get_method_parameters_safe(raw_params: list[str]) -> list[str]:CODE
LOWkeep/providers/providers_factory.py145 def get_provider_required_config(provider_type: str) -> dict:CODE
LOWkeep/providers/providers_factory.py656 def get_default_deduplication_rules() -> list[DeduplicationRuleDto]:CODE
LOW…p/providers/jiraonprem_provider/jiraonprem_provider.py433 def _extract_project_key_from_board_name(self, board_name: str):CODE
LOW…p/providers/jiraonprem_provider/jiraonprem_provider.py495 def _extract_issue_key_from_issue_id(self, issue_id: str):CODE
LOWkeep/providers/pagerduty_provider/pagerduty_provider.py916 def _get_specific_incident_with_incident_key(self, incident_key: str): # Query Incident via incident_key (dedup_key)CODE
LOWkeep/providers/pagerduty_provider/pagerduty_provider.py939 def __get_all_incidents_or_alerts(self, incident_id: str = None, limit: int = 100):CODE
LOWkeep/providers/grafana_provider/grafana_provider.py662 def _is_legacy_alerting_enabled(self) -> bool:CODE
LOWkeep/providers/grafana_provider/grafana_provider.py733 def _setup_legacy_alerting_webhook(CODE
LOWkeep/providers/grafana_provider/grafana_provider.py1514 def query_datasource_for_topology(self):CODE
LOWkeep/providers/grafana_provider/grafana_provider.py1577 def __extract_schema_value_pair(results, query: str):CODE
LOWkeep/providers/amazonsqs_provider/amazonsqs_provider.py75 def get_client_id_from_caller(self):CODE
LOWkeep/providers/openshift_provider/openshift_provider.py107 def __test_connection_via_rest_api(self):CODE
LOWkeep/providers/openshift_provider/openshift_provider.py523 def __rollout_restart_deploymentconfig(self, name, namespace):CODE
LOWkeep/providers/datadog_provider/datadog_provider.py436 def add_incident_timeline_note(self, incident_id: str, note: str):CODE
LOWkeep/providers/datadog_provider/datadog_provider.py1442 def __get_service_deps_endpoint(api_client) -> Endpoint:CODE
LOWkeep/providers/datadog_provider/datadog_provider.py1564 def _translate_metric_query_to_span_query(CODE
LOWkeep/providers/ilert_provider/ilert_provider.py243 def __create_or_update_incident(CODE
LOWkeep/providers/splunk_provider/splunk_provider.py92 def __debug_fetch_users_response(self):CODE
LOWkeep/providers/gitlab_provider/gitlab_provider.py137 def __build_params_from_kwargs(self, kwargs: dict):CODE
LOWkeep/providers/newrelic_provider/newrelic_provider.py129 def __make_add_webhook_destination_query(self, url: str, name: str) -> dict:CODE
LOWkeep/providers/newrelic_provider/newrelic_provider.py150 def __make_delete_webhook_destination_query(self, destination_id: str):CODE
LOWkeep/providers/newrelic_provider/newrelic_provider.py510 def __get_webhook_destination_id_by_name_and_url(STRING
LOWkeep/providers/newrelic_provider/newrelic_provider.py546 def __add_webhook_destination(self, name: str, url: str) -> str | None:STRING
LOWkeep/providers/newrelic_provider/newrelic_provider.py560 def __get_channel_id_by_destination_and_name(self, destination_id: str, name: str):STRING
LOWkeep/providers/newrelic_provider/newrelic_provider.py659 def __get_workflow_by_name_and_channel(STRING
LOWkeep/providers/posthog_provider/posthog_provider.py147 def get_session_recording_domains(CODE
LOWkeep/providers/fluxcd_provider/test_fluxcd_provider.py97 def test_api_server_with_hyphen(self):CODE
LOWkeep/providers/fluxcd_provider/test_fluxcd_provider.py119 def test_list_git_repositories(self):CODE
LOWkeep/providers/fluxcd_provider/test_fluxcd_provider.py262 def test_get_fluxcd_resources(self):CODE
LOWkeep/providers/fluxcd_provider/test_fluxcd_provider.py326 def test_no_kubernetes_cluster(self):CODE
LOWkeep/providers/fluxcd_provider/fluxcd_provider.py783 def __get_alerts_from_resource(CODE
LOW…p/providers/statuscake_provider/statuscake_provider.py274 def __get_heartbeat_alerts_dto(self) -> list[AlertDto]:CODE
LOW…p/providers/statuscake_provider/statuscake_provider.py292 def __get_pagespeed_alerts_dto(self) -> list[AlertDto]:CODE
LOW…providers/appdynamics_provider/appdynamics_provider.py255 def __create_http_response_template(self, keep_api_url: str, api_key: str):CODE
LOWkeep/providers/jira_provider/jira_provider.py277 def __get_available_transitions(self, issue_id: str):CODE
LOWkeep/providers/jira_provider/jira_provider.py509 def _extract_project_key_from_board_name(self, board_name: str):CODE
LOWkeep/providers/jira_provider/jira_provider.py533 def _extract_issue_key_from_issue_id(self, issue_id: str):CODE
LOW…p/providers/quickchart_provider/quickchart_provider.py125 def __get_total_alerts_gaugae(self, counter: int):CODE
LOWkeep/providers/elastic_provider/elastic_provider.py76 def check_api_key_or_username_password(cls, values):CODE
LOWkeep/providers/elastic_provider/elastic_provider.py205 def get_neccessary_config_keys():CODE
LOWkeep/providers/kibana_provider/kibana_provider.py552 def format_alert_from_watcher(event: dict) -> AlertDto | list[AlertDto]:CODE
LOW…grafana_incident_provider/grafana_incident_provider.py512 def _update_incident_event_time(CODE
LOW…grafana_incident_provider/grafana_incident_provider.py601 def _update_incident_severity(CODE
LOWkeep/providers/kafka_provider/kafka_provider.py75 def get_client_id_from_caller(self):CODE
LOWkeep/providers/sumologic_provider/sumologic_provider.py238 def __update_existing_connection(self, connection_id: str, connection_payload):CODE
927 more matches not shown…
Excessive Try-Catch Wrapping843 hits · 884 pts
SeverityFileLineSnippetContext
LOWkeep/workflowmanager/workflowstore.py689 except Exception as e:CODE
LOWkeep/workflowmanager/workflowstore.py117 except Exception as e:CODE
LOWkeep/workflowmanager/workflowstore.py296 except Exception as e:CODE
LOWkeep/workflowmanager/workflowstore.py449 except Exception as e:CODE
LOWkeep/workflowmanager/workflowstore.py508 except Exception as e:CODE
LOWkeep/workflowmanager/workflowstore.py578 except Exception as e:CODE
LOWkeep/workflowmanager/workflowstore.py640 except Exception as e:CODE
LOWkeep/workflowmanager/workflowstore.py677 except Exception as e:CODE
LOWkeep/workflowmanager/workflowmanager.py87 except Exception as e:CODE
LOWkeep/workflowmanager/workflowmanager.py114 except Exception as ex:CODE
LOWkeep/workflowmanager/workflowmanager.py281 except Exception as e:CODE
LOWkeep/workflowmanager/workflowmanager.py352 except Exception:CODE
LOWkeep/workflowmanager/workflowmanager.py390 except Exception:CODE
LOWkeep/workflowmanager/workflowmanager.py414 except Exception:CODE
LOWkeep/workflowmanager/workflowmanager.py568 except Exception as e:STRING
LOWkeep/workflowmanager/workflowmanager.py700 except Exception as e:CODE
LOWkeep/workflowmanager/workflowmanager.py760 except Exception as e:CODE
LOWkeep/workflowmanager/workflowmanager.py777 except Exception as e:CODE
MEDIUMkeep/workflowmanager/workflowmanager.py99def _get_workflow_from_store(self, tenant_id, workflow_model):CODE
LOWkeep/workflowmanager/workflow.py137 except Exception as e:CODE
LOWkeep/workflowmanager/workflowscheduler.py684 except Exception:CODE
LOWkeep/workflowmanager/workflowscheduler.py694 except Exception:CODE
LOWkeep/workflowmanager/workflowscheduler.py704 except Exception:CODE
LOWkeep/workflowmanager/workflowscheduler.py60 except Exception:CODE
LOWkeep/workflowmanager/workflowscheduler.py64 except Exception:CODE
LOWkeep/workflowmanager/workflowscheduler.py125 except Exception as ex:CODE
LOWkeep/workflowmanager/workflowscheduler.py155 except Exception as e:CODE
LOWkeep/workflowmanager/workflowscheduler.py231 except Exception as e:CODE
LOWkeep/workflowmanager/workflowscheduler.py322 except Exception as e:CODE
LOWkeep/workflowmanager/workflowscheduler.py458 except Exception as e:CODE
LOWkeep/workflowmanager/workflowscheduler.py572 except Exception as e:CODE
LOWkeep/workflowmanager/workflowscheduler.py613 except Exception as e:CODE
LOWkeep/workflowmanager/workflowscheduler.py665 except Exception:CODE
LOWkeep/workflowmanager/workflowscheduler.py760 except Exception as e:CODE
LOWkeep/rulesengine/rulesengine.py101 except Exception:CODE
LOWkeep/rulesengine/rulesengine.py506 except Exception:CODE
LOWkeep/rulesengine/rulesengine.py544 except Exception:CODE
LOWkeep/rulesengine/rulesengine.py547 except Exception:CODE
LOWkeep/rulesengine/rulesengine.py562 except Exception:CODE
LOWkeep/rulesengine/rulesengine.py736 except Exception:CODE
LOWkeep/rulesengine/rulesengine.py746 except Exception:CODE
LOWkeep/iohandler/iohandler.py182 except Exception:CODE
LOWkeep/iohandler/iohandler.py243 except Exception as e:CODE
LOWkeep/iohandler/iohandler.py282 except Exception as e:CODE
LOWkeep/iohandler/iohandler.py431 except Exception as e:CODE
LOWkeep/iohandler/iohandler.py442 except Exception:CODE
LOWkeep/iohandler/iohandler.py647 except Exception:CODE
LOWkeep/identitymanager/authverifierbase.py174 except Exception:CODE
LOWkeep/identitymanager/authverifierbase.py191 except Exception:CODE
LOWkeep/identitymanager/authverifierbase.py309 except Exception:CODE
LOWkeep/identitymanager/authverifierbase.py386 except Exception:CODE
LOW…anager/identity_managers/noauth/noauth_authverifier.py37 except Exception:CODE
LOW…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py65 except Exception:CODE
LOW…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py70 except Exception:CODE
LOW…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py156 except Exception:CODE
LOW…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py170 except Exception:CODE
LOW…er/identity_managers/onelogin/onelogin_authverifier.py126 except Exception:CODE
LOW…er/identity_managers/onelogin/onelogin_authverifier.py138 except Exception:CODE
LOW…er/identity_managers/onelogin/onelogin_authverifier.py159 except Exception as e:CODE
LOW…itymanager/identity_managers/okta/okta_authverifier.py98 except Exception as e:CODE
783 more matches not shown…
Self-Referential Comments192 hits · 594 pts
SeverityFileLineSnippetContext
MEDIUMkeep/workflowmanager/workflowscheduler.py688 for future in list(self.futures): # Create a copy of futures setCODE
MEDIUM…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py104 # Define the priority order of rolesCOMMENT
MEDIUM…er/identity_managers/onelogin/onelogin_authverifier.py74 # Define the priority order of rolesCOMMENT
MEDIUMkeep/providers/cilium_provider/cilium_provider.py144 # Create a request for the last 1000 flowsCOMMENT
MEDIUM…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py169# This class is part of an EXPERIMENTAL API.COMMENT
MEDIUM…p/providers/servicenow_provider/servicenow_provider.py714 # The following code is tolerant to missing data.COMMENT
MEDIUMkeep/providers/datadog_provider/datadog_provider.py1156 # Create the alert DTOCOMMENT
MEDIUMkeep/providers/telegram_provider/telegram_provider.py224 # Create a new event loop for this threadCOMMENT
MEDIUMkeep/providers/bigquery_provider/bigquery_provider.py156 # Create the providerCOMMENT
MEDIUMkeep/providers/fluxcd_provider/test_fluxcd_provider.py17 # Create a mock kubernetes moduleCOMMENT
MEDIUMkeep/providers/fluxcd_provider/test_fluxcd_provider.py81 # Create the provider with mocked dependenciesCOMMENT
MEDIUMkeep/providers/fluxcd_provider/test_fluxcd_provider.py330 # Create a provider with no Kubernetes clientCOMMENT
MEDIUMkeep/providers/fluxcd_provider/test_fluxcd_provider.py367 # Create a provider with a mocked Kubernetes clientCOMMENT
MEDIUMkeep/providers/fluxcd_provider/test_fluxcd_provider.py390 # Create a provider with a mocked Kubernetes clientCOMMENT
MEDIUMkeep/providers/fluxcd_provider/test_fluxcd_provider.py405 # Create a new provider instance for the second part of the testCOMMENT
MEDIUMkeep/providers/fluxcd_provider/test_fluxcd_provider.py412 # Create a mock for the AppsV1ApiCOMMENT
MEDIUMkeep/providers/fluxcd_provider/fluxcd_provider.py882 # Create an Apps V1 API clientCOMMENT
MEDIUMkeep/providers/fluxcd_provider/fluxcd_provider.py892 # Create a mock AppsV1Api for testingCOMMENT
MEDIUMkeep/providers/fluxcd_provider/fluxcd_provider.py319 # Create a temporary file with the kubeconfig contentCOMMENT
MEDIUMkeep/providers/eks_provider/eks_provider.py642 # Create a botocore session with our credentialsCOMMENT
MEDIUMkeep/providers/opsgenie_provider/opsgenie_provider.py292 # Create an incidentCOMMENT
MEDIUMkeep/providers/wazuh_provider/custom-keep.py1# This file is not intended to be executed on the Keep side.COMMENT
MEDIUMkeep/providers/auth0_provider/auth0_provider.py137 # Create the providerCOMMENT
MEDIUMkeep/providers/sumologic_provider/sumologic_provider.py383 # Creating a sumo logic connectionCOMMENT
MEDIUM…crosoft-planner-provider/microsoft-planner-provider.py133 # Create a new task in the given planCOMMENT
MEDIUMkeep/providers/keep_provider/keep_provider.py701 # Create the workflowCOMMENT
MEDIUMkeep/secretmanager/gcpsecretmanager.py35 # Create the secret if it does not existCOMMENT
MEDIUMkeep/cli/cli.py379 # Create a new tableCOMMENT
MEDIUMkeep/cli/cli.py599 # Create a new tableCOMMENT
MEDIUMkeep/cli/cli.py655 # Create a new tableCOMMENT
MEDIUMkeep/cli/cli.py694 # Create a new tableCOMMENT
MEDIUMkeep/cli/cli.py870 # Create a new tableCOMMENT
MEDIUMkeep/cli/cli.py1079 # Create a new tableCOMMENT
MEDIUMkeep/cli/cli.py1361 # Create a new tableCOMMENT
MEDIUMkeep/cli/cli.py1534 # Define the FastAPI app running logic hereCOMMENT
MEDIUMkeep/topologies/topologies_service.py451 """This function is used for creating services manually. services.is_manual=True"""STRING
MEDIUMkeep/api/logging.py242 # Create a new logger specifically for this adapterCOMMENT
MEDIUMkeep/api/config.py48 """This function is called by the gunicorn server when it starts"""STRING
MEDIUMkeep/api/arq_worker.py91 # Create a new context that includes both the arq ctx and any other parametersCOMMENT
MEDIUMkeep/api/tasks/process_event_task.py699 # Create a session to be used across the processing taskCOMMENT
MEDIUMkeep/api/bl/ai_suggestion_bl.py327 # Create the incidentCOMMENT
MEDIUMkeep/api/core/db.py621 # Create a new workflowCOMMENT
MEDIUMkeep/api/core/db.py1585 # Create the queryCOMMENT
MEDIUMkeep/api/core/db.py1693 # Create the queryCOMMENT
MEDIUMkeep/api/core/db.py1919 # Create the queryCOMMENT
MEDIUMkeep/api/core/db.py2784 # Create a dictionary with deduplication stats for each ruleCOMMENT
MEDIUMkeep/api/core/db.py2854 # Create a dictionary from the resultsCOMMENT
MEDIUMkeep/api/core/db.py3027 # Create a complete list of timestamps within the specified rangeCOMMENT
MEDIUMkeep/api/core/db.py5849 # Create a mapping of incident_id to enrichmentCOMMENT
MEDIUMkeep/api/core/db.py5606 # Create the query using SQLModel's selectSTRING
MEDIUMkeep/api/core/db_on_start.py118 # Create the default api key for the default userCOMMENT
MEDIUMkeep/api/core/db_utils.py80 # Create a new MySQL connection with the obtained access tokenCOMMENT
MEDIUMkeep/api/models/db/incident.py236 # Create a temporary session to get the next running numberCOMMENT
MEDIUMkeep/api/models/db/alert.py131 # Define a one-to-one relationship to AlertEnrichment using alert_fingerprintCOMMENT
MEDIUMkeep/api/routes/settings.py175 # Create an HTML test emailCOMMENT
MEDIUMkeep/api/routes/workflows.py695 # Create the workflowCOMMENT
MEDIUMkeep/api/routes/workflows.py625 # Create the workflowCOMMENT
MEDIUMtests/test_counting.py27 # Create a current alertCOMMENT
MEDIUMtests/test_counting.py35 # Create a previous alert with an existing firing counterCOMMENT
MEDIUMtests/test_counting.py53 # Create an acknowledged alertCOMMENT
132 more matches not shown…
Cross-File Repetition68 hits · 340 pts
SeverityFileLineSnippetContext
HIGH…anager/identity_managers/noauth/noauth_authverifier.py0handles authentication and authorization for single tenant modeSTRING
HIGH…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py0handles authentication and authorization for single tenant modeSTRING
HIGH…dentitymanager/identity_managers/db/db_authverifier.py0handles authentication and authorization for single tenant modeSTRING
HIGHkeep/providers/zendesk_provider/zendesk_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGH…p/providers/salesforce_provider/salesforce_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/cilium_provider/cilium_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGH…p/providers/servicenow_provider/servicenow_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGH…p/providers/jiraonprem_provider/jiraonprem_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/mock_provider/mock_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGH…p/providers/mattermost_provider/mattermost_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/pagerduty_provider/pagerduty_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/python_provider/python_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/splunk_provider/splunk_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/gitlab_provider/gitlab_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/teams_provider/teams_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/telegram_provider/telegram_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/posthog_provider/posthog_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/signl4_provider/signl4_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGH…github_workflows_provider/github_workflows_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/jira_provider/jira_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/resend_provider/resend_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/netxms_provider/netxms_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/linear_provider/linear_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/flashduty_provider/flashduty_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/vectordev_provider/vectordev_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/opsgenie_provider/opsgenie_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/slack_provider/slack_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/squadcast_provider/squadcast_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/discord_provider/discord_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/sendgrid_provider/sendgrid_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/pushover_provider/pushover_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGH…s/gitlabpipelines_provider/gitlabpipelines_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/zenduty_provider/zenduty_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/trello_provider/trello_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/bash_provider/bash_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/airflow_provider/airflow_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/redmine_provider/redmine_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGH…providers/google_chat_provider/google_chat_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/twilio_provider/twilio_provider.py0no need to dispose of anything, so just do nothing.STRING
HIGHkeep/providers/cilium_provider/cilium_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGH…p/providers/servicenow_provider/servicenow_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGHkeep/providers/pagertree_provider/pagertree_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGHkeep/providers/mysql_provider/mysql_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGH…p/providers/clickhouse_provider/clickhouse_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGHkeep/providers/squadcast_provider/squadcast_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGHkeep/providers/databend_provider/databend_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGHkeep/providers/postgres_provider/postgres_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGHkeep/providers/mongodb_provider/mongodb_provider.py0validates that the user has the required scopes to use the provider.STRING
HIGH…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py0client and server classes corresponding to protobuf-defined services.STRING
HIGH…providers/cilium_provider/grpc/relay/relay_pb2_grpc.py0client and server classes corresponding to protobuf-defined services.STRING
HIGH…p/providers/cilium_provider/grpc/flow/flow_pb2_grpc.py0client and server classes corresponding to protobuf-defined services.STRING
HIGH…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py0if _version_not_supported: raise runtimeerror( f"the grpc package installed is at version {grpc_version}," + " but the gSTRING
HIGH…providers/cilium_provider/grpc/relay/relay_pb2_grpc.py0if _version_not_supported: raise runtimeerror( f"the grpc package installed is at version {grpc_version}," + " but the gSTRING
HIGH…p/providers/cilium_provider/grpc/flow/flow_pb2_grpc.py0if _version_not_supported: raise runtimeerror( f"the grpc package installed is at version {grpc_version}," + " but the gSTRING
HIGH…s/azuremonitoring_provider/azuremonitoring_provider.py0validates required configuration for prometheus's provider.STRING
HIGH…p/providers/prometheus_provider/prometheus_provider.py0validates required configuration for prometheus's provider.STRING
HIGHkeep/providers/netdata_provider/netdata_provider.py0validates required configuration for prometheus's provider.STRING
HIGH…p/providers/jiraonprem_provider/jiraonprem_provider.py0validate that the provider has the required scopes.STRING
HIGHkeep/providers/pagerduty_provider/pagerduty_provider.py0validate that the provider has the required scopes.STRING
HIGHkeep/providers/gitlab_provider/gitlab_provider.py0validate that the provider has the required scopes.STRING
8 more matches not shown…
Deep Nesting218 hits · 191 pts
SeverityFileLineSnippetContext
LOWkeep/workflowmanager/workflowstore.py342CODE
LOWkeep/workflowmanager/workflowstore.py584CODE
LOWkeep/workflowmanager/workflowmanager.py180CODE
LOWkeep/workflowmanager/workflowmanager.py287CODE
LOWkeep/workflowmanager/workflowscheduler.py408CODE
LOWkeep/workflowmanager/workflowscheduler.py710CODE
LOWkeep/rulesengine/rulesengine.py73CODE
LOWkeep/rulesengine/rulesengine.py249CODE
LOWkeep/rulesengine/rulesengine.py460CODE
LOWkeep/rulesengine/rulesengine.py680CODE
LOWkeep/iohandler/iohandler.py118CODE
LOWkeep/iohandler/iohandler.py189CODE
LOWkeep/iohandler/iohandler.py293CODE
LOWkeep/iohandler/iohandler.py506CODE
LOWkeep/iohandler/iohandler.py525CODE
LOWkeep/iohandler/iohandler.py295CODE
LOWkeep/identitymanager/rbac.py79CODE
LOWkeep/identitymanager/identitymanager.py232CODE
LOWkeep/identitymanager/authverifierbase.py239CODE
LOW…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py45CODE
LOW…er/identity_managers/onelogin/onelogin_authverifier.py46CODE
LOWkeep/providers/providers_factory.py253CODE
LOWkeep/providers/providers_factory.py479CODE
LOWkeep/providers/providers_service.py55CODE
LOWkeep/providers/providers_service.py475CODE
LOWkeep/providers/cilium_provider/cilium_provider.py125CODE
LOW…p/providers/servicenow_provider/servicenow_provider.py340CODE
LOW…p/providers/servicenow_provider/servicenow_provider.py971CODE
LOW…p/providers/servicenow_provider/servicenow_provider.py982CODE
LOW…p/providers/jiraonprem_provider/jiraonprem_provider.py433CODE
LOWkeep/providers/graylog_provider/graylog_provider.py549CODE
LOWkeep/providers/pagerduty_provider/pagerduty_provider.py315CODE
LOWkeep/providers/grafana_provider/grafana_provider.py445CODE
LOWkeep/providers/grafana_provider/grafana_provider.py678CODE
LOWkeep/providers/grafana_provider/grafana_provider.py733CODE
LOWkeep/providers/grafana_provider/grafana_provider.py843CODE
LOWkeep/providers/grafana_provider/grafana_provider.py893CODE
LOWkeep/providers/grafana_provider/grafana_provider.py1100CODE
LOWkeep/providers/zoom_chat_provider/zoom_chat_provider.py207CODE
LOWkeep/providers/aks_provider/aks_provider.py129CODE
LOWkeep/providers/amazonsqs_provider/amazonsqs_provider.py315CODE
LOWkeep/providers/openshift_provider/openshift_provider.py181CODE
LOWkeep/providers/openshift_provider/openshift_provider.py217CODE
LOWkeep/providers/openshift_provider/openshift_provider.py326CODE
LOWkeep/providers/openshift_provider/openshift_provider.py453CODE
LOWkeep/providers/datadog_provider/datadog_provider.py789CODE
LOWkeep/providers/datadog_provider/datadog_provider.py1015CODE
LOWkeep/providers/datadog_provider/datadog_provider.py1211CODE
LOWkeep/providers/datadog_provider/datadog_provider.py1317CODE
LOWkeep/providers/python_provider/python_provider.py25CODE
LOW…p/providers/uptimekuma_provider/uptimekuma_provider.py110CODE
LOWkeep/providers/ilert_provider/ilert_provider.py107CODE
LOW…p/providers/cloudwatch_provider/cloudwatch_provider.py399CODE
LOW…p/providers/cloudwatch_provider/cloudwatch_provider.py492CODE
LOW…oviders/victorialogs_provider/victorialogs_provider.py196CODE
LOWkeep/providers/splunk_provider/splunk_provider.py109CODE
LOWkeep/providers/teams_provider/teams_provider.py55CODE
LOWkeep/providers/telegram_provider/telegram_provider.py55CODE
LOW…ers/grafana_oncall_provider/grafana_oncall_provider.py83CODE
LOW…p/providers/incidentio_provider/incidentio_provider.py196CODE
158 more matches not shown…
Docstring Block Structure32 hits · 160 pts
SeverityFileLineSnippetContext
HIGHkeep/workflowmanager/workflowstore.py519 Parse a workflow from an IO stream. Args: stream (IOStream): The stream to read from STRING
HIGHkeep/identitymanager/identitymanagerfactory.py87 Load and instantiate a manager class based on the specified type and class. Args: manager_STRING
HIGHkeep/identitymanager/authverifierbase.py107 Main entry point for authentication and authorization. Args: request (Request): The incomiSTRING
HIGHkeep/identitymanager/authverifierbase.py151 Authenticate the request using either token, API key, or HTTP basic auth. Args: request (RSTRING
HIGHkeep/identitymanager/authverifierbase.py245 Extract the API key from various sources in the request. Args: request (Request): The incoSTRING
HIGHkeep/identitymanager/authverifierbase.py340 Verify the API key and return an authenticated entity. Args: request (Request): The incomiSTRING
HIGHkeep/identitymanager/authverifierbase.py454 Verify the bearer token and return an authenticated entity. Args: token (str): The bearer STRING
HIGHkeep/providers/gke_provider/gke_provider.py498Query GKE cluster resources. Args: command_type: Type of query to execute **kwargs: AddSTRING
HIGHkeep/providers/eks_provider/eks_provider.py383 Check if pod has shell access and return appropriate shell. Args: pod: The Kubernetes pod STRING
HIGHkeep/providers/sentry_provider/sentry_provider.py433 Get all issues for a project Args: project_slug (str): project slug Raises: STRING
HIGHkeep/providers/kibana_provider/kibana_provider.py142 Parse the raw body from various input types into a dictionary. Args: raw_body: Can be byteSTRING
HIGHkeep/providers/kibana_provider/kibana_provider.py264 Make a request to Kibana. Adds the API key to the headers. Args: method (POST|GET|PUT|DELSTRING
HIGHkeep/providers/auth0_provider/auth0_provider.py65 Query Auth0 logs. Args: log_type (str): The log type: https://auth0.com/docs/deploy-monitoSTRING
HIGHkeep/providers/base/base_provider.py414 Format an incoming alert. Args: event (dict): The raw provider event payload. RaiSTRING
HIGHkeep/providers/base/base_provider.py649 Setup a webhook for the provider. Args: tenant_id (str): _description_ keep_apSTRING
HIGHkeep/providers/base/base_provider.py943 Setup a webhook for the provider. Args: tenant_id (str): _description_ keep_apSTRING
HIGHkeep/secretmanager/awssecretmanager.py145 Reads a secret from AWS Secrets Manager. Args: secret_name (str): The name of the secret. STRING
HIGHkeep/parser/parser.py29Support both CLI and API workflows Args: workflow (dict): _description_ Raises: STRING
HIGHkeep/parser/parser.py769 Translate {{ <provider_id>.<config_id> }} to a provider id Args: provider_type (str): _desSTRING
HIGHkeep/parser/parser.py797 Parse provider config. If the provider config is a dict, return it as is. If the providSTRING
HIGHkeep/conditions/threshold_condition.py16Checks if this is a multithreshold condition. Args: compare_to (str): for single threshold could beSTRING
HIGHkeep/api/core/db.py2970 Calculate the distribution of incidents created over time for a specific tenant. Args: tenant_id (str)STRING
HIGHkeep/api/core/db.py3100 Calculate the distribution of WorkflowExecutions started over time, combined across all workflows for a specific teSTRING
HIGHkeep/api/core/db.py3178 Calculate the distribution of incidents created over time for a specific tenant. Args: tenant_id (str)STRING
HIGHkeep/api/core/db.py3252 Calculate the Mean Time to Resolve (MTTR) for incidents over time for a specific tenant. Args: tenant_STRING
HIGHkeep/api/core/cel_to_sql/sql_providers/base.py109 Converts a CEL (Common Expression Language) expression to an SQL string. Args: cel (str): TSTRING
HIGHkeep/api/alert_deduplicator/alert_deduplicator.py525 Updates an existing deduplication rule or creates a new one if the rule is a default rule. Args: STRING
HIGHkeep/api/alert_deduplicator/alert_deduplicator.py580 Deletes a deduplication rule by its ID. Args: rule_id (str): The ID of the deduplication ruSTRING
HIGHkeep/api/routes/pusher.py20 Authenticate a user to a private channel Args: request (Request): The request object tenant_idSTRING
HIGHkeep/api/routes/workflows.py808 Update a workflow Args: workflow_id (str): The workflow ID request (Request): The FastAPI RequSTRING
HIGHkeep/api/routes/workflows.py1159 Toggle the enabled/disabled state of a workflow Args: workflow_id (str): The workflow ID autheSTRING
HIGHkeep/functions/__init__.py505 Check if the given time or current time is between start_hour and end_hour and falls on a business day ArgSTRING
Cross-Language Confusion24 hits · 128 pts
SeverityFileLineSnippetContext
HIGHkeep/throttles/one_until_resolved_throttle.py34 # if the last time the alert were triggered it was in resolved status, return falseCOMMENT
HIGHkeep/rulesengine/rulesengine.py476 # Shahar: rules such as "(source != null)" causing an exception:COMMENT
HIGHkeep/api/core/db.py33 null,CODE
HIGHkeep/api/core/db.py3941 timeframe (int|null): Return incidents only for the last <N> daysSTRING
HIGHkeep/api/core/cel_to_sql/sql_providers/postgresql.py160 return f"({prop}::jsonb @> '[null]' OR {prop} IS NULL OR jsonb_array_length({prop}::jsonb) = 0)"CODE
HIGHkeep/api/core/cel_to_sql/sql_providers/mysql.py180 return f"(JSON_CONTAINS({prop}, '[null]') OR {prop} IS NULL OR JSON_LENGTH({prop}) = 0)"CODE
HIGHkeep/api/routes/rules.py103 # params can be {} for example on '(( source is not null ))'COMMENT
HIGHkeep/api/routes/rules.py218 ): # params can be {} for example on '(( source is not null ))'CODE
HIGHtests/test_workflows.py610 python script.py && rm script.pyCODE
HIGHtests/test_provisioning.py318 "KEEP_DASHBOARDS": '[{"dashboard_name":"Initial Dashboard","dashboard_config":{"layout":[{"i":"w-17282235035CODE
HIGHtests/test_provisioning.py333 '[{"dashboard_name":"New Dashboard","dashboard_config":{"layout":[{"i":"w-1728223503578","x":0,"y":0,"w":3,"h":3CODE
HIGHtests/test_provisioning.py283 "KEEP_DASHBOARDS": '[{"dashboard_name":"My Dashboard","dashboard_config":{"layout":[{"i":"w-1728223503577","CODE
HIGHtests/test_search_alerts.py1656 ("(incident.is_visible==false || incident.id==null)", 2),CODE
HIGHtests/test_search_alerts.py1656 ("(incident.is_visible==false || incident.id==null)", 2),CODE
HIGHtests/test_search_alerts.py630 "sql": "(assigned is null)",CODE
HIGHtests/test_search_alerts.py633 cel_query="(assigned == null)",CODE
HIGHtests/test_search_alerts.py688 cel_query="((metrics.requests > 100) && (metrics.errors.timeout > 15 || metrics.errors.server < 1))",CODE
HIGHtests/test_search_alerts.py1508 by alerts without incidents, incident.id==null,STRING
HIGHtests/test_search_alerts.py1600 the filter will show 1 alert if it is == null, (without incidents alive)STRING
HIGHtests/test_search_alerts.py1805 cel_query='((responseTimes[0] < 200 || responseTimes[1] > 200) && status == "resolved")',STRING
HIGHtests/test_search_alerts.py1883 search_query = 'event.value.listValue.values[0].numberValue == 100 && event.value.listValue.values[1].stringValue ==STRING
HIGHtests/test_workflow_cel_filter.py363 "metrics.cpu_usage > 90 && metrics.memory_usage >= 80",CODE
HIGHtests/test_iohandler.py239 "context_line": " error && captureException(error, { extra: { test } });",CODE
HIGHtests/test_iohandler.py444 expected_output = "Pod status report:\nPod name: pod1 || Namespace: default || Status: Running\nPod name: pod2 || NaCODE
Cross-Language Confusion (JS/TS)17 hits · 128 pts
SeverityFileLineSnippetContext
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js2print("=== Starting Environment Policy Evaluation ===");CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js11print("Evaluating policy for user ID: " + identity.getId());CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js14print("Requested resource: " + resource.getName());CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js22print("Requested scopes: " + scopeNames.join(", "));CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js26print("Client ID: " + contextAttributes.getValue("kc.client.id").asString(0));CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js27print(CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js31print(CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js37print("Checking resource attributes...");CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js39print("Resource attributes type: " + typeof resourceAttributes);CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js44 print("Env attribute found: " + (envAttribute !== null));CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js47 print("Env attribute value: " + envAttribute);CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js49 print("Has dev environment: " + hasDevEnv);CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js52 print("Environment check passed: env=dev found in resource attributes");CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js60 print("Environment check failed: env value is not 'dev'");CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js68 print("No env attribute found");CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js73 print("Error checking attributes: " + e.message);CODE
HIGH…ascript_providers/keep-abac-policy/keep-abac-policy.js81print("=== Environment Policy Evaluation Complete ===");CODE
Redundant / Tautological Comments81 hits · 105 pts
SeverityFileLineSnippetContext
LOWkeep/providers/cilium_provider/cilium_provider.py252 # Check if this source service belongs to any applicationsCOMMENT
LOWkeep/providers/pagerduty_provider/pagerduty_provider.py173 # Check if the current epoch time (in seconds) has passed the expiration timeCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py700 # Check if notification already existsCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py765 # Check if notification channel existsCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py306 # Check if this is a legacy alert based on structureSTRING
LOWkeep/providers/amazonsqs_provider/amazonsqs_provider.py304 # Check if status_value is a valid member of AlertStatusCOMMENT
LOWkeep/providers/openshift_provider/openshift_provider.py564 # Check if the pod existsCOMMENT
LOWkeep/providers/datadog_provider/datadog_provider.py996 # Check if there are more pagesCOMMENT
LOW…p/providers/cloudwatch_provider/cloudwatch_provider.py689 # Set StateChangeTime to current timeCOMMENT
LOWkeep/providers/bigquery_provider/bigquery_provider.py175 # Print the resultsSTRING
LOW…p/providers/kubernetes_provider/kubernetes_provider.py778 # Check if the pod existsCOMMENT
LOWkeep/providers/fluxcd_provider/fluxcd_provider.py884 # Check if client is available (it might be None in tests)COMMENT
LOWkeep/providers/fluxcd_provider/fluxcd_provider.py401 # Check if the GitRepository CRD existsCOMMENT
LOWkeep/providers/fluxcd_provider/fluxcd_provider.py434 # Check if we have a Kubernetes clientCOMMENT
LOWkeep/providers/fluxcd_provider/fluxcd_provider.py438 # Check if Flux CD is installedCOMMENT
LOWkeep/providers/fluxcd_provider/fluxcd_provider.py1218 # Check if it depends on a HelmChartCOMMENT
LOWkeep/providers/elastic_provider/elastic_provider.py169 # Check if the connection was successfulCOMMENT
LOWkeep/providers/kibana_provider/kibana_provider.py157 ): # Check if it's FormDataCODE
LOWkeep/providers/kibana_provider/kibana_provider.py662 # Check if this is the new webhook formatCOMMENT
LOWkeep/providers/keep_provider/keep_provider.py266 # Check if should transition to FIRINGCOMMENT
LOWkeep/providers/keep_provider/keep_provider.py875 # Check if the value might contain a ternary expressionCOMMENT
LOWkeep/secretmanager/awssecretmanager.py60 # Check if secret exists by trying to describe itCOMMENT
LOWkeep/topologies/topologies_service.py389 # Check if an application with the same name already exists for the tenantCOMMENT
LOWkeep/topologies/topology_processor.py290 # Check if incident should be resolvedCOMMENT
LOWkeep/topologies/topology_processor.py373 # Assign alerts to incidentCOMMENT
LOWkeep/api/arq_worker_gunicorn.py171 # Check if heartbeat is too oldCOMMENT
LOWkeep/api/consts.py36# Set ARQ_TASK_POOL_TO_EXECUTE to "none", "all", "basic_processing" or "ai"COMMENT
LOWkeep/api/tasks/process_event_task.py811 # Check if the last function matches the patternCOMMENT
LOWkeep/api/bl/enrichments_bl.py358 # Check if the alert has any of the attributes defined in matchersCOMMENT
LOWkeep/api/bl/dismissal_expiry_bl.py92 # Check if it's expired (current time > dismissedUntil)COMMENT
LOWkeep/api/core/demo_mode.py249 # Check if any service does not have an idCOMMENT
LOWkeep/api/models/alert_audit.py49 # Check if the current event is similar to the previous eventCOMMENT
LOWkeep/api/alert_deduplicator/alert_deduplicator.py71 # Check if the hash is already in the database.COMMENT
LOWkeep/api/routes/provider_images.py40 # Check if image already existsCOMMENT
LOWkeep/api/routes/providers.py694 # Check if method existsCOMMENT
LOWkeep/functions/__init__.py567 # Check if it's a business dayCOMMENT
LOWkeep/functions/__init__.py574 # Check if hour is between start_hour and end_hourCOMMENT
LOWtests/conftest.py168 # Check if the connection is establishedCOMMENT
LOWtests/test_enrichments.py245 # Check if the alert's service is now updated to "new_service"COMMENT
LOWtests/test_enrichments.py188 assert enriched_event == mock_alert_dto # Check if event is unchangedCODE
LOWtests/test_workflow_execution.py922# # Check if the workflow execution was successfulCOMMENT
LOWtests/test_workflow_execution.py315 # Check if the workflow execution was successfulSTRING
LOWtests/test_workflow_execution.py319 # Verify if the correct tier action was triggeredSTRING
LOWtests/test_workflow_execution.py488 # Check if the workflow execution was successfulSTRING
LOWtests/test_workflow_execution.py492 # Verify if the correct action was triggeredSTRING
LOWtests/test_workflow_execution.py599 # Check if the workflow execution was successfulSTRING
LOWtests/test_workflow_execution.py603 # Verify if the correct tier action was triggeredSTRING
LOWtests/test_workflow_execution.py1156 # Check if the actions were triggered as expectedSTRING
LOWtests/test_workflow_execution.py1328 # Check if the actions were triggered as expectedSTRING
LOWtests/test_workflow_cel_filter.py81 # Check if the workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py94 # Check if no new workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py112 # Check if the workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py125 # Check if no new workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py143 # Check if the workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py156 # Check if no new workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py176 # Check if the workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py191 # Check if no new workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py234 # Check if no new workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py297 # Check if the workflow was scheduled to runCOMMENT
LOWtests/test_workflow_cel_filter.py310 # Check if no new workflow was scheduled to runCOMMENT
21 more matches not shown…
Unused Imports108 hits · 87 pts
SeverityFileLineSnippetContext
LOWkeep/providers/cilium_provider/grpc/observer_pb2.py28CODE
LOWkeep/providers/cilium_provider/grpc/observer_pb2.py29CODE
LOWkeep/providers/pagerduty_provider/pagerduty_provider.py20CODE
LOW…s/grafana_provider/grafana_alert_format_description.py1CODE
LOWkeep/providers/grafana_provider/grafana_provider.py21CODE
LOWkeep/api/core/db.py67CODE
LOWkeep/api/core/db.py68CODE
LOWkeep/api/core/db.py69CODE
LOWkeep/api/core/db.py70CODE
LOWkeep/api/core/db.py71CODE
LOWkeep/api/core/db.py72CODE
LOWkeep/api/core/db.py73CODE
LOWkeep/api/core/db.py74CODE
LOWkeep/api/core/db.py75CODE
LOWkeep/api/core/db.py76CODE
LOWkeep/api/core/db.py77CODE
LOWkeep/api/core/db.py78CODE
LOWkeep/api/core/db.py79CODE
LOWkeep/api/core/db.py80CODE
LOWkeep/api/core/db.py81CODE
LOWkeep/api/core/db.py82CODE
LOWkeep/api/core/db_on_start.py27CODE
LOWkeep/api/core/db_on_start.py28CODE
LOWkeep/api/core/db_on_start.py29CODE
LOWkeep/api/core/db_on_start.py30CODE
LOWkeep/api/core/db_on_start.py31CODE
LOWkeep/api/core/db_on_start.py32CODE
LOWkeep/api/core/db_on_start.py33CODE
LOWkeep/api/core/db_on_start.py34CODE
LOWkeep/api/core/db_on_start.py35CODE
LOWkeep/api/core/db_on_start.py36CODE
LOWkeep/api/core/tracer.py3CODE
LOWkeep/api/core/tracer.py6CODE
LOWkeep/api/core/tracer.py7CODE
LOWkeep/api/utils/pagination.py7CODE
LOWkeep/api/models/incident.py19CODE
LOWkeep/functions/cyaml.py2CODE
LOWtests/test_auto_resolve_workflow.py5CODE
LOWtests/test_workflow_api.py6CODE
LOWtests/test_search_alerts_configuration.py10CODE
LOWtests/conftest.py24CODE
LOWtests/conftest.py28CODE
LOWtests/conftest.py30CODE
LOWtests/conftest.py31CODE
LOWtests/conftest.py32CODE
LOWtests/conftest.py33CODE
LOWtests/conftest.py34CODE
LOWtests/test_enrichments.py20CODE
LOWtests/test_enrichments.py21CODE
LOWtests/test_enrichments.py21CODE
LOWtests/test_rules_engine.py7CODE
LOWtests/test_rules_engine.py24CODE
LOWtests/test_metrics.py7CODE
LOWtests/test_provisioning.py10CODE
LOWtests/test_provisioning.py10CODE
LOWtests/test_auth.py7CODE
LOWtests/test_incidents.py1CODE
LOWtests/test_incidents.py17CODE
LOWtests/test_incidents.py32CODE
LOWtests/test_incidents.py49CODE
48 more matches not shown…
Modern Structural Boilerplate85 hits · 85 pts
SeverityFileLineSnippetContext
LOWkeep/server_jobs_bg.py9logger = logging.getLogger(__name__)CODE
LOWkeep/identitymanager/identitymanagerfactory.py13logger = logging.getLogger(__name__)CODE
LOW…identity_managers/onelogin/onelogin_identitymanager.py100 def update_group(self, group_name: str, members: list[str], roles: list[str]) -> None:CODE
LOW…er/identity_managers/onelogin/onelogin_authverifier.py12logger = logging.getLogger(__name__)CODE
LOW…itymanager/identity_managers/okta/okta_authverifier.py10logger = logging.getLogger(__name__)CODE
LOW…manager/identity_managers/okta/okta_identitymanager.py103 def update_group(self, group_name: str, members: list[str], roles: list[str]) -> None:CODE
LOWkeep/providers/providers_factory.py40logger = logging.getLogger(__name__)CODE
LOWkeep/providers/providers_service.py33logger = logging.getLogger(__name__)CODE
LOWkeep/providers/pagerduty_provider/pagerduty_provider.py32logger = logging.getLogger(__name__)CODE
LOWkeep/providers/grafana_provider/grafana_provider.py33logger = logging.getLogger(__name__)CODE
LOWkeep/providers/datadog_provider/datadog_provider.py55logger = logging.getLogger(__name__)CODE
LOW…ers/grafana_oncall_provider/grafana_oncall_provider.py18logger = logging.getLogger(__name__)CODE
LOWkeep/providers/fluxcd_provider/__init__.py8__all__ = ["FluxcdProvider"]CODE
LOWkeep/providers/zabbix_provider/zabbix_provider.py24logger = logging.getLogger(__name__)CODE
LOWkeep/providers/dynatrace_provider/dynatrace_provider.py22logger = logging.getLogger(__name__)CODE
LOWkeep/providers/mailgun_provider/mailgun_provider.py17logger = logging.getLogger(__name__)CODE
LOWkeep/providers/checkmk_provider/checkmk_provider.py13logger = logging.getLogger(__name__)CODE
LOWkeep/providers/vectordev_provider/vectordev_provider.py15logger = logging.getLogger(__name__)CODE
LOWkeep/providers/sendgrid_provider/sendgrid_provider.py19logger = logging.getLogger(__name__)CODE
LOWkeep/cli/cli.py56logger = logging.getLogger(__name__)CODE
LOWkeep/topologies/topologies_service.py28logger = logging.getLogger(__name__)CODE
LOWkeep/actions/actions_factory.py13logger = logging.getLogger(__name__)CODE
LOWkeep/api/arq_worker_gunicorn.py30logger = logging.getLogger(__name__)CODE
LOWkeep/api/logging.py28logger = logging.getLogger(__name__)CODE
LOWkeep/api/config.py23logger = logging.getLogger(__name__)CODE
LOWkeep/api/middlewares.py13logger = logging.getLogger(__name__)CODE
LOWkeep/api/api.py77logger = logging.getLogger(__name__)CODE
LOWkeep/api/api.py379logger = logging.getLogger(__name__)CODE
LOWkeep/api/arq_worker.py30logger = logging.getLogger(__name__)CODE
LOWkeep/api/tasks/process_watcher_task.py10logger = logging.getLogger(__name__)CODE
LOWkeep/api/tasks/process_topology_task.py17logger = logging.getLogger(__name__)CODE
LOWkeep/api/tasks/process_incident_task.py12logger = logging.getLogger(__name__)CODE
LOWkeep/api/tasks/process_event_task.py79logger = logging.getLogger(__name__)CODE
LOWkeep/api/bl/mapping_rules_provisioning.py11logger = logging.getLogger(__name__)CODE
LOWkeep/api/bl/incident_reports.py77logger = logging.getLogger(__name__)STRING
LOWkeep/api/core/alerts.py38logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/db.py86logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/db_on_start.py41logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/report_uptime.py15logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/db_utils.py29logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/facets.py21logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/incidents.py37logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/dependencies.py10logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/demo_mode.py23logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/limiter.py9logger = logging.getLogger(__name__)CODE
LOWkeep/api/core/cel_to_sql/cel_ast_converter.py46logger = logging.getLogger(__name__)CODE
LOWkeep/api/utils/enrichment_helpers.py18logger = logging.getLogger(__name__)CODE
LOWkeep/api/utils/tenant_utils.py18logger = logging.getLogger(__name__)CODE
LOWkeep/api/utils/email_utils.py30logger = logging.getLogger(__name__)CODE
LOWkeep/api/models/ai_external.py14logger = logging.getLogger(__name__)CODE
LOWkeep/api/models/alert.py18logger = logging.getLogger(__name__)CODE
LOWkeep/api/models/db/helpers.py12logger = logging.getLogger(__name__)CODE
LOWkeep/api/models/db/alert.py17logger = logging.getLogger(__name__)CODE
LOW…alert_deduplicator/deduplication_rules_provisioning.py9logger = logging.getLogger(__name__)CODE
LOWkeep/api/routes/provider_images.py13logger = logging.getLogger(__name__)CODE
LOWkeep/api/routes/alerts.py83logger = logging.getLogger(__name__)CODE
LOWkeep/api/routes/ai.py17logger = logging.getLogger(__name__)CODE
LOWkeep/api/routes/actions.py11logger = logging.getLogger(__name__)CODE
LOWkeep/api/routes/rules.py19logger = logging.getLogger(__name__)CODE
LOWkeep/api/routes/preset.py45logger = logging.getLogger(__name__)CODE
25 more matches not shown…
Verbosity Indicators48 hits · 75 pts
SeverityFileLineSnippetContext
LOWkeep/workflowmanager/workflowstore.py695 # Step 2: Process providers and add them to DTOCOMMENT
LOWkeep/workflowmanager/workflowstore.py660 # Step 1: Load workflow YAML and handle potential parsing errors more thoroughlyCOMMENT
LOWkeep/workflowmanager/workflowstore.py733 # Step 3: Extract triggers from workflowCOMMENT
LOWkeep/rulesengine/rulesengine.py119 # #If the alert recover its previous status, we need to check if there are any alerts with the sCOMMENT
LOWkeep/iohandler/iohandler.py336 # 0 == False, so we need to check if the value is not False explicitlyCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py925 # Step 2: Extract relevant datasources (Prometheus, Loki, Mimir)COMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py948 # Step 3: Query alerts from each datasourceCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py1012 # Step 4: Process and format the alertsCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py903 # Step 1: Get all datasourcesCOMMENT
LOWkeep/providers/keep_provider/keep_provider.py506 # if we need to check if_condition, handle the conditionCOMMENT
LOWkeep/parser/parser.py275 # before we can use cache, we need to check if new providers are added or deletedCOMMENT
LOWkeep/api/utils/enrichment_helpers.py32 # they are kept as a list of timestamps and we need to check if theCOMMENT
LOWkeep/api/utils/enrichment_helpers.py100 # if there is previous alert, we need to check if it has firing timeCOMMENT
LOWkeep/api/utils/enrichment_helpers.py113 # if there is no previous alert, we need to check if the alert is firingCOMMENT
LOWkeep/api/models/db/rule.py28# 2. scale - when event arrives, we need to check if the rule is applicable to the eventCOMMENT
LOWkeep-ui/features/filter/facet.tsx99 /** This variable stores placeholders for facet options that are selected, but don't exist.COMMENT
LOWkeep-ui/utils/apiUrl.ts3 // we need to check if we are on vercel or notCOMMENT
LOWtests/test_provisioning.py131 # Step 2: Change environment variables (simulating new provisioning)COMMENT
LOWtests/test_provisioning.py238 # Step 2: Change environment variables (simulating new provisioning)COMMENT
LOWtests/test_provisioning.py330 # Step 2: Change environment variables (simulating new provisioning)COMMENT
LOWtests/test_provisioning.py267 # Step 3: Verify if the new provider is provisioned after reloadingCOMMENT
LOWtests/test_provisioning.py355 # Step 3: Verify if the new dashboard is provisioned after reloadingCOMMENT
LOWtests/test_provider_reprovisioning.py34 # Step 1: Verify initial provider is provisionedCOMMENT
LOWtests/test_provider_reprovisioning.py51 # Step 2: Change environment variables to update provider configuration and mock reloadCOMMENT
LOWtests/test_provider_reprovisioning.py74 # Step 3: Verify the provider was updated with new configurationCOMMENT
LOWtests/test_dismissal_expiry_bug.py676 # Step 1: Create an alert that is NOT dismissed initiallyCOMMENT
LOWtests/test_dismissal_expiry_bug.py1070 # Step 3: Wait until the dismissedUntil timestamp has passed (as described in issue)COMMENT
LOWtests/test_dismissal_expiry_bug.py1074 # Step 4: Before running watcher - verify the bug existsCOMMENT
LOWtests/test_dismissal_expiry_bug.py116 # Step 1: Create an alert that is NOT dismissed initiallyCOMMENT
LOWtests/test_dismissal_expiry_bug.py149 # Step 2: Dismiss the alert with a future dismissUntil timestamp (1 hour from now)COMMENT
LOWtests/test_dismissal_expiry_bug.py187 # Step 3: Time travel to AFTER the dismissUntil timestamp has expiredCOMMENT
LOWtests/test_dismissal_expiry_bug.py263 # Step 1: Create alertsCOMMENT
LOWtests/test_dismissal_expiry_bug.py295 # Step 2: Dismiss the "temporary" alert for 2 hoursCOMMENT
LOWtests/test_dismissal_expiry_bug.py333 # Step 3: Time travel to after dismissal expiresCOMMENT
LOWtests/test_dismissal_expiry_bug.py709 # Step 2: Dismiss the alert with a future dismissUntil timestamp (1 hour from now)COMMENT
LOWtests/test_dismissal_expiry_bug.py747 # Step 3: Time travel to AFTER the dismissUntil timestamp has expiredCOMMENT
LOWtests/test_dismissal_expiry_bug.py863 # Step 1: Create an alertCOMMENT
LOWtests/test_dismissal_expiry_bug.py895 # Step 2: Dismiss the alert with status and disposable fields (like a maintenance workflow would)COMMENT
LOWtests/test_dismissal_expiry_bug.py921 # Step 3: Time travel past dismissal expiry and run watcherCOMMENT
LOWtests/test_dismissal_expiry_bug.py999 # Step 1: Send an alert with dismissed: false (as described in issue)COMMENT
LOWtests/test_dismissal_expiry_bug.py1033 # Step 2: Apply a workflow that enriches the alert (as described in issue)COMMENT
LOWtests/test_dismissal_expiry_bug.py1164 # Step 1: Create an alert that is NOT dismissed initiallyCOMMENT
LOWtests/test_dismissal_expiry_bug.py1196 # Step 2: Dismiss the alert with a future dismissUntil timestamp (1 hour from now)COMMENT
LOWtests/test_dismissal_expiry_bug.py1218 # Step 3: Time travel to AFTER the dismissUntil timestamp has expiredCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py182 # Step 1: Start infrastructureCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py186 # Step 2: Wait for Keep API to be healthyCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py191 # Step 3: Simulate alertCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py200 # Step 4: Check Redis keysCOMMENT
Decorative Section Separators21 hits · 68 pts
SeverityFileLineSnippetContext
MEDIUM…p/providers/servicenow_provider/servicenow_provider.py329 # -------------------------------------------------------------------------COMMENT
MEDIUM…p/providers/servicenow_provider/servicenow_provider.py331 # -------------------------------------------------------------------------COMMENT
MEDIUM…p/providers/servicenow_provider/servicenow_provider.py458 # -------------------------------------------------------------------------COMMENT
MEDIUM…p/providers/servicenow_provider/servicenow_provider.py460 # -------------------------------------------------------------------------COMMENT
MEDIUM…p/providers/servicenow_provider/servicenow_provider.py656 # -------------------------------------------------------------------------COMMENT
MEDIUM…p/providers/servicenow_provider/servicenow_provider.py658 # -------------------------------------------------------------------------COMMENT
MEDIUM…)/alerts/[id]/ui/__tests__/alerts-fingerprint.test.tsx22// ─── Mock navigation ─────────────────────────────────────────────────────────COMMENT
MEDIUM…)/alerts/[id]/ui/__tests__/alerts-fingerprint.test.tsx30// ─── Mock data hooks ─────────────────────────────────────────────────────────COMMENT
MEDIUM…)/alerts/[id]/ui/__tests__/alerts-fingerprint.test.tsx44// ─── Mock UI utilities ───────────────────────────────────────────────────────COMMENT
MEDIUM…)/alerts/[id]/ui/__tests__/alerts-fingerprint.test.tsx51// ─── Mock all heavy child components ────────────────────────────────────────COMMENT
MEDIUM…)/alerts/[id]/ui/__tests__/alerts-fingerprint.test.tsx104// ─── Helpers ─────────────────────────────────────────────────────────────────COMMENT
MEDIUM…)/alerts/[id]/ui/__tests__/alerts-fingerprint.test.tsx135// ─── Global setup ────────────────────────────────────────────────────────────COMMENT
MEDIUM…)/alerts/[id]/ui/__tests__/alerts-fingerprint.test.tsx167// ─── Tests ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_assignee_facet_filter.py61# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_assignee_facet_filter.py63# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_assignee_facet_filter.py6# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_assignee_facet_filter.py8# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_assignee_facet_filter.py109# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_assignee_facet_filter.py111# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_iohandler.py1028# ── fn.* Mustache lambda helper tests ────────────────────────────────────────COMMENT
MEDIUMtests/test_iohandler.py1078# ── Security regression tests (RCE via eval) ─────────────────────────────────COMMENT
Structural Annotation Overuse38 hits · 60 pts
SeverityFileLineSnippetContext
LOWkeep/workflowmanager/workflowstore.py695 # Step 2: Process providers and add them to DTOCOMMENT
LOWkeep/workflowmanager/workflowstore.py660 # Step 1: Load workflow YAML and handle potential parsing errors more thoroughlyCOMMENT
LOWkeep/workflowmanager/workflowstore.py733 # Step 3: Extract triggers from workflowCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py925 # Step 2: Extract relevant datasources (Prometheus, Loki, Mimir)COMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py948 # Step 3: Query alerts from each datasourceCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py1012 # Step 4: Process and format the alertsCOMMENT
LOWkeep/providers/grafana_provider/grafana_provider.py903 # Step 1: Get all datasourcesCOMMENT
LOWtests/test_provisioning.py131 # Step 2: Change environment variables (simulating new provisioning)COMMENT
LOWtests/test_provisioning.py238 # Step 2: Change environment variables (simulating new provisioning)COMMENT
LOWtests/test_provisioning.py330 # Step 2: Change environment variables (simulating new provisioning)COMMENT
LOWtests/test_provisioning.py267 # Step 3: Verify if the new provider is provisioned after reloadingCOMMENT
LOWtests/test_provisioning.py355 # Step 3: Verify if the new dashboard is provisioned after reloadingCOMMENT
LOWtests/test_provider_reprovisioning.py34 # Step 1: Verify initial provider is provisionedCOMMENT
LOWtests/test_provider_reprovisioning.py51 # Step 2: Change environment variables to update provider configuration and mock reloadCOMMENT
LOWtests/test_provider_reprovisioning.py74 # Step 3: Verify the provider was updated with new configurationCOMMENT
LOWtests/test_dismissal_expiry_bug.py676 # Step 1: Create an alert that is NOT dismissed initiallyCOMMENT
LOWtests/test_dismissal_expiry_bug.py1070 # Step 3: Wait until the dismissedUntil timestamp has passed (as described in issue)COMMENT
LOWtests/test_dismissal_expiry_bug.py1074 # Step 4: Before running watcher - verify the bug existsCOMMENT
LOWtests/test_dismissal_expiry_bug.py116 # Step 1: Create an alert that is NOT dismissed initiallyCOMMENT
LOWtests/test_dismissal_expiry_bug.py149 # Step 2: Dismiss the alert with a future dismissUntil timestamp (1 hour from now)COMMENT
LOWtests/test_dismissal_expiry_bug.py187 # Step 3: Time travel to AFTER the dismissUntil timestamp has expiredCOMMENT
LOWtests/test_dismissal_expiry_bug.py263 # Step 1: Create alertsCOMMENT
LOWtests/test_dismissal_expiry_bug.py295 # Step 2: Dismiss the "temporary" alert for 2 hoursCOMMENT
LOWtests/test_dismissal_expiry_bug.py333 # Step 3: Time travel to after dismissal expiresCOMMENT
LOWtests/test_dismissal_expiry_bug.py709 # Step 2: Dismiss the alert with a future dismissUntil timestamp (1 hour from now)COMMENT
LOWtests/test_dismissal_expiry_bug.py747 # Step 3: Time travel to AFTER the dismissUntil timestamp has expiredCOMMENT
LOWtests/test_dismissal_expiry_bug.py863 # Step 1: Create an alertCOMMENT
LOWtests/test_dismissal_expiry_bug.py895 # Step 2: Dismiss the alert with status and disposable fields (like a maintenance workflow would)COMMENT
LOWtests/test_dismissal_expiry_bug.py921 # Step 3: Time travel past dismissal expiry and run watcherCOMMENT
LOWtests/test_dismissal_expiry_bug.py999 # Step 1: Send an alert with dismissed: false (as described in issue)COMMENT
LOWtests/test_dismissal_expiry_bug.py1033 # Step 2: Apply a workflow that enriches the alert (as described in issue)COMMENT
LOWtests/test_dismissal_expiry_bug.py1164 # Step 1: Create an alert that is NOT dismissed initiallyCOMMENT
LOWtests/test_dismissal_expiry_bug.py1196 # Step 2: Dismiss the alert with a future dismissUntil timestamp (1 hour from now)COMMENT
LOWtests/test_dismissal_expiry_bug.py1218 # Step 3: Time travel to AFTER the dismissUntil timestamp has expiredCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py182 # Step 1: Start infrastructureCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py186 # Step 2: Wait for Keep API to be healthyCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py191 # Step 3: Simulate alertCOMMENT
LOWtests/e2e_tests/test_redis_sentinel_e2e_full.py200 # Step 4: Check Redis keysCOMMENT
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICALkeep/providers/openshift_provider/openshift_provider.py74 self._k8s_client.api_client.rest_client.pool_manager.clear()CODE
CRITICALkeep/providers/gke_provider/gke_provider.py184 self._client.api_client.rest_client.pool_manager.clear()CODE
CRITICALkeep/providers/eks_provider/eks_provider.py196 self._client.api_client.rest_client.pool_manager.clear()CODE
CRITICALkeep/secretmanager/vaultsecretmanager.py48 self.client.secrets.kv.v2.create_or_update_secret(CODE
CRITICALkeep/secretmanager/vaultsecretmanager.py57 secret = self.client.secrets.kv.v2.read_secret_version(path=secret_name)CODE
Fake / Example Data39 hits · 43 pts
SeverityFileLineSnippetContext
LOWkeep/providers/ilert_provider/ilert_provider.py427 message="Lorem Ipsum",STRING
LOWkeep/providers/teams_provider/teams_provider.py77 Example: [{"id": "user-id-123", "name": "John Doe"}, {"id": "john.doe@example.com", "name": "John Doe"}]STRING
LOWkeep/providers/signl4_provider/signl4_provider.py75 user="John Doe",CODE
LOWkeep/providers/signl4_provider/signl4_provider.py187 # user="John Doe",COMMENT
LOWkeep/providers/opsgenie_provider/opsgenie_provider.py361 # user="John Doe",COMMENT
LOWkeep/api/models/smtp.py27 "username": "user@example.com",CODE
LOWkeep-ui/app/(keep)/settings/settings.client.tsx133 name: "John Doe",CODE
LOWkeep-ui/shared/lib/__tests__/oauth2proxy-auth.test.ts75 "x-forwarded-user": "John Doe",CODE
LOWkeep-ui/shared/lib/__tests__/oauth2proxy-auth.test.ts84 expect(user!.name).toBe("John Doe");CODE
LOWkeep-ui/shared/lib/__tests__/oauth2proxy-auth.test.ts93 "x-forwarded-user": "Jane Doe",CODE
LOWkeep-ui/shared/lib/__tests__/oauth2proxy-auth.test.ts99 expect(user!.name).toBe("Jane Doe");CODE
LOWkeep-ui/shared/lib/__tests__/oauth2proxy-auth.test.ts100 expect(user!.email).toBe("Jane Doe");CODE
LOWkeep-ui/shared/lib/__tests__/oauth2proxy-auth.test.ts101 expect(user!.id).toBe("Jane Doe");CODE
LOWkeep-ui/shared/lib/__tests__/oauth2proxy-auth.test.ts240 "x-forwarded-email": "user@example.com",CODE
LOWkeep-ui/shared/lib/__tests__/object-utils.test.ts121 "user name": "John Doe",CODE
LOWkeep-ui/shared/lib/__tests__/object-utils.test.ts128 expect(getNestedValue(obj, "user name")).toBe("John Doe");CODE
LOWkeep-ui/shared/api/__tests__/ApiClient.test.ts37 user: { id: "1", name: "Test User", email: "test@test.com" },CODE
LOW…gets/alerts-table/ui/__tests__/alert-assignee.test.tsx29 name: "John Doe",CODE
LOW…gets/alerts-table/ui/__tests__/alert-assignee.test.tsx94 name: "John Doe",CODE
LOW…gets/alerts-table/ui/__tests__/alert-assignee.test.tsx117 name: "Jane Doe",CODE
LOW…gets/alerts-table/ui/__tests__/alert-assignee.test.tsx159 name: "John Doe",CODE
LOW…gets/alerts-table/ui/__tests__/alert-assignee.test.tsx182 "John Doe"CODE
LOW…gets/alerts-table/ui/__tests__/alert-assignee.test.tsx204 name: "John Doe",CODE
LOW…gets/alerts-table/ui/__tests__/alert-assignee.test.tsx221 expect(avatar).toHaveAttribute("data-name", "John Doe");CODE
LOWtests/test_servicenow_provider.py52 "assigned_to": {"display_value": "John Doe", "value": "abc123"},CODE
LOWtests/test_servicenow_provider.py65 assert result.assignee == "John Doe"CODE
LOWtests/test_teams_provider.py48 mentions=[{"id": "john.doe@example.com", "name": "John Doe"}],CODE
LOWtests/test_teams_provider.py89 assert entity["mentioned"]["name"] == "John Doe"CODE
LOWtests/test_teams_provider.py108 {"id": "john.doe@example.com", "name": "John Doe"},CODE
LOWtests/test_teams_provider.py131 assert entity1["mentioned"]["name"] == "John Doe"CODE
LOWtests/test_teams_provider.py156 mentions=[{"name": "John Doe"}], # Missing 'id' fieldCODE
LOWtests/test_teams_provider.py186 mentions='[{"id": "john.doe@example.com", "name": "John Doe"}]',CODE
LOWtests/test_teams_provider.py206 assert entity["mentioned"]["name"] == "John Doe"CODE
LOWtests/test_iohandler.py523 "result": {"customer_name": "Acme Corp", "tier": "enterprise"}CODE
LOWtests/test_iohandler.py466 "name": "John Doe",CODE
LOWtests/providers/jira_provider/test_jira_priority_fix.py21 "email": "test@test.com",CODE
LOWdocs/openapi.json1{"openapi": "3.0.2", "info": {"title": "Keep API", "description": "Rest API powering https://platform.keephq.dev and friCODE
LOW…ples/workflows/teams-adaptive-cards-with-mentions.yaml24 mentions: '[{"id": "john.doe@example.com", "name": "John Doe"}]'CODE
LOWkeycloak/generate_ldap.py10 "cn": "John Doe",CODE
AI Slop Vocabulary15 hits · 34 pts
SeverityFileLineSnippetContext
LOWkeep/workflowmanager/workflowscheduler.py365 # else, just return randomCOMMENT
LOWkeep/iohandler/iohandler.py253 # and its a dict, just return the dictCOMMENT
LOW…ty_managers/oauth2proxy/oauth2proxy_identitymanager.py38 # Implementation or just return NoneCOMMENT
LOW…ntity_managers/oauth2proxy/oauth2proxy_authverifier.py112 # map the role if its a mapped one, or just use the roleCOMMENT
MEDIUM…p/providers/jiraonprem_provider/jiraonprem_provider.py476 # todo: should be more robust way but that's enough for now. note that the user can use projectKey dCOMMENT
MEDIUMkeep/providers/fluxcd_provider/fluxcd_provider.py385 # Return None instead of raising an exception to make the provider more robustCOMMENT
MEDIUMkeep/providers/fluxcd_provider/fluxcd_provider.py1245 # Return empty topology to make the provider more robustCOMMENT
MEDIUMkeep/providers/fluxcd_provider/fluxcd_provider.py1364 # Return empty resources with error information to make the provider more robustCOMMENT
MEDIUMkeep/api/utils/tenant_utils.py303 # TODO: make it more robustCOMMENT
LOWkeep/api/models/alert.py222 # if there's no dismissUntil, return just return dismissedCOMMENT
LOWkeep/api/alert_deduplicator/alert_deduplicator.py266 # just return a default deduplication rule with lastReceived fieldCOMMENT
LOWkeep/api/alert_deduplicator/alert_deduplicator.py397 # else, just use the custom deduplication ruleCOMMENT
MEDIUMkeep/api/routes/providers.py51 # the more robust way is to try access KEEP_API_URL from another tool (such as wtfismy.com but the opposite)COMMENT
MEDIUMkeep/contextmanager/contextmanager.py1# TODO - refactor context manager to support multitenancy in a more robust wayCOMMENT
MEDIUM…tures/presets/presets-manager/lib/eval-with-context.ts73// this pattern is far from robustCOMMENT
AI Structural Patterns35 hits · 34 pts
SeverityFileLineSnippetContext
LOWkeep/workflowmanager/workflow.py23CODE
LOW…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py176CODE
LOW…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py206CODE
LOW…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py236CODE
LOW…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py266CODE
LOW…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py296CODE
LOW…ep/providers/cilium_provider/grpc/observer_pb2_grpc.py326CODE
LOW…p/providers/jiraonprem_provider/jiraonprem_provider.py513CODE
LOWkeep/providers/pagertree_provider/pagertree_provider.py207CODE
LOWkeep/providers/pagerduty_provider/pagerduty_provider.py710CODE
LOW…oviders/grafana_loki_provider/grafana_loki_provider.py166CODE
LOWkeep/providers/ilert_provider/ilert_provider.py316CODE
LOWkeep/providers/ilert_provider/ilert_provider.py348CODE
LOW…oviders/victorialogs_provider/victorialogs_provider.py196CODE
LOWkeep/providers/telegram_provider/telegram_provider.py55CODE
LOWkeep/providers/signl4_provider/signl4_provider.py91CODE
LOWkeep/providers/jira_provider/jira_provider.py546CODE
LOWkeep/providers/opsgenie_provider/opsgenie_provider.py151CODE
LOWkeep/providers/opsgenie_provider/opsgenie_provider.py254CODE
LOWkeep/providers/slack_provider/slack_provider.py140CODE
LOWkeep/providers/squadcast_provider/squadcast_provider.py164CODE
LOW…grafana_incident_provider/grafana_incident_provider.py279CODE
LOWkeep/providers/webhook_provider/webhook_provider.py169CODE
LOWkeep/providers/wazuh_provider/custom-keep.py137CODE
LOWkeep/providers/linearb_provider/linearb_provider.py67CODE
LOWkeep/providers/keep_provider/keep_provider.py648CODE
LOWkeep/api/observability.py108CODE
LOWkeep/api/bl/incidents_bl.py396CODE
LOWkeep/api/core/db.py2225CODE
LOWkeep/api/core/db.py3920CODE
LOWkeep/api/core/incidents.py377CODE
LOWkeep/api/core/incidents.py464CODE
LOWkeep/api/core/demo_mode.py435CODE
LOWkeep/api/routes/incidents.py129CODE
LOWtests/test_change_password.py28CODE
Over-Commented Block36 hits · 32 pts
SeverityFileLineSnippetContext
LOWkeep/rulesengine/rulesengine.py561 return str(left_val) != str(right_val)COMMENT
LOWkeep/iohandler/iohandler.py201 # break the string to tokensCOMMENT
LOWkeep/providers/fluxcd_provider/example.yaml41# token: MY_TOKENCOMMENT
LOW…s/incidentmanager_provider/incidentmanager_provider.py481 # keep_api_url="https://1064-2401-4900-1c0f-ae0f-dbba-8aae-8a51-8d29.ngrok-free.app/alerts/event/incidentmanagerCOMMENT
LOWkeep/api/models/db/incident.py241 )COMMENT
LOWkeep/contextmanager/contextmanager.py301 # },COMMENT
LOWkeep-ui/next-env.d.ts1/// <reference types="next" />COMMENT
LOWkeep-ui/auth.ts181 // Override profile since it uses fetch without customFetchCOMMENT
LOWkeep-ui/app/(keep)/rules/flatten-cel-ast.ts1// import { CelAst } from "@/utils/cel-ast";COMMENT
LOW…ures/workflows/ai-assistant/ui/WorkflowBuilderChat.tsx981 // {COMMENT
LOW…ures/workflows/ai-assistant/ui/WorkflowBuilderChat.tsx1001 // description: "The parameters of the step to test",COMMENT
LOW…ures/workflows/ai-assistant/ui/WorkflowBuilderChat.tsx1021 // {COMMENT
LOWtests/test_workflow_execution.py861 '"deleted incident: incident"\n'COMMENT
LOWtests/test_workflow_execution.py881# ):COMMENT
LOWtests/test_workflow_execution.py901# severity="critical",COMMENT
LOWtests/test_workflow_execution.py921COMMENT
LOWtests/test_iohandler.py821 expected_date = datetime.datetime(COMMENT
LOWtests/test_iohandler.py841# "duplicateReason": None,COMMENT
LOWtests/test_iohandler.py861# "dismissUntil": None,COMMENT
LOWtests/e2e_tests/test_end_to_end.py1# This file contains the end-to-end tests for Keep.COMMENT
LOWtests/e2e_tests/test_end_to_end.py41 install_webhook_provider,COMMENT
LOW…tests/incidents_alerts_tests/incidents_alerts_setup.py321# url = f"{KEEP_API_URL}/incidents/{incident_id}/alerts"COMMENT
LOW…tests/incidents_alerts_tests/incidents_alerts_setup.py341# f"Failed to query alerts for incident {incident_id} after {5} attempts"COMMENT
LOWexamples/workflows/openshift_pod_restart.yml121 - Scaled DeploymentConfig {{ alert.deploymentconfig_name }} to {{ alert.replicas }} replicasCOMMENT
LOWexamples/workflows/openshift_pod_restart.yml141# "deployment_name": "web-app",COMMENT
LOW…les/workflows/openshift_monitoring_and_remediation.yml201# "name": "High CPU Usage",COMMENT
LOW…les/workflows/openshift_monitoring_and_remediation.yml221# {COMMENT
LOWexamples/workflows/monday_create_pulse.yml21 # Specify the column IDs and their corresponding values for the new item/pulse.COMMENT
LOWexamples/workflows/webhook_example_foreach.yml41 # body:COMMENT
LOWscripts/migrate_to_elastic.py21# PUT /keep-alerts-TENANT-IDCOMMENT
LOWscripts/migrate_to_elastic.py41# "tags": {COMMENT
LOW.github/workflows/release-workflow-schema.yml101#COMMENT
LOW.github/workflows/release-workflow-schema.yml121# echo "branch=${{ github.ref_name }}" >> $GITHUB_OUTPUTCOMMENT
LOW.github/workflows/release-workflow-schema.yml141# '. + {version: $version, "$id": $id}' \COMMENT
LOW.github/workflows/release-workflow-schema.yml161# git config user.name "Keep Schema Bot"COMMENT
LOW.github/workflows/test-pr-ut-ui.yml41COMMENT
Slop Phrases5 hits · 13 pts
SeverityFileLineSnippetContext
MEDIUMkeep/providers/signalfx_provider/signalfx_provider.py273 # you must have User API access token and you can use the Org access tokenCOMMENT
MEDIUMkeep/api/routes/metrics.py81 # Optional, you can add labels to exported incidents.STRING
MEDIUMdocs/openapi.json1{"openapi": "3.0.2", "info": {"title": "Keep API", "description": "Rest API powering https://platform.keephq.dev and friCODE
MEDIUMscripts/simulate_rules.py2# Written for demonstration purposes onlyCOMMENT
LOWscripts/docs_generate_api_docs_from_openapi.sh6# Before running this script, make sure you have update the openapi.json from the backend & backend is in the latest staCOMMENT
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHkeep/api/routes/incidents.py390 description="Whether the incident update request was generated by AI",CODE
HIGHdocs/openapi.json1{"openapi": "3.0.2", "info": {"title": "Keep API", "description": "Rest API powering https://platform.keephq.dev and friCODE
Magic Placeholder Names2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHexamples/workflows/slack-workflow-trigger.yml34 # url: "https://api.keephq.dev/workflows/WORKFLOW_ID_TO_EXECUTE/run?alert={{alert.id}}&api_key=YOUR_APCOMMENT
HIGHexamples/workflows/slack-workflow-trigger.yml36 url: "https://api.keephq.dev/workflows/WORKFLOW_ID_TO_EXECUTE/run?name={{alert.name}}&api_key=YOUR_APICODE
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMkeep/api/core/cel_to_sql/properties_mapper.py238CODE
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWkeep/identitymanager/rbac.py13# TODO: implement a solid RBAC mechanism (probably OPA over Keycloak)COMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWkeep/providers/python_provider/python_provider.py65 # Example usageCOMMENT