A modern replacement for Redis and Memcached
This report presents the forensic synthetic code analysis of dragonflydb/dragonfly, a C++ project with 31,051 GitHub stars. SynthScan v2.0 examined 165,214 lines of code across 668 source files, recording 1080 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 7.6 places this repository in the Low 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).
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.
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.
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.
The scanner identified 1080 distinct pattern matches across 17 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/plot_memtier_latency.py | 53 | def extract_latency_timeseries(data, operation, ignore_last_seconds=3): | CODE |
| LOW | tools/plot_memtier_latency.py | 132 | def plot_latency_chart_interactive(data, output_file="latency_chart.html", open_browser=True): | CODE |
| LOW⚡ | tools/release_notes_generator.py | 1062 | def _build_commit_user_content(commit: Commit) -> str: | CODE |
| LOW⚡ | tools/release_notes_generator.py | 1404 | def _normalize_blacklist_terms(raw_terms: list[str]) -> tuple[str, ...]: | CODE |
| LOW⚡ | tools/release_notes_generator.py | 1414 | def _canonicalize_blacklist_text(text: str) -> str: | CODE |
| LOW⚡ | tools/release_notes_generator.py | 1418 | def _matches_highlight_blacklist( | CODE |
| LOW | tools/release_notes_generator.py | 551 | def _dedupe_highlights_section(notes: str) -> str: | CODE |
| LOW | tools/release_notes_generator.py | 1448 | def _score_announce_candidate(analyzed_commit: AnalyzedCommit, promoted_theme_size: int) -> float: | CODE |
| LOW | tools/release_notes_generator.py | 1474 | def _select_announce_highlights( | CODE |
| LOW | tools/release_notes_generator.py | 1508 | def build_composition_payload( | CODE |
| LOW | tools/release_notes_generator.py | 1565 | def _build_release_notes_user_message(payload: CompositionPayload) -> str: | CODE |
| LOW | tools/release_notes_generator.py | 1609 | def _build_announce_user_message(payload: CompositionPayload) -> str: | CODE |
| LOW | tools/release_notes_generator.py | 1677 | def _build_release_notes_empty_output(payload: CompositionPayload) -> str: | CODE |
| LOW | tools/release_notes_generator.py | 1684 | def _build_announce_empty_output(payload: CompositionPayload) -> str: | CODE |
| LOW | tools/release_notes_generator.py | 1701 | def _post_process_release_notes(_backend_name: str, notes: str) -> str: | CODE |
| LOW⚡ | tools/release_notes_generator.py | 523 | def _parse_commit_analysis_json(text: str) -> CommitAnalysis: | STRING |
| LOW | tools/cluster_mgr.py | 241 | def build_config_from_existing(args): | CODE |
| LOW | …ols/packaging/osrepos/scripts/wait_for_repo_version.py | 14 | def get_latest_release_version(): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 44 | async def test_cluster_flushall_during_migration( | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 96 | async def test_cluster_data_migration(df_factory: DflyInstanceFactory, interrupt: bool): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 173 | async def test_migration_serializer_expired_fields(df_factory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 215 | async def test_migration_with_key_ttl(df_factory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 258 | async def test_cluster_replication_migration( | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 332 | async def test_start_replication_during_migration( | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 396 | async def test_keys_expiration_during_migration(df_factory: DflyInstanceFactory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 439 | async def test_snapshoting_during_migration( | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 533 | async def test_cluster_migration_while_seeding( | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 589 | async def test_cluster_migrations_sequence( | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 647 | async def test_migration_one_after_another(df_factory: DflyInstanceFactory, df_seeder_factory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 720 | async def test_migration_rebalance_node(df_factory: DflyInstanceFactory, df_seeder_factory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 810 | async def verify_keys_match_number_of_index_docs(client, expected_num_keys): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 825 | async def test_remove_docs_on_cluster_migration(df_factory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 957 | async def test_cluster_migration_with_tiering(df_factory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 969 | async def test_cluster_migration_with_tiering_and_deletes(df_factory: DflyInstanceFactory): | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 979 | async def test_repeated_flushslots_with_replica(df_factory: DflyInstanceFactory): | CODE |
| LOW | tests/dragonfly/instance.py | 367 | def print_info_logs_to_debug_log(self): | CODE |
| LOW | tests/dragonfly/cluster_test_utils.py | 17 | def monotonically_increasing_port_number(): | CODE |
| LOW | tests/dragonfly/cluster_test_utils.py | 152 | async def wait_for_ft_index_creation(client, idx_name, timeout=5): | CODE |
| LOW | tests/dragonfly/cluster_test_utils.py | 178 | async def check_for_no_state_status(admin_clients): | CODE |
| LOW | tests/dragonfly/conftest.py | 584 | def with_ca_dir_tls_server_args(with_tls_server_args, with_tls_ca_cert_args): | CODE |
| LOW | tests/dragonfly/conftest.py | 649 | def pytest_runtest_makereport(item, call): | CODE |
| LOW | tests/dragonfly/seeder_test.py | 24 | async def test_static_collection_size(async_client: aioredis.Redis): | CODE |
| LOW | tests/dragonfly/seeder_test.py | 160 | def custom_command_generation_probability(): | CODE |
| LOW | tests/dragonfly/tiering_test.py | 105 | async def test_tiered_replication_strings_with_append(df_factory: DflyInstanceFactory, cache_mode): | CODE |
| LOW | tests/dragonfly/tiering_test.py | 197 | async def test_tiered_replication_with_hashes( | CODE |
| LOW | tests/dragonfly/tiering_test.py | 252 | async def test_tiered_replication_offloaded_listpack_hashes( | CODE |
| LOW | tests/dragonfly/tiering_test.py | 313 | async def test_tiered_replication_with_lists(df_factory: DflyInstanceFactory): | CODE |
| LOW | tests/dragonfly/tiering_test.py | 396 | async def test_concurrent_tiered_list_blocking_command(df_factory: DflyInstanceFactory): | CODE |
| LOW | tests/dragonfly/tiering_test.py | 446 | async def test_concurrent_tiered_list_materialization(df_factory: DflyInstanceFactory): | CODE |
| LOW | tests/dragonfly/tiering_test.py | 490 | async def test_concurrent_tiered_list_mutation(df_factory: DflyInstanceFactory, command: str): | CODE |
| LOW | tests/dragonfly/http_conf_test.py | 40 | async def test_metrics_does_not_count_http_connection(df_server: DflyInstance): | CODE |
| LOW | tests/dragonfly/http_conf_test.py | 51 | async def test_http_metrics_does_not_leak_read_buffer_capacity(df_server: DflyInstance): | CODE |
| LOW | tests/dragonfly/http_conf_test.py | 79 | async def test_no_password_main_port(df_server: DflyInstance): | CODE |
| LOW | tests/dragonfly/http_conf_test.py | 100 | async def test_no_password_on_admin(df_server: DflyInstance): | CODE |
| LOW | tests/dragonfly/http_conf_test.py | 126 | async def test_no_password_on_http_api(df_server: DflyInstance): | CODE |
| LOW | tests/dragonfly/http_conf_test.py | 164 | async def test_password_on_http_api(df_server: DflyInstance): | CODE |
| LOW | tests/dragonfly/http_conf_test.py | 185 | async def test_http_api_json_response(df_server: DflyInstance): | CODE |
| LOW | tests/dragonfly/proactor_threads_test.py | 16 | async def test_proactor_threads_flag_is_respected(df_factory: DflyInstanceFactory): | CODE |
| LOW | tests/dragonfly/proactor_threads_test.py | 30 | async def test_proactor_threads_env_var_is_respected(df_factory: DflyInstanceFactory, monkeypatch): | CODE |
| LOW | tests/dragonfly/proactor_threads_test.py | 50 | async def test_proactor_threads_flag_overrides_env_var( | CODE |
| 497 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/release_notes_generator.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| LOW | tools/generate-tls-files.sh | 1 | #!/bin/bash | COMMENT |
| LOW | tools/packaging/generate_debian_package.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | tools/local/monitoring/prometheus/prometheus.yml | 1 | # my global config | COMMENT |
| LOW | tools/replay/workers.go | 301 | } | COMMENT |
| LOW | tests/dragonfly/connection_test.py | 1701 | # HELLO contains a connection-specific client id, so normalize only that value before comparing | COMMENT |
| LOW | tests/dragonfly/connection_test.py | 4001 | ] | COMMENT |
| LOW | tests/dragonfly/search_test.py | 1381 | # | COMMENT |
| LOW | tests/dragonfly/search_test.py | 1401 | # See: src/core/search/indices.cc:622 - GeoIndex::RadiusSearch doesn't sort results | COMMENT |
| LOW | tests/dragonfly/search_test.py | 1421 | # # Should find cafes within the geo and vector constraints | COMMENT |
| LOW | tests/dragonfly/bull_sidekiq_test.py | 21 | # @dfly_args({"lock_on_hashtags": True}) | COMMENT |
| LOW | tests/integration/.run_ioredis_valid_test.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | tests/fakeredis/test/test_mixins/test_scan.py | 81 | # key_to_remove = keys[0] | COMMENT |
| LOW | .claude/skills/benchmark/scripts/capture_result.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .claude/skills/benchmark/scripts/monitor_fill.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .claude/skills/benchmark/scripts/bench_server.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | contrib/charts/dragonfly/Chart.yaml | 1 | apiVersion: v2 | COMMENT |
| LOW | contrib/charts/dragonfly/values.yaml | 41 | podSecurityContext: {} | COMMENT |
| LOW | contrib/charts/dragonfly/values.yaml | 101 | # -- Volume size to request for the PVC | COMMENT |
| LOW | contrib/charts/dragonfly/values.yaml | 121 | # -- name of the referenced issuer | COMMENT |
| LOW | contrib/charts/dragonfly/values.yaml | 201 | COMMENT | |
| LOW | .github/bullmq-skipped-tests.txt | 1 | # BullMQ tests excluded from CI runs against Dragonfly | COMMENT |
| LOW | .github/workflows/fuzz-pr.yml | 1 | # Run AFL++ fuzzing on PRs that touch C++ code. | COMMENT |
| LOW | .github/actions/builder/action.yml | 81 | if: ${{ inputs.enable-ccache == 'true' }} | COMMENT |
| LOW | fuzz/triage_crashes.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | src/core/oah_table.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/oah_table.h | 21 | #include "core/oah_ptr.h" | COMMENT |
| LOW | src/core/oah_set.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/cms.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/topk.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/topk.h | 21 | COMMENT | |
| LOW | src/core/topk.h | 41 | // degrade overall database throughput, hence the strict separation of concerns. | COMMENT |
| LOW | src/core/topk.h | 101 | // | COMMENT |
| LOW | src/core/top_keys.h | 1 | // Copyright 2025, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/top_keys.h | 21 | // increments, and does not use PMR allocators (which are required for strict memory | COMMENT |
| LOW | src/core/sharded_hash_map.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/sharded_hash_map.h | 21 | // Each shard contains an absl::flat_hash_map protected by two fiber-aware locks: | COMMENT |
| LOW | src/core/sharded_hash_map.h | 41 | // Thread safety guarantees: | COMMENT |
| LOW | src/core/sharded_hash_map.h | 121 | COMMENT | |
| LOW | src/core/oah_ptr.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/string_set.h | 1 | // Copyright 2022, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/dash_internal.h | 1 | // Copyright 2024, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/dash_internal.h | 521 | COMMENT | |
| LOW | src/core/dash_internal.h | 1281 | // we added an additional bit to the right, therefore we need to look at lsb of the extract. | COMMENT |
| LOW | src/core/dash_internal.h | 1521 | // Stash case. | COMMENT |
| LOW | src/core/glob_matcher.h | 1 | // Copyright 2025, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/glob_matcher.h | 41 | private: | COMMENT |
| LOW | src/core/compact_object.h | 1 | // Copyright 2024, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/compact_object.h | 261 | // For NONE_ENC: `encoded` is the user-visible bytes; the reply can stream | COMMENT |
| LOW | src/core/dict_builder.h | 1 | // Copyright 2025, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/dict_builder.h | 21 | unsigned step); | COMMENT |
| LOW | src/core/stream_node.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/flatbuffers.h | 1 | // Copyright 2024, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/tiering_types.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/bptree_set.h | 81 | ToRank(rank, &path); | COMMENT |
| LOW | src/core/size_tracking_channel.h | 1 | // Copyright 2023, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/dense_set.h | 1 | // Copyright 2022, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/dense_set.h | 21 | // dict requires to allocate dictEntry per each addition in addition to the supplied key. | COMMENT |
| LOW | src/core/oah_base.h | 1 | // Copyright 2026, DragonflyDB authors. All rights reserved. | COMMENT |
| LOW | src/core/qlist.h | 1 | // Copyright 2024, DragonflyDB authors. All rights reserved. | COMMENT |
| 191 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tools/release_notes_generator.py | 133 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/release_notes_generator.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/release_notes_generator.py | 1057 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/release_notes_generator.py | 1059 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 81 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 83 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 330 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 332 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 590 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 592 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 909 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 911 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 953 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 955 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 1029 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 1031 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 1314 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 1316 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 1791 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/release_notes_generator.py | 1793 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/release_notes_generator.py | 518 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tools/release_notes_generator.py | 520 | # --------------------------------------------------------------------------- | STRING |
| MEDIUM⚡ | tools/pubsub/celery-test.py | 80 | # ------------------------ | COMMENT |
| MEDIUM⚡ | tools/pubsub/celery-test.py | 82 | # ------------------------ | COMMENT |
| MEDIUM⚡ | tools/pubsub/celery-test.py | 91 | # ------------------------ | COMMENT |
| MEDIUM⚡ | tools/pubsub/celery-test.py | 93 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 20 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 22 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 65 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 67 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 166 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 168 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 185 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 187 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 247 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 249 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 456 | # ------------------------ | COMMENT |
| MEDIUM | tools/pubsub/celery-test.py | 458 | # ------------------------ | COMMENT |
| MEDIUM | tests/dragonfly/replication_utils.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/dragonfly/replication_utils.py | 40 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/dragonfly/replication_utils.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/dragonfly/replication_utils.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/dragonfly/replication_utils.py | 249 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/dragonfly/replication_utils.py | 251 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/dragonfly/replication_utils.py | 285 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/dragonfly/replication_utils.py | 287 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/bullmq-skipped-tests.txt | 8 | # ── DRAGONFLY BUG ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | .github/bullmq-skipped-tests.txt | 18 | # ── FLAKY ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | fuzz/triage_crashes.sh | 18 | # ─── Colors ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | fuzz/triage_crashes.sh | 26 | # ─── Config ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | fuzz/triage_crashes.sh | 49 | # ─── Args ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | fuzz/triage_crashes.sh | 75 | # ─── Working directory ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | fuzz/triage_crashes.sh | 84 | # ─── Extract zip ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | fuzz/triage_crashes.sh | 89 | # ─── Find crash archives ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | fuzz/triage_crashes.sh | 101 | # ─── Locate replay_crash.py ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | fuzz/triage_crashes.sh | 110 | # ─── Helpers ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | fuzz/triage_crashes.sh | 159 | # ─── Main loop ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | fuzz/triage_crashes.sh | 344 | # ─── Summary ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | src/server/serializer_base.h | 126 | // ┌────────────────────┐ ┌───────────────────┐ | COMMENT |
| MEDIUM⚡ | src/server/serializer_base.h | 129 | // └────────┬───────────┘ └────────┬──────────┘ | COMMENT |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/plot_memtier_latency.py | 152 | print("Error: No operation data found in JSON") | CODE |
| MEDIUM | tools/plot_memtier_latency.py | 384 | print("Error: No operation data found in JSON") | CODE |
| MEDIUM | tools/plot_memtier_latency.py | 573 | print(f"Error: Input file '{input_file}' not found!") | CODE |
| LOW | tools/defrag_mem_test.py | 100 | except Exception as e: | CODE |
| LOW | tools/defrag_mem_test.py | 159 | except Exception as e: | CODE |
| MEDIUM | tools/defrag_mem_test.py | 76 | def stats_check(connection, condition): | CODE |
| LOW | tools/release_notes_generator.py | 941 | except Exception: | CODE |
| LOW | tools/release_notes_generator.py | 1163 | except Exception as e: | CODE |
| LOW | tools/release_notes_generator.py | 2087 | except Exception as e: | CODE |
| LOW | tools/cluster_mgr.py | 70 | except Exception as e: | CODE |
| LOW | tools/defrag_db.py | 41 | except Exception as e: | STRING |
| MEDIUM | tools/defrag_db.py | 47 | print("Error recycling", recycled) | STRING |
| LOW | tools/pubsub/stress.py | 402 | except Exception as e: | CODE |
| LOW | tools/pubsub/celery-test.py | 121 | except Exception: | CODE |
| LOW | tools/pubsub/celery-test.py | 209 | except Exception: | CODE |
| LOW | tools/pubsub/celery-test.py | 234 | except Exception: | CODE |
| LOW | tools/pubsub/celery-test.py | 311 | except Exception: | CODE |
| LOW | tools/pubsub/celery-test.py | 379 | except Exception as e: | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 928 | except Exception: | CODE |
| LOW | tests/dragonfly/cluster_migration_test.py | 1046 | except Exception as e: | STRING |
| LOW | tests/dragonfly/cluster_migration_test.py | 1056 | except Exception as e: | STRING |
| LOW | tests/dragonfly/cluster_migration_test.py | 1099 | except Exception as e: | STRING |
| LOW | tests/dragonfly/cluster_migration_test.py | 1130 | except Exception as e: | STRING |
| LOW | tests/dragonfly/instance.py | 523 | except Exception: | CODE |
| LOW | tests/dragonfly/instance.py | 528 | except Exception as e: | CODE |
| LOW | tests/dragonfly/conftest.py | 67 | except Exception: | CODE |
| LOW | tests/dragonfly/conftest.py | 116 | except Exception: | CODE |
| LOW | tests/dragonfly/conftest.py | 126 | except Exception: | CODE |
| LOW | tests/dragonfly/conftest.py | 340 | except Exception: | CODE |
| LOW | tests/dragonfly/conftest.py | 342 | except Exception as e: | CODE |
| LOW | tests/dragonfly/conftest.py | 387 | except Exception: | CODE |
| LOW | tests/dragonfly/search_benchmark_utils.py | 167 | except Exception as e: | CODE |
| LOW | tests/dragonfly/acl_family_test.py | 236 | except Exception as e: | CODE |
| LOW | tests/dragonfly/connection_test.py | 2414 | except Exception: | CODE |
| LOW | tests/dragonfly/connection_test.py | 2494 | except Exception: | CODE |
| LOW | tests/dragonfly/connection_test.py | 2509 | except Exception: | CODE |
| LOW | tests/dragonfly/connection_test.py | 238 | except Exception: | STRING |
| LOW | tests/dragonfly/utility.py | 737 | except Exception as e: | CODE |
| LOW | tests/dragonfly/eval_test.py | 498 | except Exception: | CODE |
| LOW | tests/dragonfly/eval_test.py | 509 | except Exception: | CODE |
| LOW | tests/dragonfly/shutdown_test.py | 128 | except Exception as e: | CODE |
| MEDIUM | tests/dragonfly/search_test.py | 923 | def test_redis_om(df_server): | CODE |
| LOW⚡ | tests/dragonfly/search_test.py | 1052 | except Exception: | CODE |
| LOW⚡ | tests/dragonfly/search_test.py | 1056 | except Exception: | CODE |
| LOW⚡ | tests/dragonfly/search_test.py | 1065 | except Exception: | CODE |
| LOW | tests/dragonfly/search_test.py | 1517 | except Exception as e: | CODE |
| MEDIUM | tests/dragonfly/snapshot_test.py | 289 | def save(): | CODE |
| MEDIUM | tests/dragonfly/snapshot_test.py | 304 | def save_operation(operation_id): | CODE |
| LOW⚡ | tests/dragonfly/snapshot_test.py | 293 | except Exception: | CODE |
| LOW⚡ | tests/dragonfly/snapshot_test.py | 308 | except Exception as e: | CODE |
| LOW | tests/dragonfly/snapshot_test.py | 262 | except Exception: | CODE |
| LOW | tests/dragonfly/snapshot_test.py | 797 | except Exception: | CODE |
| LOW | tests/dragonfly/snapshot_test.py | 895 | except Exception: | CODE |
| LOW | tests/dragonfly/snapshot_test.py | 909 | except Exception: | CODE |
| LOW⚡ | tests/dragonfly/replication_resilience_test.py | 1473 | except Exception as e: | STRING |
| LOW⚡ | tests/dragonfly/replication_resilience_test.py | 1483 | except Exception: | STRING |
| LOW | tests/dragonfly/replication_specific_test.py | 1644 | except Exception: | CODE |
| LOW | tests/dragonfly/replication_specific_test.py | 1656 | except Exception: | CODE |
| LOW | …fly/valkey_search/valkey_search_test_case_dragonfly.py | 91 | except Exception as e: | CODE |
| LOW⚡ | …fly/valkey_search/valkey_search_test_case_dragonfly.py | 107 | except Exception as e: | CODE |
| 12 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/dragonfly/cluster_test_utils.py | 24 | # Create a generator object | COMMENT |
| MEDIUM | tests/dragonfly/connection_test.py | 782 | # Create a publisher that sends constantly messages to the channel | COMMENT |
| MEDIUM | tests/dragonfly/connection_test.py | 3880 | # Create a separate, continuous background task: open a second connection (pub) and constantly publish messages to | COMMENT |
| MEDIUM | tests/dragonfly/replication_config_test.py | 478 | # Create an empty hashmap | COMMENT |
| MEDIUM | tests/dragonfly/replication_config_test.py | 532 | # Create an empty hashmap | COMMENT |
| MEDIUM | tests/dragonfly/replication_config_test.py | 581 | # Create a search index with HNSW vector field on the new master | COMMENT |
| MEDIUM | tests/dragonfly/search_test.py | 1118 | # Create an index with all field types on master | COMMENT |
| MEDIUM | tests/dragonfly/replication_specific_test.py | 77 | # Create a new aux index on master | COMMENT |
| MEDIUM | tests/dragonfly/memory_test.py | 46 | # Create a Dragonfly and fill it up with `type` until it reaches `min_rss`, then make sure that | COMMENT |
| MEDIUM | …fly/valkey_search/valkey_search_test_case_dragonfly.py | 27 | """This class represents a Dragonfly instance as a valkey server node""" | STRING |
| MEDIUM | tests/dragonfly/valkey_search/__init__.py | 41 | # Create a mock module for valkey_search_test_case | COMMENT |
| MEDIUM⚡ | .github/workflows/docker-dev-release.yml | 136 | # Create a temporary container and copy the binary | COMMENT |
| MEDIUM⚡ | .github/workflows/docker-dev-release.yml | 141 | # Create a tar archive | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 191 | # Create a rule that automatically prints stacktrace upon segfault | COMMENT |
| MEDIUM | …actions/builder/scripts/actions_cache_ccache_helper.sh | 3 | # This file is not standalone - source it from the builder action or cache-reaper workflow; | COMMENT |
| MEDIUM | …b/actions/builder/scripts/actions_cache_deps_helper.sh | 3 | # This file is not standalone - source it from the builder action | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/parse_allocator_tracking_logs.py | 13 | CODE | |
| LOW | tools/defrag_mem_test.py | 76 | CODE | |
| LOW | tools/release_notes_generator.py | 675 | CODE | |
| LOW | tools/cluster_mgr.py | 111 | CODE | |
| LOW | tools/cache_logs_player.py | 22 | CODE | |
| LOW | tools/pubsub/stress.py | 109 | CODE | |
| LOW | tools/pubsub/stress.py | 381 | CODE | |
| LOW | tools/pubsub/stress.py | 150 | CODE | |
| LOW | tools/pubsub/stress.py | 229 | CODE | |
| LOW | tools/pubsub/stress.py | 153 | CODE | |
| LOW | tools/pubsub/celery-test.py | 97 | CODE | |
| LOW | tools/pubsub/celery-test.py | 190 | CODE | |
| LOW | tools/pubsub/celery-test.py | 252 | CODE | |
| LOW | tests/dragonfly/instance.py | 64 | CODE | |
| LOW | tests/dragonfly/conftest.py | 72 | CODE | |
| LOW | tests/dragonfly/tiering_test.py | 490 | CODE | |
| LOW | tests/dragonfly/tiering_test.py | 523 | CODE | |
| LOW | tests/dragonfly/connection_test.py | 416 | CODE | |
| LOW | tests/dragonfly/connection_test.py | 660 | CODE | |
| LOW | tests/dragonfly/connection_test.py | 1602 | CODE | |
| LOW | tests/dragonfly/connection_test.py | 4028 | CODE | |
| LOW | tests/dragonfly/connection_test.py | 73 | CODE | |
| LOW | tests/dragonfly/connection_test.py | 4050 | CODE | |
| LOW | tests/dragonfly/utility.py | 270 | CODE | |
| LOW | tests/dragonfly/utility.py | 710 | CODE | |
| LOW | tests/dragonfly/utility.py | 982 | CODE | |
| LOW | tests/dragonfly/cluster_migration_resilience_test.py | 99 | CODE | |
| LOW | tests/dragonfly/cluster_migration_resilience_test.py | 181 | CODE | |
| LOW | tests/dragonfly/replication_utils.py | 43 | CODE | |
| LOW | tests/dragonfly/seeder/__init__.py | 438 | CODE | |
| LOW | tests/dragonfly/seeder/__init__.py | 496 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/base.py | 263 | CODE | |
| LOW | fuzz/resp_mutator.py | 381 | CODE | |
| LOW | fuzz/check_fuzz_coverage.py | 140 | CODE | |
| LOW | fuzz/memcache_mutator.py | 84 | CODE | |
| LOW | fuzz/memcache_mutator.py | 185 | CODE | |
| LOW | fuzz/memcache_mutator.py | 251 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/dragonfly/replication_specific_test.py | 404 | # Step 1: Populate master with 100 streams, each containing 200 entries | COMMENT |
| LOW⚡ | tests/dragonfly/replication_specific_test.py | 413 | # Step 2: Trim each stream to a random size between 70 and 200 | COMMENT |
| LOW | tests/dragonfly/replication_specific_test.py | 427 | # Step 3: Trim all streams to 0 | COMMENT |
| LOW | .claude/skills/benchmark-report/SKILL.md | 11 | ## Step 0: Interview before writing | COMMENT |
| LOW | .claude/skills/benchmark-report/SKILL.md | 39 | ## Step 1: Scan and parse | COMMENT |
| LOW | .claude/skills/benchmark-report/SKILL.md | 65 | ## Step 2: Identify systems under test | COMMENT |
| LOW | .claude/skills/benchmark-report/SKILL.md | 79 | ## Step 3: Generate charts | COMMENT |
| LOW | .claude/skills/benchmark-report/SKILL.md | 92 | ## Step 4: Write the report | COMMENT |
| LOW | .claude/skills/reproduce-fuzz-crash/SKILL.md | 21 | ### Step 1: Parse the URL | COMMENT |
| LOW | .claude/skills/reproduce-fuzz-crash/SKILL.md | 31 | ### Step 2: Download artifacts | COMMENT |
| LOW | .claude/skills/reproduce-fuzz-crash/SKILL.md | 56 | ### Step 3: Determine mode | COMMENT |
| LOW | .claude/skills/reproduce-fuzz-crash/SKILL.md | 62 | ### Step 4: Check Dragonfly binary | COMMENT |
| LOW | .claude/skills/reproduce-fuzz-crash/SKILL.md | 78 | ### Step 5: Run triage_crashes.sh | COMMENT |
| LOW | .claude/skills/reproduce-fuzz-crash/SKILL.md | 88 | ### Step 6: Analyze and report | COMMENT |
| LOW | docs/build-from-source.md | 8 | ## Step 1 - install dependencies | COMMENT |
| LOW | docs/build-from-source.md | 38 | ## Step 2 - clone the project | COMMENT |
| LOW | docs/build-from-source.md | 44 | ## Step 3 - configure & build it | COMMENT |
| LOW | docs/build-from-source.md | 92 | ## Step 4 - voilà | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/dragonfly/valkey_tcl/run-stream-tests.sh | 3 | # Exits 0 only if every non-skipped test passes (harness returns 1 on any failure). | COMMENT |
| MEDIUM | tests/dragonfly/valkey_tcl/run-stream-tests.sh | 6 | # Fail fast on any setup error; -e is relaxed only around the harness to capture its status. | COMMENT |
| MEDIUM | tests/dragonfly/valkey_tcl/run-stream-tests.sh | 26 | # The harness's set_executable_path.tcl requires an executable src/valkey-server to exist, | COMMENT |
| MEDIUM | tests/dragonfly/valkey_tcl/run-stream-tests.sh | 98 | # Feed the harness a clean skipfile (strip comments and blank lines). A missing skiplist would | COMMENT |
| MEDIUM | tests/dragonfly/valkey_tcl/run-stream-tests.sh | 112 | # --timeout bounds a single stuck test (the harness aborts the run on timeout); the outer | COMMENT |
| MEDIUM | tests/dragonfly/valkey_tcl/run-stream-tests.sh | 116 | set +e # capture the harness exit status instead of dying mid-report | CODE |
| MEDIUM | tests/dragonfly/valkey_tcl/sync-valkey-tcl-tests.sh | 2 | # Sync the Valkey TCL test harness + stream/pubsub test files into ./upstream (gitignored), | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 271 | # tcl runs the harness; redis-tools + iproute2 (ss) for the fail-closed readiness probe. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/cache_testing.py | 3 | CODE | |
| LOW | tools/defrag_mem_test.py | 4 | CODE | |
| LOW | tools/defrag_mem_test.py | 5 | CODE | |
| LOW | tools/release_notes_generator.py | 30 | CODE | |
| LOW | tools/eviction/fill_db.py | 43 | CODE | |
| LOW | tests/integration/async.py | 14 | CODE | |
| LOW | tests/fakeredis/test/test_transactions.py | 1 | CODE | |
| LOW | tests/fakeredis/test/test_json/test_json.py | 5 | CODE | |
| LOW | tests/fakeredis/test/test_json/test_json_commands.py | 3 | CODE | |
| LOW | tests/fakeredis/test/test_mixins/test_set_commands.py | 1 | CODE | |
| LOW | …sts/fakeredis/test/test_mixins/test_string_commands.py | 1 | CODE | |
| LOW | …/fakeredis/test/test_mixins/test_sortedset_commands.py | 1 | CODE | |
| LOW | tests/fakeredis/test/test_mixins/test_scripting.py | 1 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 12 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 13 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 14 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 15 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 16 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 17 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 18 | CODE | |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 19 | CODE | |
| LOW | .github/actions/builder/scripts/deps_cache_manifest.py | 28 | CODE | |
| LOW | src/core/generate_bin_sizes.py | 4 | CODE | |
| LOW | src/core/generate_bin_sizes.py | 5 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/plot_memtier_latency.py | 571 | # Check if input file exists | COMMENT |
| LOW | tools/balls_bins.py | 26 | # Check if any bin has K or more balls | COMMENT |
| LOW | tools/docker/healthcheck.sh | 10 | # Set trap to ensure cleanup runs on exit, regardless of how the script exits | COMMENT |
| LOW | tests/dragonfly/replication_specific_test.py | 808 | # Check if replica data is consistent | COMMENT |
| LOW⚡ | …fly/valkey_search/valkey_search_test_case_dragonfly.py | 102 | # Check if replicas are connected | COMMENT |
| LOW | tests/dragonfly/valkey_search/conftest.py | 9 | # Check if integration directory exists | COMMENT |
| LOW | tests/dragonfly/valkey_search/__init__.py | 13 | # Check if integration directory exists before attempting import | COMMENT |
| LOW | …ts/dragonfly/valkey_search/sync-valkey-search-tests.sh | 40 | # Check if the file doesn't already have 'from __future__ import annotations' | COMMENT |
| LOW⚡ | .github/workflows/docker-dev-release.yml | 126 | # Check if version starts with a release version (v*.*.*) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/generate-tls-files.sh | 6 | # Example usage: | COMMENT |
| LOW | .claude/skills/benchmark/scripts/capture_result.sh | 8 | # Usage: | COMMENT |
| LOW | .claude/skills/benchmark/scripts/monitor_fill.sh | 8 | # Usage: | COMMENT |
| LOW | .claude/skills/benchmark/scripts/bench_server.sh | 12 | # Usage: | COMMENT |
| LOW | fuzz/triage_crashes.sh | 5 | # Usage: | COMMENT |
| LOW | src/common/heap_size.h | 10 | // Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/dragonfly/replication_specific_test.py | 404 | # Step 1: Populate master with 100 streams, each containing 200 entries | COMMENT |
| LOW⚡ | tests/dragonfly/replication_specific_test.py | 413 | # Step 2: Trim each stream to a random size between 70 and 200 | COMMENT |
| LOW | tests/dragonfly/replication_specific_test.py | 427 | # Step 3: Trim all streams to 0 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/json_benchmark.py | 30 | r.execute_command('JSON.SET', key, '.', '{"a":123456, "b": "hello", "nested": {"abc": "ffffff", "bfb": null}}') | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/release_notes_generator.py | 99 | # generated files, large refactors) would otherwise dominate the context window | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …sts/fakeredis/test/test_json/test_json_arr_commands.py | 24 | assert r.json().arrlen("fake-key") is None | CODE |
| LOW | src/redis/crc64.c | 139 | char li[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed " | CODE |
| LOW | src/redis/crc64.c | 139 | char li[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed " | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/dragonfly/connection_test.py | 2647 | CODE | |
| LOW | tests/dragonfly/utility.py | 514 | CODE | |
| LOW | tests/dragonfly/seeder/__init__.py | 150 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tools/release_notes_generator.py | 129 | logger = logging.getLogger(__name__) | CODE |
| LOW | tests/fakeredis/test/test_hypothesis/__init__.py | 1 | __all__ = [ | CODE |