The FastLED library for colored LED animation on Arduino. Please direct questions/requests for help to the FastLED Reddit community: http://fastled.io/r We'd like to use github "issues" just for tracking library bugs / enhancements.
This report presents the forensic synthetic code analysis of FastLED/FastLED, a C++ project with 7,447 GitHub stars. SynthScan v2.0 examined 857,006 lines of code across 3675 source files, recording 8167 pattern matches distributed across 22 syntactic categories. The overall adjusted score of 11.4 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 8167 distinct pattern matches across 22 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 | pyproject.toml | 1 | [project] | COMMENT |
| LOW | pyproject.toml | 21 | # deploy fixes needed for current hardware validation runs | COMMENT |
| LOW | pyproject.toml | 41 | # post-2.3.0 Teensy deploy/serial fixes needed while | COMMENT |
| LOW | pyproject.toml | 61 | # the resolution path in 2.2.23 (#516). | COMMENT |
| LOW | pyproject.toml | 81 | # `symbol_analysis` split (FastLED/fbuild#474). The | COMMENT |
| LOW | pyproject.toml | 101 | # parent-dir creation (FastLED/fbuild#410), a | COMMENT |
| LOW | pyproject.toml | 121 | # unblock flipping FASTLED_USE_FBUILD_CI=1 | COMMENT |
| LOW | pyproject.toml | 161 | "fpvgcc", | COMMENT |
| LOW | pyproject.toml | 181 | # compile load. Bumping to >=1.11.17 captures both fixes; the | COMMENT |
| LOW | pyproject.toml | 201 | # `deps = gcc` mode records `#deps 0` for every cached object and | COMMENT |
| LOW | test.py | 21 | ) | COMMENT |
| LOW | STRUCTURE_VALIDATION.md | 161 | ```cpp | COMMENT |
| LOW | GEMINI.md | 1 | # READ CLAUDE.md for repo information | COMMENT |
| LOW | ci/optimization_report.py | 1 | import argparse | COMMENT |
| LOW | ci/check_backend_flag_drift.py | 61 | return f | COMMENT |
| LOW | ci/rpc_client.py | 681 | response_data = {} | COMMENT |
| LOW | ci/run-clang-format.py | 161 | # Hopefully, this is the correct thing to do. | COMMENT |
| LOW | ci/boards.py | 881 | # (src/platforms/esp/32/drivers/parlio/parlio_peripheral_esp.cpp.hpp:46-48). | COMMENT |
| LOW | ci/boards.py | 1161 | platform_packages="framework-arduinopico@https://github.com/earlephilhower/arduino-pico/releases/download/4.5.3/rp20 | COMMENT |
| LOW | ci/boards.py | 1181 | # Preferred name for the LPC845 canary board target (FastLED #3220). | COMMENT |
| LOW | ci/build_example.toml | 1 | # ================================================================================================ | COMMENT |
| LOW | ci/build_example.toml | 161 | # No additional args currently needed - all flags come from [all] and [build_modes.quick] sections | COMMENT |
| LOW | ci/autoresearch/phases.py | 901 | try: | COMMENT |
| LOW | ci/autoresearch/phases.py | 961 | # | COMMENT |
| LOW | ci/autoresearch/phases.py | 1021 | # surface only) when FL_PLATFORM_HAS_LARGE_MEMORY == 0. The previous | COMMENT |
| LOW | ci/autoresearch/gpio.py | 421 | # ============================================================ | COMMENT |
| LOW | ci/autoresearch/args.py | 101 | COMMENT | |
| LOW | ci/lint/check_size_thresholds.py | 41 | # FROZEN SIZE THRESHOLDS — single source of truth. | COMMENT |
| LOW | ci/lint/check_size_thresholds.py | 61 | # - band-aid (#NNNN) — value was raised to clear CI; real ceiling is lower | COMMENT |
| LOW | ci/tools/_noexcept_check_fl_tu.cpp | 1 | // Minimal translation unit for clang-query analysis of FastLED-owned fl/ code. | COMMENT |
| LOW | ci/tools/_noexcept_check_platforms_tu.cpp | 1 | // Minimal translation unit for clang-query analysis of all platform code | COMMENT |
| LOW | ci/tools/_noexcept_check_third_party_tu.cpp | 1 | // Minimal translation unit for clang-query analysis of third_party/ code. | COMMENT |
| LOW | ci/util/serial_interface.py | 181 | # makes the next _run_in_thread fail with "cannot schedule new | COMMENT |
| LOW | ci/util/output_formatter.py | 41 | # Matches lines like "1.29 Ok: 1" and "1.29 Fail: 0" | COMMENT |
| LOW | ci/util/build_lock.py | 21 | from typing import Generator, Optional | COMMENT |
| LOW | ci/util/test_runner.py | 1741 | COMMENT | |
| LOW | ci/util/port_utils.py | 41 | } | COMMENT |
| LOW | ci/util/port_utils.py | 61 | # autoresearch needs for default-port selection. | COMMENT |
| LOW | ci/lint_platformio/check_no_internal_platformio.py | 41 | # * Backend comparison harness (ci/check_backend_flag_drift.py — when | COMMENT |
| LOW | ci/lint_platformio/check_no_internal_platformio.py | 101 | COMMENT | |
| LOW | ci/meson/compile.py | 221 | if "meson-quick" in str(build_dir): | COMMENT |
| LOW | ci/meson/wasm_cross_file.ini | 1 | # ============================================================================ | COMMENT |
| LOW | ci/lint_cpp_rs/Cargo.toml | 21 | # crashes, none of the full-DWARF compile-time tax. | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/singleton_elision.rs | 1 | // SingletonElisionChecker — flag file-scope / namespace-scope variables | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/singleton_elision.rs | 21 | // (author-visible, code-review visible, per-decl explicit), plus a short | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/singleton_elision.rs | 81 | // Track whether the previous non-blank line contained a | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/singleton_elision.rs | 241 | // parens contain more than a single value (which could be an | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/singleton_elision.rs | 261 | // genuinely cannot move to `Singleton<T>` (public API surface, | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/public_settings.rs | 1 | // PublicSettingsPatternChecker — Tier-2 port from | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/unity_build.rs | 1 | // UnityBuildChecker — Tier-3 port from ci/lint_cpp/test_unity_build.py | COMMENT |
| LOW | ci/lint_cpp_rs/src/checkers/bare_legacy.rs | 401 | } | COMMENT |
| LOW | ci/lint_cpp/run_all_checkers.py | 381 | scope = "third_party" | COMMENT |
| LOW | ci/lint_cpp/run_all_checkers.py | 921 | # The Python per-file run_checkers() pass is run on the foreground thread | COMMENT |
| LOW | ci/lint_cpp/ast_cache.py | 41 | # IMPORTANT: clang-query parses each TU's TRANSITIVE include closure - | COMMENT |
| LOW | ci/compiler/pio.py | 161 | # Make the staged source roots available as include roots so sketch-relative | COMMENT |
| LOW | ci/compiler/pio.py | 201 | # Non-fatal: continue without optimization artifacts if path resolution fails | COMMENT |
| LOW | ci/compiler/sketch_filter.py | 21 | // exclude: | COMMENT |
| LOW | ci/compiler/build_config.py | 181 | f"Warning: Failed to get metadata for build_info.json (exit code {metadata_proc.returncode})" | COMMENT |
| LOW | tests/test_container_helpers.h | 1 | /// @file test_container_helpers.h | COMMENT |
| LOW | tests/test_container_helpers.h | 21 | /// FL_TEST_CASE("Tier 2-4: Associative container iterator tests") { | COMMENT |
| 5102 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | ci/wasm_build.py | 489 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | ci/wasm_build.py | 491 | # ============================================================================ | COMMENT |
| MEDIUM | ci/wasm_build.py | 98 | # ============================================================================ | COMMENT |
| MEDIUM | ci/wasm_build.py | 100 | # ============================================================================ | COMMENT |
| MEDIUM | ci/wasm_build.py | 639 | # ============================================================================ | COMMENT |
| MEDIUM | ci/wasm_build.py | 641 | # ============================================================================ | COMMENT |
| MEDIUM | ci/debug_attached.py | 105 | # ============================================================ | COMMENT |
| MEDIUM | ci/debug_attached.py | 107 | # ============================================================ | COMMENT |
| MEDIUM | ci/debug_attached.py | 1299 | # ============================================================ | COMMENT |
| MEDIUM | ci/debug_attached.py | 1301 | # ============================================================ | COMMENT |
| MEDIUM⚡ | ci/debug_attached.py | 1316 | # ============================================================ | COMMENT |
| MEDIUM⚡ | ci/debug_attached.py | 1318 | # ============================================================ | COMMENT |
| MEDIUM⚡ | ci/debug_attached.py | 1327 | # ============================================================ | COMMENT |
| MEDIUM⚡ | ci/debug_attached.py | 1329 | # ============================================================ | COMMENT |
| MEDIUM⚡ | ci/debug_attached.py | 1339 | # ============================================================ | COMMENT |
| MEDIUM⚡ | ci/debug_attached.py | 1341 | # ============================================================ | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 64 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 392 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 394 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 426 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 428 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 484 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/check_backend_flag_drift.py | 486 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ci/ci-iwyu.py | 83 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ci/ci-iwyu.py | 85 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ci/ci-iwyu.py | 416 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ci/ci-iwyu.py | 418 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ci/ci-iwyu.py | 729 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ci/ci-iwyu.py | 731 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 42 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 44 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 148 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 317 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 319 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 366 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/ci-iwyu.py | 368 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ci/test_led_timing_conversion.py | 19 | # ============================================================================ | COMMENT |
| MEDIUM | ci/test_led_timing_conversion.py | 21 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | ci/test_rpc_edge_cases.py | 35 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | ci/test_rpc_edge_cases.py | 37 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | ci/inspect_binary.py | 269 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ci/inspect_binary.py | 271 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ci/inspect_binary.py | 297 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ci/inspect_binary.py | 299 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ci/inspect_binary.py | 324 | # ======================================================================== | COMMENT |
| MEDIUM⚡ | ci/inspect_binary.py | 326 | # ======================================================================== | COMMENT |
| MEDIUM | ci/build_example.toml | 1 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 3 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 50 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 52 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 138 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 140 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 165 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 167 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 180 | # ================================================================================================ | COMMENT |
| MEDIUM | ci/build_example.toml | 182 | # ================================================================================================ | COMMENT |
| 299 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test.py | 218 | except Exception: | CODE |
| LOW | test.py | 222 | except Exception: | CODE |
| LOW | test.py | 242 | except Exception: | CODE |
| LOW | test.py | 271 | except Exception as e: | CODE |
| LOW | test.py | 372 | except Exception: | CODE |
| MEDIUM | test.py | 508 | ts_print("Error: --run requires a platform/board (e.g., esp32s3, uno)") | CODE |
| MEDIUM | test.py | 522 | ts_print(f"Error: Unknown platform '{platform}'") | CODE |
| LOW | test.py | 585 | except Exception: | CODE |
| LOW | test.py | 663 | except Exception as e: | CODE |
| MEDIUM | test.py | 580 | def _discover_counts() -> None: | CODE |
| MEDIUM | mcp_server.py | 93 | print("Error: MCP library not found.") | CODE |
| MEDIUM | mcp_server.py | 2893 | print(f"Error running MCP server: {e}") | CODE |
| LOW | mcp_server.py | 591 | except Exception as e: | CODE |
| LOW | mcp_server.py | 735 | except Exception: | CODE |
| LOW | mcp_server.py | 1327 | except Exception as e: | CODE |
| LOW | mcp_server.py | 1339 | except Exception as e: | CODE |
| LOW | mcp_server.py | 1378 | except Exception as e: | CODE |
| LOW | mcp_server.py | 1381 | except Exception as e: | CODE |
| LOW | mcp_server.py | 1414 | except Exception as e: | CODE |
| LOW | mcp_server.py | 1616 | except Exception: | CODE |
| LOW | mcp_server.py | 1676 | except Exception as e: | CODE |
| LOW | mcp_server.py | 1708 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2235 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2272 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2291 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2336 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2442 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2445 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2604 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2802 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2855 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2881 | except Exception as e: | CODE |
| LOW | mcp_server.py | 2892 | except Exception as e: | CODE |
| LOW | ci/ci-compile-pio-ci-working.py | 412 | except Exception as e: | CODE |
| LOW | ci/ci-compile-pio-ci-working.py | 458 | except Exception as e: | CODE |
| LOW | ci/ci-compile-pio-ci-working.py | 489 | except Exception as e: | CODE |
| LOW | ci/early_exit_cache.py | 517 | except Exception: | CODE |
| LOW | ci/early_exit_cache.py | 581 | except Exception: | CODE |
| LOW | ci/early_exit_cache.py | 612 | except Exception: | CODE |
| LOW | ci/early_exit_cache.py | 645 | except Exception: | CODE |
| LOW | ci/early_exit_cache.py | 674 | except Exception: | CODE |
| LOW | ci/early_exit_cache.py | 723 | except Exception: | CODE |
| LOW | ci/wasm_compile.py | 66 | except Exception as e: | CODE |
| LOW | ci/decode_esp32_backtrace.py | 76 | except Exception as e: | CODE |
| MEDIUM | ci/decode_esp32_backtrace.py | 140 | print("Error: Could not find addr2line tool", file=sys.stderr) | CODE |
| MEDIUM | ci/decode_esp32_backtrace.py | 146 | print(f"Error: ELF file not found: {elf_file}", file=sys.stderr) | CODE |
| MEDIUM | ci/decode_esp32_backtrace.py | 170 | print(f"Error running addr2line: {e}", file=sys.stderr) | CODE |
| MEDIUM | ci/decode_esp32_backtrace.py | 237 | print("Error: No addresses provided and stdin is empty", file=sys.stderr) | STRING |
| MEDIUM | ci/decode_esp32_backtrace.py | 248 | print("Error: No addresses found in crash log", file=sys.stderr) | STRING |
| LOW | ci/test_all_lint_caches_stress.py | 77 | except Exception as e: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 106 | except Exception as e: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 319 | except Exception as e: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 375 | except Exception as e: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 436 | except Exception as e: | CODE |
| LOW | ci/autoresearch_loop.py | 254 | except Exception as e: | CODE |
| LOW | ci/wasm_compile_native.py | 380 | except Exception as e: | STRING |
| MEDIUM | ci/wasm_compile_native.py | 424 | print(f"Error: Source file not found: {source_file}", file=sys.stderr) | STRING |
| MEDIUM | ci/inspect_elf.py | 70 | print(f"Error: No build_info*.json found in {board_dir}") | CODE |
| LOW | ci/inspect_elf.py | 87 | except Exception as e: | CODE |
| MEDIUM | ci/inspect_elf.py | 88 | print(f"Error while dumping symbol sizes: {e}") | CODE |
| 540 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test.py | 176 | def _get_run_platform_backends() -> dict[str, list[str]]: | CODE |
| LOW | test.py | 198 | def _release_held_build_locks() -> None: | CODE |
| LOW | mcp_server.py | 2347 | async def validate_arduino_includes( | CODE |
| LOW | ci/ci-compile-pio-ci-working.py | 231 | def choose_board_interactively(boards: list[str]) -> list[str]: | CODE |
| LOW | ci/decode_esp32_backtrace.py | 173 | def extract_addresses_from_crash_log(log: str) -> list[str]: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 122 | def test_python_lint_cache_rapid_changes(test: CacheLintStressTest) -> None: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 165 | def test_javascript_lint_cache(test: CacheLintStressTest) -> None: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 194 | def test_cpp_lint_cache_rapid_changes(test: CacheLintStressTest) -> None: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 222 | def test_all_caches_consistency(test: CacheLintStressTest) -> None: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 289 | def test_manifest_completeness(test: CacheLintStressTest) -> None: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 323 | def test_cache_performance_all_caches(test: CacheLintStressTest) -> None: | CODE |
| LOW | ci/test_all_lint_caches_stress.py | 379 | def test_concurrent_cache_access(test: CacheLintStressTest) -> None: | CODE |
| LOW | ci/test_iwyu_integration.py | 45 | def test_ci_iwyu_script_exists(self): | CODE |
| LOW | ci/test_iwyu_integration.py | 51 | def test_iwyu_mapping_files_exist(self): | CODE |
| LOW | ci/wasm_compile_native.py | 78 | def create_wrapper_for_example(example_name: str, output_path: Path) -> Path: | CODE |
| LOW | ci/ci-cppcheck.py | 41 | def find_platformio_project_dir(build_root: Path, board_name: str) -> Path | None: | CODE |
| LOW | ci/ci-cppcheck.py | 84 | def find_platformio_ini_in_tree(base_dir: Path) -> Path | None: | CODE |
| LOW | ci/ci-cppcheck.py | 105 | def _load_src_files_from_compile_db(compile_db: Path, project_root: Path) -> list[str]: | CODE |
| LOW | ci/ci-cppcheck.py | 144 | def run_static_analysis_against_compile_db(compile_db: Path, project_root: Path) -> int: | CODE |
| LOW | ci/iwyu_wrapper.py | 71 | def get_compiler_include_paths(compiler_path: str) -> list[str]: | CODE |
| LOW | ci/bloat.py | 174 | def assert_fbuild_has_symbols() -> None: | CODE |
| LOW | ci/run_tests.py | 118 | def _dump_post_mortem_stack_trace( | CODE |
| LOW⚡ | ci/wasm_build.py | 416 | def _recover_stale_wasm_build(build_dir: Path) -> bool: | CODE |
| LOW | ci/wasm_build.py | 72 | def _normalize_meson_private_paths(build_dir: Path) -> None: | CODE |
| LOW | ci/wasm_build.py | 207 | def _compute_js_glue_fingerprint() -> str: | CODE |
| LOW | ci/wasm_build.py | 237 | def _js_glue_fingerprint_matches(build_dir: Path) -> bool: | CODE |
| LOW | ci/wasm_build.py | 248 | def _get_emcc_version_signature() -> str: | CODE |
| LOW | ci/wasm_build.py | 277 | def _compute_link_environment_fingerprint(mode: str) -> str: | CODE |
| LOW | ci/wasm_build.py | 290 | def _link_environment_fingerprint_matches(build_dir: Path, mode: str) -> bool: | CODE |
| LOW | ci/wasm_build.py | 312 | def _src_file_list_hash_reset_for_tests() -> None: | CODE |
| LOW | ci/wasm_build.py | 316 | def _compute_src_file_list_hash() -> str: | CODE |
| LOW | ci/wasm_build.py | 389 | def _save_library_fingerprint(build_dir: Path) -> None: | CODE |
| LOW | ci/wasm_build.py | 512 | def _ensure_emscripten_wasm_ld_patch() -> None: | CODE |
| LOW | ci/wasm_build.py | 963 | def _parse_clang_from_verbose(stderr_text: str) -> list[str] | None: | CODE |
| LOW | ci/wasm_build.py | 1217 | def _parse_wasm_ld_from_verbose(stderr_text: str) -> list[str] | None: | CODE |
| LOW | ci/standardized_smoke_sketches.py | 75 | def load_smoke_sketches_detailed( | CODE |
| LOW | ci/wasm_build_library.py | 353 | def ensure_unity_files_generated(unity_chunks: int, verbose: bool = False) -> int: | CODE |
| LOW | ci/check_backend_flag_drift.py | 233 | def _split_fbuild_combined_flags(cc_flags: list[str]) -> SplitFlags: | CODE |
| LOW | ci/test_hash_fingerprint_stress.py | 122 | def test_file_modification_during_processing(results: StressTestResults) -> None: | CODE |
| LOW | ci/test_hash_fingerprint_stress.py | 240 | def test_cross_process_pending_fingerprint(results: StressTestResults) -> None: | CODE |
| LOW | ci/test_hash_fingerprint_stress.py | 283 | def test_invalidate_on_failure(results: StressTestResults) -> None: | CODE |
| LOW | ci/test_hash_fingerprint_stress.py | 351 | def test_cache_corruption_recovery(results: StressTestResults) -> None: | CODE |
| LOW | ci/test_hash_fingerprint_stress.py | 388 | def test_large_file_set_performance(results: StressTestResults) -> None: | CODE |
| LOW | ci/test_hash_fingerprint_stress.py | 436 | def test_race_condition_rapid_operations(results: StressTestResults) -> None: | CODE |
| LOW | ci/test_hash_fingerprint_stress.py | 471 | def test_timestamp_file_optional(results: StressTestResults) -> None: | CODE |
| LOW | ci/wasm_audio_url_test.py | 56 | def install_playwright_browsers(): | CODE |
| LOW | ci/wasm_flags.py | 72 | def _lib_dwarf_prefix_map_flags(config: dict[str, Any], mode: str) -> list[str]: | CODE |
| LOW | ci/wasm_flags.py | 81 | def get_lib_compile_flags_dict(mode: str = "quick") -> dict[str, list[str]]: | CODE |
| LOW | ci/wasm_flags.py | 114 | def get_sketch_compile_flags_dict(mode: str = "quick") -> dict[str, list[str]]: | CODE |
| LOW | ci/wasm_audio_drag_drop_test.py | 84 | def install_playwright_browsers(): | CODE |
| LOW | ci/wasm_audio_drag_drop_test.py | 147 | async def enable_vibe_reactive_checkbox(page) -> bool: | CODE |
| LOW⚡ | ci/demo_symbol_analysis.py | 43 | def load_and_summarize_results(board_name: str): | CODE |
| LOW | ci/esbuild_frontend.py | 112 | def _frontend_dependency_hash() -> str: | CODE |
| LOW | ci/esbuild_frontend.py | 124 | def ensure_frontend_dependencies() -> None: | CODE |
| LOW | ci/esbuild_frontend.py | 146 | def _has_required_static_dist_assets(dist_dir: Path) -> bool: | CODE |
| LOW | ci/run-clang-format.py | 127 | def run_clang_format_diff_wrapper(args: Any, file: str) -> tuple[list[str], list[str]]: | CODE |
| LOW | ci/python_lint_cache.py | 40 | def check_python_files_changed() -> bool: | CODE |
| LOW⚡ | ci/ci-iwyu.py | 421 | def _load_src_files_from_compile_db(compile_db: Path, project_root: Path) -> list[str]: | CODE |
| LOW | ci/ci-iwyu.py | 460 | def run_iwyu_against_compile_db( | CODE |
| LOW | ci/ci-iwyu.py | 560 | def find_platformio_project_dir(board_dir: Path) -> Path | None: | CODE |
| 688 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ci/wasm_build.py | 422 | # Step 1: Clean stale ninja outputs | COMMENT |
| LOW⚡ | ci/wasm_build.py | 437 | # Step 2: Delete .ninja_deps to force full dependency re-scan | COMMENT |
| LOW⚡ | ci/wasm_build.py | 446 | # Step 3: Clear metadata caches | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1735 | # Step 1: Configure meson | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1739 | # Step 2: Build library via ninja (skipped if source fingerprint matches) | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1753 | # Step 3: Create wrapper and compile sketch (per-sketch cache) | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1761 | # Step 4: Link (per-sketch cache, copy to output) | COMMENT |
| LOW | ci/wasm_build.py | 461 | # Step 4: Force Meson reconfiguration | COMMENT |
| LOW | ci/wasm_build.py | 1807 | # Step 5: Copy templates and generate manifest | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 562 | # Step 1: Create build directories (including LTO cache and unity) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 568 | # Step 2: Ensure PCH is built | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 579 | # Step 3: Get tool commands | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 589 | # Step 4: Load build flags | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 597 | # Step 5: Load metadata from previous build | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 600 | # Step 6: Discover all source files (or unity files if enabled) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 610 | # Step 7: Fast-path check - if flags haven't changed, PCH is same, and archive exists, we're done | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 761 | # Step 11: Partial linking optimization (combine all objects into one) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 810 | # Step 12: Create thin archive from partial object (single file, much faster) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 817 | # Step 13: Save metadata for future builds | COMMENT |
| LOW | ci/wasm_build_library.py | 632 | # Step 8: Determine which sources need compilation (detailed check) | COMMENT |
| LOW | ci/wasm_build_library.py | 687 | # Step 9: Compile sources in parallel | COMMENT |
| LOW | ci/wasm_build_library.py | 741 | # Step 10: Collect all object files | COMMENT |
| LOW⚡ | ci/clean-worktrees.py | 177 | # Step 1: plain git worktree remove --force | COMMENT |
| LOW⚡ | ci/clean-worktrees.py | 182 | # Step 2: clear read-only attrs, retry | COMMENT |
| LOW | ci/clean-worktrees.py | 204 | # Step 3: clud trash as last-resort quarantine | COMMENT |
| LOW⚡ | ci/profile_runner.py | 370 | # Step 1: Generate profiler | COMMENT |
| LOW⚡ | ci/profile_runner.py | 374 | # Step 2: Build profiler | COMMENT |
| LOW⚡ | ci/profile_runner.py | 378 | # Step 3: Run benchmarks | COMMENT |
| LOW⚡ | ci/profile_runner.py | 382 | # Step 4: Analyze results | COMMENT |
| LOW⚡ | ci/profile_runner.py | 386 | # Step 5: Optional callgrind analysis | COMMENT |
| LOW | ci/boards.py | 906 | framework="arduino", # IMPORTANT: Do not add "espidf" - see comment above | CODE |
| LOW⚡ | ci/autoresearch/ble.py | 59 | # Step 1: Connect to device via serial RPC | COMMENT |
| LOW⚡ | ci/autoresearch/ble.py | 67 | # Step 2: Start BLE on device via serial RPC | COMMENT |
| LOW⚡ | ci/autoresearch/ble.py | 111 | # Step 4: Send ping over BLE | COMMENT |
| LOW⚡ | ci/autoresearch/ble.py | 180 | # Step 6: Clean up — stop BLE via serial | COMMENT |
| LOW | ci/autoresearch/ble.py | 90 | # Step 3: Connect to device via BLE | COMMENT |
| LOW | ci/autoresearch/ble.py | 124 | # Step 5: Read response | COMMENT |
| LOW | ci/autoresearch/ota.py | 78 | # Step 1: Start OTA on device | COMMENT |
| LOW⚡ | ci/autoresearch/ota.py | 102 | # Step 2: Connect host to ESP32 WiFi AP | COMMENT |
| LOW⚡ | ci/autoresearch/ota.py | 108 | # Step 3: Run HTTP tests | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 49 | # Step 1: Find clang-query | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 76 | # Step 2: AST query for functions missing noexcept | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 146 | # Step 3: Insert FL_NO_EXCEPT into function signatures | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 256 | # Step 4: Apply fixes to files | COMMENT |
| LOW⚡ | ci/tools/add_fl_noexcept.py | 48 | # Step 1: Use clang-query to find functions missing noexcept (AST-accurate) | COMMENT |
| LOW⚡ | ci/tools/add_fl_noexcept.py | 122 | # Step 2: Insert FL_NO_EXCEPT at the correct position | COMMENT |
| LOW | ci/tools/add_fl_noexcept.py | 260 | # Step 1: Get AST-accurate list | COMMENT |
| LOW | ci/tools/add_fl_noexcept.py | 275 | # Step 2: Process each file | COMMENT |
| LOW | ci/meson/runner_helpers.py | 111 | # Step 1: Clean stale ninja deps using ninja -t cleandead | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 132 | # Step 2: Delete .ninja_deps to force full dependency re-scan | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 141 | # Step 3: Clear metadata caches | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 159 | # Step 4: Clean build artifacts (stale .obj files referencing old headers) | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 162 | # Step 5: Force Meson reconfiguration | COMMENT |
| LOW | ci/meson/compile.py | 515 | # WARNING: The milestone detection below (is_key_milestone) requires quiet=False! | COMMENT |
| LOW | ci/runners/avr8js_runner.py | 105 | # Step 1: Show what we're compiling | COMMENT |
| LOW | ci/runners/avr8js_runner.py | 146 | # Step 2: Locate compiled firmware | COMMENT |
| LOW | ci/runners/avr8js_runner.py | 166 | # Step 3: Run in avr8js Docker | COMMENT |
| LOW⚡ | ci/compiler/platformio_cache.py | 1013 | # Step 1: Collect all URLs from platformio.ini | COMMENT |
| LOW⚡ | ci/compiler/platformio_cache.py | 1019 | # Step 2: Deduplicate URLs | COMMENT |
| LOW⚡ | ci/compiler/platformio_cache.py | 1023 | # Step 3: Download and process all unique URLs | COMMENT |
| 137 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ci/wasm_build.py | 422 | # Step 1: Clean stale ninja outputs | COMMENT |
| LOW⚡ | ci/wasm_build.py | 437 | # Step 2: Delete .ninja_deps to force full dependency re-scan | COMMENT |
| LOW⚡ | ci/wasm_build.py | 446 | # Step 3: Clear metadata caches | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1735 | # Step 1: Configure meson | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1739 | # Step 2: Build library via ninja (skipped if source fingerprint matches) | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1753 | # Step 3: Create wrapper and compile sketch (per-sketch cache) | COMMENT |
| LOW⚡ | ci/wasm_build.py | 1761 | # Step 4: Link (per-sketch cache, copy to output) | COMMENT |
| LOW | ci/wasm_build.py | 461 | # Step 4: Force Meson reconfiguration | COMMENT |
| LOW | ci/wasm_build.py | 1807 | # Step 5: Copy templates and generate manifest | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 562 | # Step 1: Create build directories (including LTO cache and unity) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 568 | # Step 2: Ensure PCH is built | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 579 | # Step 3: Get tool commands | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 589 | # Step 4: Load build flags | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 597 | # Step 5: Load metadata from previous build | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 600 | # Step 6: Discover all source files (or unity files if enabled) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 610 | # Step 7: Fast-path check - if flags haven't changed, PCH is same, and archive exists, we're done | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 761 | # Step 11: Partial linking optimization (combine all objects into one) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 810 | # Step 12: Create thin archive from partial object (single file, much faster) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 817 | # Step 13: Save metadata for future builds | COMMENT |
| LOW | ci/wasm_build_library.py | 632 | # Step 8: Determine which sources need compilation (detailed check) | COMMENT |
| LOW | ci/wasm_build_library.py | 687 | # Step 9: Compile sources in parallel | COMMENT |
| LOW | ci/wasm_build_library.py | 741 | # Step 10: Collect all object files | COMMENT |
| LOW⚡ | ci/clean-worktrees.py | 177 | # Step 1: plain git worktree remove --force | COMMENT |
| LOW⚡ | ci/clean-worktrees.py | 182 | # Step 2: clear read-only attrs, retry | COMMENT |
| LOW | ci/clean-worktrees.py | 204 | # Step 3: clud trash as last-resort quarantine | COMMENT |
| LOW⚡ | ci/profile_runner.py | 370 | # Step 1: Generate profiler | COMMENT |
| LOW⚡ | ci/profile_runner.py | 374 | # Step 2: Build profiler | COMMENT |
| LOW⚡ | ci/profile_runner.py | 378 | # Step 3: Run benchmarks | COMMENT |
| LOW⚡ | ci/profile_runner.py | 382 | # Step 4: Analyze results | COMMENT |
| LOW⚡ | ci/profile_runner.py | 386 | # Step 5: Optional callgrind analysis | COMMENT |
| LOW⚡ | ci/autoresearch/ble.py | 59 | # Step 1: Connect to device via serial RPC | COMMENT |
| LOW⚡ | ci/autoresearch/ble.py | 67 | # Step 2: Start BLE on device via serial RPC | COMMENT |
| LOW⚡ | ci/autoresearch/ble.py | 111 | # Step 4: Send ping over BLE | COMMENT |
| LOW⚡ | ci/autoresearch/ble.py | 180 | # Step 6: Clean up — stop BLE via serial | COMMENT |
| LOW | ci/autoresearch/ble.py | 90 | # Step 3: Connect to device via BLE | COMMENT |
| LOW | ci/autoresearch/ble.py | 124 | # Step 5: Read response | COMMENT |
| LOW | ci/autoresearch/ota.py | 78 | # Step 1: Start OTA on device | COMMENT |
| LOW⚡ | ci/autoresearch/ota.py | 102 | # Step 2: Connect host to ESP32 WiFi AP | COMMENT |
| LOW⚡ | ci/autoresearch/ota.py | 108 | # Step 3: Run HTTP tests | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 49 | # Step 1: Find clang-query | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 76 | # Step 2: AST query for functions missing noexcept | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 146 | # Step 3: Insert FL_NO_EXCEPT into function signatures | COMMENT |
| LOW⚡ | ci/lint/clang_tidy/noexcept_platforms.py | 256 | # Step 4: Apply fixes to files | COMMENT |
| LOW⚡ | ci/tools/add_fl_noexcept.py | 48 | # Step 1: Use clang-query to find functions missing noexcept (AST-accurate) | COMMENT |
| LOW⚡ | ci/tools/add_fl_noexcept.py | 122 | # Step 2: Insert FL_NO_EXCEPT at the correct position | COMMENT |
| LOW | ci/tools/add_fl_noexcept.py | 260 | # Step 1: Get AST-accurate list | COMMENT |
| LOW | ci/tools/add_fl_noexcept.py | 275 | # Step 2: Process each file | COMMENT |
| LOW | ci/meson/runner_helpers.py | 111 | # Step 1: Clean stale ninja deps using ninja -t cleandead | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 132 | # Step 2: Delete .ninja_deps to force full dependency re-scan | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 141 | # Step 3: Clear metadata caches | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 159 | # Step 4: Clean build artifacts (stale .obj files referencing old headers) | COMMENT |
| LOW⚡ | ci/meson/runner_helpers.py | 162 | # Step 5: Force Meson reconfiguration | COMMENT |
| LOW | ci/runners/avr8js_runner.py | 105 | # Step 1: Show what we're compiling | COMMENT |
| LOW | ci/runners/avr8js_runner.py | 146 | # Step 2: Locate compiled firmware | COMMENT |
| LOW | ci/runners/avr8js_runner.py | 166 | # Step 3: Run in avr8js Docker | COMMENT |
| LOW⚡ | ci/compiler/platformio_cache.py | 1013 | # Step 1: Collect all URLs from platformio.ini | COMMENT |
| LOW⚡ | ci/compiler/platformio_cache.py | 1019 | # Step 2: Deduplicate URLs | COMMENT |
| LOW⚡ | ci/compiler/platformio_cache.py | 1023 | # Step 3: Download and process all unique URLs | COMMENT |
| LOW⚡ | ci/compiler/platformio_cache.py | 1026 | # Step 4: Replace all URLs in platformio.ini with resolved local paths | COMMENT |
| LOW⚡ | ci/compiler/platformio_ini.py | 2205 | # Step 5: Process each unique artifact and collect URL replacements | COMMENT |
| 85 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test.py | 198 | CODE | |
| LOW | test.py | 293 | CODE | |
| LOW | mcp_server.py | 544 | CODE | |
| LOW | mcp_server.py | 1257 | CODE | |
| LOW | mcp_server.py | 1464 | CODE | |
| LOW | mcp_server.py | 1738 | CODE | |
| LOW | mcp_server.py | 1933 | CODE | |
| LOW | mcp_server.py | 2347 | CODE | |
| LOW | ci/ci-compile-pio-ci-working.py | 231 | CODE | |
| LOW | ci/ci-compile-pio-ci-working.py | 271 | CODE | |
| LOW | ci/ci-compile-pio-ci-working.py | 423 | CODE | |
| LOW | ci/ci-compile-pio-ci-working.py | 464 | CODE | |
| LOW | ci/scan_singleton_elision.py | 63 | CODE | |
| LOW | ci/scan_singleton_elision.py | 214 | CODE | |
| LOW | ci/early_exit_cache.py | 45 | CODE | |
| LOW | ci/early_exit_cache.py | 91 | CODE | |
| LOW | ci/early_exit_cache.py | 432 | CODE | |
| LOW | ci/decode_esp32_backtrace.py | 32 | CODE | |
| LOW | ci/test_all_lint_caches_stress.py | 248 | CODE | |
| LOW | ci/test_all_lint_caches_stress.py | 289 | CODE | |
| LOW | ci/autoresearch_loop.py | 93 | CODE | |
| LOW | ci/iwyu_wrapper.py | 71 | CODE | |
| LOW | ci/inspect_obj.py | 28 | CODE | |
| LOW | ci/run_tests.py | 70 | CODE | |
| LOW | ci/run_tests.py | 182 | CODE | |
| LOW | ci/run_tests.py | 252 | CODE | |
| LOW | ci/run_tests.py | 358 | CODE | |
| LOW | ci/wasm_build.py | 121 | CODE | |
| LOW | ci/wasm_build.py | 416 | CODE | |
| LOW | ci/wasm_build.py | 644 | CODE | |
| LOW | ci/wasm_build.py | 735 | CODE | |
| LOW | ci/wasm_build.py | 963 | CODE | |
| LOW | ci/wasm_build.py | 1115 | CODE | |
| LOW | ci/wasm_build.py | 1217 | CODE | |
| LOW | ci/wasm_build.py | 1606 | CODE | |
| LOW | ci/wasm_build.py | 1646 | CODE | |
| LOW | ci/wasm_build.py | 1715 | CODE | |
| LOW | ci/wasm_build.py | 138 | CODE | |
| LOW | ci/debug_attached.py | 374 | CODE | |
| LOW | ci/debug_attached.py | 1145 | CODE | |
| LOW | ci/compile_pch.py | 130 | CODE | |
| LOW | ci/compile_pch.py | 181 | CODE | |
| LOW | ci/compile_pch.py | 254 | CODE | |
| LOW | ci/wasm_build_library.py | 529 | CODE | |
| LOW | ci/check_backend_flag_drift.py | 169 | CODE | |
| LOW | ci/test_hash_fingerprint_stress.py | 436 | CODE | |
| LOW | ci/wasm_audio_url_test.py | 119 | CODE | |
| LOW | ci/rpc_schema_validator.py | 75 | CODE | |
| LOW | ci/wasm_audio_drag_drop_test.py | 178 | CODE | |
| LOW | ci/ci-compile.py | 39 | CODE | |
| LOW | ci/ci-compile.py | 107 | CODE | |
| LOW | ci/replace_extern_c.py | 35 | CODE | |
| LOW | ci/autoresearch_agent.py | 159 | CODE | |
| LOW | ci/autoresearch_agent.py | 313 | CODE | |
| LOW | ci/rpc_client.py | 313 | CODE | |
| LOW | ci/rpc_client.py | 429 | CODE | |
| LOW | ci/rpc_client.py | 585 | CODE | |
| LOW | ci/run-clang-format.py | 48 | CODE | |
| LOW | ci/run-clang-format.py | 67 | CODE | |
| LOW | ci/run-clang-format.py | 233 | CODE | |
| 249 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tidy.sh | 46 | # Check if IWYU is available | COMMENT |
| LOW | test.py | 140 | # Check if we already warned about these exact dumps | COMMENT |
| LOW | test.py | 559 | # Check if we need to use sequential execution to avoid resource conflicts | COMMENT |
| LOW | mcp_server.py | 1557 | # Check if it has a .ino file | COMMENT |
| LOW | mcp_server.py | 1580 | # Check if key files exist | COMMENT |
| LOW | mcp_server.py | 1686 | # Check if tests passed by looking for common failure indicators | COMMENT |
| LOW | mcp_server.py | 2042 | # Check if ELF file exists | COMMENT |
| LOW | mcp_server.py | 2111 | # Check if FastLED-related | COMMENT |
| LOW | mcp_server.py | 2132 | # Check if large symbol | COMMENT |
| LOW | mcp_server.py | 2426 | # Check if this is an approved include | COMMENT |
| LOW | mcp_server.py | 2508 | # Check if this is a background agent and refuse to run | COMMENT |
| LOW | mcp_server.py | 2536 | # Check if fastled command is available | COMMENT |
| LOW | mcp_server.py | 2550 | # Check if Docker is available (optional) | COMMENT |
| LOW | mcp_server.py | 2558 | # Check if playwright is available | COMMENT |
| LOW | mcp_server.py | 2729 | # Check if FastLED initialized | COMMENT |
| LOW | ci/wasm_compile.py | 48 | # Check if sketch is filtered out for WASM platform | COMMENT |
| LOW | ci/decode_esp32_backtrace.py | 231 | # Check if addresses provided on command line | STRING |
| LOW | ci/wasm_compile_native.py | 128 | # Check if any input is newer than output | STRING |
| LOW | ci/wasm_compile_native.py | 182 | # Check if compilation is needed | STRING |
| LOW | ci/wasm_compile_native.py | 312 | # Check if linking is needed (incremental linking) | STRING |
| LOW | ci/ci-cppcheck.py | 76 | # Check if this platformio.ini is for our board by looking at the path | COMMENT |
| LOW | ci/ci-cppcheck.py | 97 | # Check if there's a platformio.ini directly in the base directory | COMMENT |
| LOW | ci/inspect_obj.py | 93 | # Check if object file was provided and exists | COMMENT |
| LOW | ci/run_tests.py | 192 | # Check if this directory has actual executable test files | COMMENT |
| LOW | ci/wasm_build.py | 653 | # Check if source file list changed since last configure | COMMENT |
| LOW | ci/wasm_build.py | 726 | # Write file list hash marker for future staleness detection | COMMENT |
| LOW | ci/wasm_build.py | 893 | # Check if header unit BMI is up-to-date | COMMENT |
| LOW | ci/wasm_build.py | 1134 | # Check if recompilation needed (mtime check against wrapper, .ino, extra .cpp, and library) | COMMENT |
| LOW | ci/wasm_build.py | 1465 | # Check if linking needed (compare inputs vs cached output) | COMMENT |
| LOW | ci/debug_attached.py | 942 | # Check if all expect patterns were found | COMMENT |
| LOW | ci/js_lint_cache.py | 104 | # Check if linting is needed | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 183 | # Check if flags changed | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 187 | # Check if PCH changed | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 194 | # Check if source file changed | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 200 | # Check if any header dependency changed | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 617 | # Check if PCH was rebuilt (would invalidate all objects) | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 766 | # Check if partial object needs to be regenerated | COMMENT |
| LOW⚡ | ci/wasm_build_library.py | 769 | # Check if any input object is newer | COMMENT |
| LOW | ci/wasm_audio_drag_drop_test.py | 523 | # Check if we've seen the key diagnostic messages | COMMENT |
| LOW | ci/cpp_lint_cache.py | 142 | # Check if linting is needed | COMMENT |
| LOW | ci/ci-compile.py | 253 | # Check if we're compiling Esp32C3_SPI_ISR and auto-enable validation | COMMENT |
| LOW | ci/ci-compile.py | 354 | # Check if compilation stopped early due to max_failures | COMMENT |
| LOW | ci/replace_extern_c.py | 87 | # Check if compiler_control.h is already included | COMMENT |
| LOW | ci/autoresearch_agent.py | 342 | # Check if using streaming mode | COMMENT |
| LOW | ci/rpc_client.py | 515 | # Check if response ID matches request ID (JSON-RPC 2.0 correlation) | COMMENT |
| LOW | ci/rpc_client.py | 522 | # Check if match_key is present | COMMENT |
| LOW | ci/rpc_client.py | 641 | # Check if response ID matches expected ID (JSON-RPC 2.0 correlation) | COMMENT |
| LOW | ci/rpc_client.py | 683 | # Check if this is an ACK for async function (skip and continue waiting) | COMMENT |
| LOW | ci/python_lint_cache.py | 108 | # Check if pyright is needed | COMMENT |
| LOW | ci/wasm_compile_pch.py | 288 | # Check if any dependencies have changed (NEW: dependency tracking) | COMMENT |
| LOW | ci/wasm_compile_pch.py | 460 | # Check if rebuild is needed | COMMENT |
| LOW | ci/boards.py | 113 | # Check if framework is set, warn and auto-set to arduino if missing (except for native/stub platforms) | COMMENT |
| LOW | ci/boards.py | 175 | # Check if define contains any problematic patterns | COMMENT |
| LOW | ci/fix_has_include.py | 87 | # Check if any line is NOT a definition | COMMENT |
| LOW | ci/autoresearch/net.py | 376 | # Display results | COMMENT |
| LOW | ci/autoresearch/net.py | 725 | # Display results | COMMENT |
| LOW | ci/autoresearch/decode.py | 236 | # Display results | COMMENT |
| LOW | ci/autoresearch/decode.py | 313 | # Read file and base64-encode into JSON-RPC payload | COMMENT |
| LOW | ci/lint/stage_impls.py | 119 | # Print output for failed files | COMMENT |
| LOW | ci/lint/stage_impls.py | 178 | # Check if linting is needed | COMMENT |
| 109 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | build.py | 14 | CODE | |
| LOW | test.py | 5 | CODE | |
| LOW | mcp_server.py | 76 | CODE | |
| LOW | mcp_server.py | 79 | CODE | |
| LOW | mcp_server.py | 79 | CODE | |
| LOW | mcp_server.py | 79 | CODE | |
| LOW | ci/scan_singleton_elision.py | 18 | CODE | |
| LOW | ci/early_exit_cache.py | 16 | CODE | |
| LOW | ci/test_iwyu_integration.py | 9 | CODE | |
| LOW | ci/bloat.py | 55 | CODE | |
| LOW | ci/check_backend_flag_drift.py | 39 | CODE | |
| LOW | ci/ci-compile.py | 1 | CODE | |
| LOW | ci/esbuild_frontend.py | 1 | CODE | |
| LOW | ci/rpc_client.py | 35 | CODE | |
| LOW | ci/run-clang-format.py | 12 | CODE | |
| LOW | ci/run-clang-format.py | 12 | CODE | |
| LOW | ci/clean-worktrees.py | 20 | CODE | |
| LOW | ci/bin_bloat_attribute.py | 9 | CODE | |
| LOW | ci/github_project_drift_sync.py | 25 | CODE | |
| LOW | ci/github_project_sync.py | 13 | CODE | |
| LOW | ci/bin_bloat_analysis.py | 10 | CODE | |
| LOW | ci/fix_has_include.py | 26 | CODE | |
| LOW | ci/fix_has_include.py | 26 | CODE | |
| LOW | ci/autoresearch/runner.py | 11 | CODE | |
| LOW | ci/autoresearch/ble.py | 11 | CODE | |
| LOW | ci/autoresearch/ble.py | 25 | CODE | |
| LOW | ci/autoresearch/test_lpc_pin_toggle_rx.py | 34 | CODE | |
| LOW | ci/autoresearch/test_lpc_pin_toggle_rx.py | 37 | CODE | |
| LOW | ci/autoresearch/test_lpc_pin_toggle_rx.py | 39 | CODE | |
| LOW | ci/autoresearch/test_lpc_pin_toggle_rx.py | 41 | CODE | |
| LOW | ci/autoresearch/test_lpc_pin_toggle_rx.py | 42 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_squarewave.py | 26 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_squarewave.py | 29 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_squarewave.py | 31 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_squarewave.py | 33 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_objectfled.py | 24 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_objectfled.py | 27 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_objectfled.py | 29 | CODE | |
| LOW | ci/autoresearch/test_flexio_rx_objectfled.py | 31 | CODE | |
| LOW | ci/autoresearch/build_driver.py | 3 | CODE | |
| LOW | ci/autoresearch/net.py | 22 | CODE | |
| LOW | ci/autoresearch/__init__.py | 16 | CODE | |
| LOW | ci/autoresearch/__init__.py | 17 | CODE | |
| LOW | ci/autoresearch/__init__.py | 17 | CODE | |
| LOW | ci/autoresearch/__init__.py | 17 | CODE | |
| LOW | ci/autoresearch/__init__.py | 17 | CODE | |
| LOW | ci/autoresearch/__init__.py | 23 | CODE | |
| LOW | ci/autoresearch/__init__.py | 23 | CODE | |
| LOW | ci/autoresearch/__init__.py | 24 | CODE | |
| LOW | ci/autoresearch/__init__.py | 24 | CODE | |
| LOW | ci/autoresearch/__init__.py | 24 | CODE | |
| LOW | ci/autoresearch/__init__.py | 25 | CODE | |
| LOW | ci/autoresearch/__init__.py | 25 | CODE | |
| LOW | ci/autoresearch/debug_object_fled_small.py | 14 | CODE | |
| LOW | ci/autoresearch/debug_object_fled_small.py | 18 | CODE | |
| LOW | ci/autoresearch/driver_sweep.py | 29 | CODE | |
| LOW | ci/autoresearch/phases.py | 7 | CODE | |
| LOW | ci/autoresearch/phases.py | 9 | CODE | |
| LOW | ci/autoresearch/phases.py | 34 | CODE | |
| LOW | ci/autoresearch/phases.py | 59 | CODE | |
| 164 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ci/early_exit_cache.py | 285 | Check if full test suite result is cached (stdlib only, no ci.* imports). Verifies that: 1. Full run cache fi | STRING |
| HIGH | ci/standardized_smoke_sketches.py | 78 | Parse the manifest and return entries with line-number metadata. Comments (``#`` to end of line) and blank lines ar | STRING |
| HIGH | ci/compiled_size.py | 22 | Find build_info.json for a board, with optional example-specific search. Args: board: Board name ex | STRING |
| HIGH | ci/autoresearch_agent.py | 138 | Send JSON-RPC command and wait for response. Args: function: RPC function name (e.g., "configure", | STRING |
| HIGH | ci/rpc_client.py | 363 | Send JSON-RPC command and wait for response with mandatory ID correlation (async). Args: function: | STRING |
| HIGH | ci/rpc_client.py | 437 | Send RPC and wait for response containing specific key with mandatory ID correlation (async). Useful when devic | STRING |
| HIGH | ci/rpc_client.py | 586 | Wait for and parse JSON-RPC response with mandatory ID matching (async). Args: timeout: Maximum tim | STRING |
| HIGH | ci/autoresearch/staging.py | 39 | Stage ``.build/pio/<board>/`` and write a synthesised ``platformio.ini``. Args: board_name: PlatformIO env | STRING |
| HIGH | ci/fingerprint/config.py | 110 | Get a predefined cache configuration by name. Args: name: Cache name (e.g., "cpp_lint", "python_test", | STRING |
| HIGH | ci/fingerprint/rules.py | 163 | Get glob patterns for files monitored by a specific cache. This defines what files each cache should t | STRING |
| HIGH | ci/fingerprint/core.py | 124 | Compute MD5 hash of file content. Args: file_path: Path to file to hash Returns: | STRING |
| HIGH | ci/fingerprint/core.py | 147 | Determine if a source file has changed since the last known modification time. Two-layer verification | STRING |
| HIGH | ci/util/check_files.py | 162 | Read file content, using cache to avoid redundant I/O. Args: file_path: Path to the file to read | STRING |
| HIGH | ci/util/json_rpc_handler.py | 96 | Parse JSON-RPC commands from CLI argument. Supports three formats: 1. JSON string: '{"method":"ping","params":[ | STRING |
| HIGH | ci/util/github_url_converter.py | 13 | Convert a GitHub URL to a downloadable zip URL if possible. Args: url: GitHub URL (can be git, https, | STRING |
| HIGH | ci/util/sketch_resolver.py | 24 | Resolve sketch argument to examples directory path. Handles various input formats and performs disambiguation when | STRING |
| HIGH | ci/util/sketch_resolver.py | 104 | Parse timeout string with optional suffix into seconds. Supported formats: - Plain number: "120" -> 120 sec | STRING |
| HIGH | ci/util/pio_package_messages.py | 86 | Create PackageRequest from dictionary. Args: data: Dictionary with request fields Returns: | STRING |
| HIGH | ci/util/pio_package_messages.py | 158 | Create DaemonStatus from dictionary. Args: data: Dictionary with status fields Returns: | STRING |
| HIGH | ci/util/pio_package_messages.py | 219 | Convert string to BuildCommand. Args: value: Command string Returns: BuildComm | STRING |
| HIGH | ci/util/pio_package_messages.py | 302 | Create BuildRequest from dictionary. Args: data: Dictionary with request fields Returns: | STRING |
| HIGH | ci/util/pio_package_messages.py | 373 | Create BuildStatus from dictionary. Args: data: Dictionary with status fields Returns: | STRING |
| HIGH | ci/util/bin_2_elf.py | 14 | Run a command using subprocess and capture the output. Args: command (list or str): Command to run. | STRING |
| HIGH | ci/util/build_lock.py | 211 | Acquire the lock, waiting up to timeout seconds. Args: timeout: Maximum time to wait for l | STRING |
| HIGH | ci/util/build_lock.py | 335 | Context manager for acquiring libfastled build lock. Usage: with libfastled_build_lock(): | STRING |
| HIGH | ci/util/elf.py | 11 | Run a command using subprocess and capture the output. Args: command (list): Command to run. s | STRING |
| HIGH | ci/util/meson_example_runner.py | 118 | Compile FastLED examples using Meson. Args: build_dir: Meson build directory examples: List of | STRING |
| HIGH | ci/util/meson_example_runner.py | 258 | Run compiled FastLED examples using Meson test runner. Args: build_dir: Meson build directory | STRING |
| HIGH | ci/util/meson_example_runner.py | 396 | Complete Meson example build and execution workflow. Args: source_dir: Project root directory | STRING |
| HIGH | ci/util/dependency_loader.py | 50 | Get file patterns (globs) for a given operation. Args: operation: Operation name (e.g., "p | STRING |
| HIGH | ci/util/dependency_loader.py | 86 | Get full operation definition. Args: operation: Operation name Returns: | STRING |
| HIGH | ci/util/pyserial_monitor.py | 133 | Stream lines from serial port (blocking iterator). This method reads lines from the serial port and yields them | STRING |
| HIGH | ci/util/pyserial_monitor.py | 197 | Write data to serial port. Args: data: String or bytes to write to serial port Returns: | STRING |
| HIGH | ci/meson/build_config.py | 106 | Set up Meson build directory. Args: source_dir: Project root directory containing meson.build | STRING |
| HIGH | ci/compiler/board_example_utils.py | 101 | Resolve example name to path, ensuring it exists. Args: example: Example name (e.g., "Blink" or "examples/B | STRING |
| HIGH | ci/compiler/board_example_utils.py | 148 | Get the path to the .ino file for an example. Args: example: Example name (e.g., "Blink" or "Fx/FxWave2d") | STRING |
| HIGH | ci/compiler/board_example_utils.py | 221 | Filter examples based on board capabilities. Args: board: Board configuration examples: List of exa | STRING |
| HIGH | ci/compiler/compiler.py | 50 | Build a list of examples with proper resource management. Args: examples: List of example names or | STRING |
| HIGH | ci/compiler/platformio_ini.py | 936 | Static factory method to parse a platformio.ini file and return a PlatformIOIni instance. Args: | STRING |
| HIGH | ci/compiler/platformio_ini.py | 968 | Parse platformio.ini content from a string and return a fully formed instance. Args: conte | STRING |
| HIGH | ci/compiler/sketch_filter.py | 178 | Parse @filter block from .ino file. Supports both YAML-style (multi-line) and one-liner syntax. Colon after @fi | STRING |
| HIGH | ci/compiler/toolchain.py | 235 | Load build flags from build_flags.toml via ci.wasm_flags. Args: mode: Build mode (debug, fast_debug | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 144 | # up the lite-SCons extra_scripts harness work (FastLED/fbuild#553 | COMMENT |
| MEDIUM | mcp_server.py | 1481 | # Use the comprehensive bash lint script | COMMENT |
| MEDIUM | ci/autoresearch_loop.py | 102 | """Run comprehensive autoresearch loop across all configurations. | STRING |
| LOW | ci/debug_attached.py | 833 | # SerialMonitor exceptions are simpler - just pass | COMMENT |
| MEDIUM | ci/test_led_timing_conversion.py | 356 | """Verify we're testing a comprehensive set of chipsets.""" | STRING |
| MEDIUM | ci/boards.py | 854 | # the IDF libs from source with comprehensive heap poisoning + end-of- | COMMENT |
| MEDIUM | ci/autoresearch/phases.py | 270 | # SPI+DMA harness (#3456) — LPC845 only. LPC804 has no DMA peripheral | COMMENT |
| MEDIUM | ci/autoresearch/phases.py | 918 | # harness buffer (2 KB) push static RAM to 94% and the first RPC | COMMENT |
| MEDIUM | ci/autoresearch/phases.py | 1022 | # standalone examples/AutoResearchLpc/ harness was retired by FastLED #3030 | COMMENT |
| MEDIUM | ci/autoresearch/phases.py | 1739 | # BEFORE the gpio_only_mode early-return so the harness actually runs the | COMMENT |
| MEDIUM | ci/lint/__init__.py | 1 | """Lint module for FastLED comprehensive linting.""" | STRING |
| MEDIUM | ci/tools/gh/gh_healthcheck.py | 320 | """Print comprehensive health report. | STRING |
| MEDIUM⚡ | ci/util/symbol_analysis.py | 180 | """Analyze ALL symbols in ELF file using both nm and readelf for comprehensive coverage""" | STRING |
| MEDIUM | ci/util/symbol_analysis.py | 567 | """Generate a comprehensive report with optional call graph analysis""" | STRING |
| MEDIUM | ci/util/symbol_analysis.py | 890 | # Use comprehensive symbol analysis by default, basic only if requested | COMMENT |
| LOW⚡ | ci/util/git_historian.py | 272 | # Timeout or other error - just use whatever results we have | COMMENT |
| MEDIUM⚡ | ci/tests/test_platformio_url_resolution.py | 1176 | # MOCK - Configure CLI to return comprehensive platform data | COMMENT |
| MEDIUM | ci/lint_platformio/check_no_internal_platformio.py | 41 | # * Backend comparison harness (ci/check_backend_flag_drift.py — when | COMMENT |
| MEDIUM | ci/lint_platformio/check_no_internal_platformio.py | 51 | # The backend-comparison harness (planned, may not exist yet on master) | COMMENT |
| MEDIUM | ci/lint_platformio/check_no_internal_platformio.py | 67 | # Claude harness configuration (not part of the build/CI surface). Match | COMMENT |
| LOW | ci/perf/compile_perf.py | 162 | # Otherwise just return the filename | COMMENT |
| MEDIUM | ci/compiler/packages.py | 134 | """Platform specification with comprehensive validation""" | STRING |
| MEDIUM | ci/compiler/packages.py | 315 | """Package containing platforms and tools with comprehensive validation""" | STRING |
| MEDIUM | ci/compiler/packages.py | 437 | """Enhanced parser with comprehensive validation and error handling""" | STRING |
| LOW | tests/test_helpers.py | 38 | # For other files, just use basename | COMMENT |
| MEDIUM | tests/fl/audio/audio_reactive.cpp | 609 | // constants — checking total energy is more robust. | COMMENT |
| MEDIUM | tests/fl/audio/detector/vocal.hpp | 1057 | // The margin is what matters for robust detection. If both drift equally | COMMENT |
| MEDIUM | tests/fl/chipsets/encoders/ws2812.hpp | 132 | // Test with a larger number of LEDs to ensure iteration is robust | COMMENT |
| MEDIUM | examples/AutoResearch/AutoResearchLowMemory.h | 100 | // FastLED #3468: channels-API SCT+DMA clockless AutoResearch harness. | COMMENT |
| MEDIUM | examples/AutoResearch/AutoResearchLowMemory.h | 111 | // FastLED #3456: LPC845 SPI+DMA async AutoResearch harness (Phase 1 of | COMMENT |
| MEDIUM | examples/AutoResearch/AutoResearchLowMemory.h | 127 | // #3453 follow-up: LPC845 async UART TX harness (DMA + ISR chunk chain) and | COMMENT |
| MEDIUM | examples/AutoResearch/AutoResearchLowMemory.h | 459 | // FastLED #3456: SPI+DMA async AutoResearch harness. Binds | COMMENT |
| MEDIUM | examples/AutoResearch/AutoResearchLowMemory.h | 466 | // #3453/#3611: UART DMA AutoResearch harness. Binds either the raw | COMMENT |
| MEDIUM | examples/Json/JsonSketch.h | 5 | /// emphasizing clean syntax, type safety, default values, and robust | COMMENT |
| MEDIUM | src/fastled_progmem.h | 18 | /// Wrapper definitions to allow seamless use of PROGMEM in environments that have it | COMMENT |
| MEDIUM | …sp/32/drivers/rmt_rx/rmt_rx_5/rmt_rx_channel_5.cpp.hpp | 579 | // Peekable wait() telemetry (FastLED#3586): harness tests run with logs | COMMENT |
| MEDIUM | …/platforms/esp/32/drivers/rmt/rmt_5/network_detector.h | 33 | /// // WiFi is enabled - use robust configuration | COMMENT |
| MEDIUM⚡ | src/platforms/wasm/compiler/build_flags.toml | 127 | # Includes address/undefined behavior sanitizers and comprehensive debug info generation. | COMMENT |
| MEDIUM⚡ | src/platforms/wasm/compiler/build_flags.toml | 409 | # These flags catch common programming errors and enforce coding best practices. | COMMENT |
| MEDIUM⚡ | src/platforms/wasm/compiler/build_flags.toml | 119 | "-Wall", # Enable comprehensive warnings for library code | CODE |
| MEDIUM | …platforms/wasm/compiler/modules/audio/audio_manager.ts | 600 | // Can be changed to return AUDIO_WORKLET when file loading is more robust | COMMENT |
| MEDIUM | src/platforms/neopixelbus/clockless.h | 10 | /// to leverage the extensive platform support and advanced features | COMMENT |
| MEDIUM | src/platforms/adafruit/clockless.h | 10 | /// to leverage the proven reliability and platform-specific optimizations | COMMENT |
| MEDIUM | src/platforms/arm/lpc/clockless_arm_lpc_plu.h | 29 | // * NXP video, "Part II: Creative ways to leverage the LPC804 MCU's | COMMENT |
| MEDIUM | src/platforms/arm/common/m0clockless.h | 62 | // Cortex-M0+, M3, M4, M7: C++ version can leverage faster hardware | COMMENT |
| MEDIUM | …s/arm/teensy/teensy4_common/rx_flexpwm_channel.cpp.hpp | 238 | (void)low_ns; // HIGH-only classification is more robust to TX/RX skew | CODE |
| MEDIUM | src/fl/fx/2d/wave.h | 221 | /// When enabled, creates a seamless horizontal loop effect. | COMMENT |
| MEDIUM | src/fl/stl/unordered_map_basic.h | 25 | // captures the part that's purely arithmetic with no leverage threshold. | COMMENT |
| MEDIUM | src/fl/stl/noexcept.h | 5 | // so it is disabled everywhere until a robust cross-platform solution is found. | COMMENT |
| MEDIUM | src/fl/stl/bit_cast.h | 4 | // Bit cast is a safe version of reinterpret_cast that is robust against strict aliasing rules | COMMENT |
| MEDIUM | src/fl/stl/not_null.h | 228 | // Allows seamless integration with existing APIs expecting raw pointers | COMMENT |
| MEDIUM | src/fl/math/filter/filter.h | 95 | // output than pure median, still robust to outliers. | COMMENT |
| MEDIUM | src/fl/math/filter/filter.h | 586 | // float robust = atm.value(); | COMMENT |
| MEDIUM | src/fl/audio/detector/tempo_analyzer.cpp.hpp | 77 | // itself survives unchanged so beat sync is seamless on audio re-entry. | COMMENT |
| MEDIUM | src/third_party/stb/stb_vorbis.h | 67 | // 1.10 - 2017-03-03 - more robust seeking; fix negative ilog(); clear error in open_memory | COMMENT |
| MEDIUM | src/third_party/stb/stb_vorbis.cpp.hpp | 60 | // 1.10 - 2017-03-03 - more robust seeking; fix negative ilog(); clear error in open_memory | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ci/wasm_audio_url_test.py | 0 | (() => { const framecount = globalthis.fastledframecount || 0; const controllerrunning = !!( window.fastledcontroller && | STRING |
| HIGH | ci/wasm_audio_drag_drop_test.py | 0 | (() => { const framecount = globalthis.fastledframecount || 0; const controllerrunning = !!( window.fastledcontroller && | STRING |
| HIGH | ci/wasm_test.py | 0 | (() => { const framecount = globalthis.fastledframecount || 0; const controllerrunning = !!( window.fastledcontroller && | STRING |
| HIGH | ci/autoresearch/test_lpc_pin_toggle_rx.py | 0 | shim over rpcbench (`s`) so run_* keep their reply["result"] shape. device serial goes through fbuild's rust monitor (ne | STRING |
| HIGH | ci/autoresearch/test_flexio_rx_squarewave.py | 0 | shim over rpcbench (`s`) so run_* keep their reply["result"] shape. device serial goes through fbuild's rust monitor (ne | STRING |
| HIGH | ci/autoresearch/test_flexio_rx_objectfled.py | 0 | shim over rpcbench (`s`) so run_* keep their reply["result"] shape. device serial goes through fbuild's rust monitor (ne | STRING |
| HIGH | ci/autoresearch/test_lpc_ws2812_loopback.py | 0 | shim over rpcbench (`s`) so run_* keep their reply["result"] shape. device serial goes through fbuild's rust monitor (ne | STRING |
| HIGH | ci/lint/clang_tidy/noexcept_platforms.py | 0 | add #include "fl/stl/noexcept.h" if not present. returns true if added. | STRING |
| HIGH | ci/tools/add_fl_noexcept.py | 0 | add #include "fl/stl/noexcept.h" if not present. returns true if added. | STRING |
| HIGH | ci/refactor/add_fl_noexcept.py | 0 | add #include "fl/stl/noexcept.h" if not present. returns true if added. | STRING |
| HIGH | ci/lint_python/sys_path_checker.py | 0 | walk paths and return all .py files, filtering out excludes. | STRING |
| HIGH | ci/lint_python/dict_type_checker.py | 0 | walk paths and return all .py files, filtering out excludes. | STRING |
| HIGH | ci/lint_python/subprocess_capture_checker.py | 0 | walk paths and return all .py files, filtering out excludes. | STRING |
| HIGH | ci/lint_python/sys_path_checker.py | 0 | return true if any component of path matches an exclude pattern. | STRING |
| HIGH | ci/lint_python/dict_type_checker.py | 0 | return true if any component of path matches an exclude pattern. | STRING |
| HIGH | ci/lint_python/subprocess_capture_checker.py | 0 | return true if any component of path matches an exclude pattern. | STRING |
| HIGH | ci/hooks/auto_test_suggest.py | 0 | extract file path from claude code hook json input. | STRING |
| HIGH | ci/hooks/lint-on-save.py | 0 | extract file path from claude code hook json input. | STRING |
| HIGH | ci/hooks/compile_example.py | 0 | extract file path from claude code hook json input. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | mcp_server.py | 2731 | "globalThis.fastLEDFrameCount || 0" | CODE |
| HIGH | ci/wasm_audio_url_test.py | 207 | const frameCount = globalThis.fastLEDFrameCount || 0; | STRING |
| HIGH | ci/wasm_audio_url_test.py | 238 | return audio && audio.src && audio.src.length > 0; | STRING |
| HIGH | ci/wasm_audio_drag_drop_test.py | 175 | return await page.evaluate("globalThis.fastLEDFrameCount || 0") | CODE |
| HIGH | ci/wasm_audio_drag_drop_test.py | 413 | get: () => undefined, | STRING |
| HIGH | ci/wasm_audio_drag_drop_test.py | 425 | const msg = 'WORKER ERROR: ' + (e.message || e); | STRING |
| HIGH | ci/wasm_audio_drag_drop_test.py | 426 | window._workerErrors.push(msg); | STRING |
| HIGH | ci/wasm_audio_drag_drop_test.py | 469 | const frameCount = globalThis.fastLEDFrameCount || 0; | STRING |
| HIGH | ci/wasm_audio_drag_drop_test.py | 570 | if (label && label.textContent.includes('Brightness')) { | CODE |
| HIGH | ci/wasm_audio_drag_drop_test.py | 631 | workerActive: wm.isWorkerActive || false, | CODE |
| HIGH | ci/wasm_audio_drag_drop_test.py | 660 | workerMessages: window._workerMessages || 0, | CODE |
| HIGH | ci/rpc_client.py | 547 | # Determine success: void functions return null, treat as success | COMMENT |
| HIGH | ci/rpc_client.py | 711 | # Determine success: void functions return null, treat as success | COMMENT |
| HIGH | ci/test_rpc_edge_cases.py | 8 | 1. Different result types (null, string, number, boolean, array, dict) | STRING |
| HIGH⚡ | ci/test_rpc_edge_cases.py | 43 | json_response='{"jsonrpc":"2.0","result":null,"id":1}', | CODE |
| HIGH | ci/test_rpc_edge_cases.py | 136 | json_response='{"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params"},"result":null,"id":14}', | CODE |
| HIGH | ci/test_rpc_edge_cases.py | 167 | json_response='{"jsonrpc":"2.0","result":{"key1":null,"key2":"value"},"id":17}', | CODE |
| HIGH | ci/test_rpc_edge_cases.py | 223 | # Determine success: void functions return null, treat as success | COMMENT |
| HIGH | ci/wasm_test.py | 233 | const frameCount = globalThis.fastLEDFrameCount || 0; | STRING |
| HIGH | ci/hooks/rust_tool_guard.py | 28 | contains ` <tool> ` mid-chain (catches `cd /some/path && cargo | STRING |
| HIGH | ci/hooks/rust_tool_guard.py | 149 | (catches `cd /x && cargo build`, `(cd y; rustc …)`, etc.). | STRING |
| HIGH | ci/compiler/asset_scanner.py | 22 | "sha256": null, | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ci/inspect_binary.py | 64 | # Create a block of text with the extracted symbols | COMMENT |
| MEDIUM | ci/inspect_binary.py | 70 | # Create a dictionary of mangled to demangled symbols | COMMENT |
| MEDIUM | ci/util/bin_2_elf.py | 419 | # Create a dummy ELF file using the generated linker script | STRING |
| MEDIUM | ci/util/running_process_group.py | 207 | # Create a shared output handler for formatting | COMMENT |
| MEDIUM | ci/util/serial_monitor.py | 14 | # Create a monitor | STRING |
| MEDIUM | ci/util/create_build_dir.py | 409 | # Create a list of scripts with pre: prefix | COMMENT |
| MEDIUM | ci/tests/test_file_lock_rw.py | 219 | # Create a stale lock in the DB (dead PID) | COMMENT |
| MEDIUM | ci/tests/test_stale_lock_recovery.py | 145 | # Create an active lock (held by this process) | COMMENT |
| MEDIUM | ci/tests/test_fingerprint_integration.py | 383 | # Create a directory with only .py files (simulates ci/) | COMMENT |
| MEDIUM | ci/tests/test_fingerprint_integration.py | 399 | # Create a directory with only .cpp files (simulates src/) | COMMENT |
| MEDIUM | ci/tests/test_platformio_ini_class.py | 87 | # Create a test platformio.ini file | COMMENT |
| MEDIUM | ci/tests/test_platformio_ini_class.py | 139 | # Create an invalid platformio.ini | COMMENT |
| MEDIUM | ci/tests/test_fingerprint_cache.py | 723 | # Create a test file (5KB) for reasonable speed | COMMENT |
| MEDIUM | ci/tests/test_fingerprint_cache.py | 789 | # Create a directory | COMMENT |
| MEDIUM | ci/tests/test_fingerprint_cache.py | 807 | # Create a directory | COMMENT |
| MEDIUM | ci/tests/test_clean_worktrees.py | 134 | # Create a commit beyond origin/master. There is no origin in this | COMMENT |
| MEDIUM⚡ | ci/meson/meson_setup_execute.py | 199 | # This file is auto-generated by meson_runner.py to configure tool paths. | COMMENT |
| MEDIUM | ci/meson/filter_examples_for_stub.py | 27 | # Create a minimal Board-like object for stub platform | COMMENT |
| MEDIUM | ci/examples/fingerprint_cache_demo.py | 32 | # Create a source file | COMMENT |
| MEDIUM | ci/compiler/platformio_cache.py | 433 | # Create a thread-local cancel event | COMMENT |
| MEDIUM | ci/compiler/platformio_cache.py | 449 | # Create a thread-local cancel event | COMMENT |
| MEDIUM | ci/compiler/platformio_cache.py | 664 | # Create a cache key based on the installation type and path | COMMENT |
| MEDIUM | ci/compiler/platformio_cache.py | 764 | # Create a session cache key for this artifact | COMMENT |
| MEDIUM⚡ | src/platforms/wasm/compiler/build_flags.toml | 336 | "-sMODULARIZE=1", # Create a factory function (not global) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pyproject.toml | 62 | # 2.2.23 — adds the `shrink` module scaffold + ShrinkMode CLI | COMMENT |
| MEDIUM | .docs/io_refactoring_summary.md | 92 | │ └── cstdio.cpp.hpp # Top-level orchestration (200 lines, was 400) | CODE |
| MEDIUM | ci/ci-compile.py | 78 | # --run needs wasm_compile for Playwright test orchestration | COMMENT |
| MEDIUM | ci/docker_utils/README.md | 27 | | `build.sh`, `docker_build_utils.py`, `generate_platformio_ini.py` | #2812 | In-container layered build orchestration. | CODE |
| MEDIUM | ci/lint_platformio/check_root_platformio_lockdown.py | 39 | # justification. Section headers like "[env:foo]" are scaffolding, not | COMMENT |
| MEDIUM | ci/meson/compile.py | 944 | # We're in the post-error context window | COMMENT |
| MEDIUM | …rms/esp/32/drivers/i2s/channel_engine_i2s_esp32dev.cpp | 613 | // FastLED#3526 Phase 2c — mode dispatch scaffolding | COMMENT |
| MEDIUM⚡ | …arm/lpc/drivers/sct_dma/channel_engine_lpc_sct_dma.cpp | 171 | // show() kicks the transmission and the v1 scaffold returns | COMMENT |
| MEDIUM⚡ | …arm/lpc/drivers/sct_dma/channel_engine_lpc_sct_dma.cpp | 173 | // once the TODO(3459) body lands) or READY (scaffold no-op). | COMMENT |
| MEDIUM⚡ | …arm/lpc/drivers/sct_dma/channel_engine_lpc_sct_dma.cpp | 181 | // scaffold this happens on the first poll; the real implementation | COMMENT |
| MEDIUM | tests/fl/channels/rx_sct_capture.cpp | 3 | /// scaffold (FastLED#3015). | COMMENT |
| MEDIUM | .github/workflows/project_drift_sync.yml | 3 | # Nightly safety net behind the event-driven add-to-project workflows. | COMMENT |
| MEDIUM⚡ | src/platforms/arm/lpc/README.md | 241 | - [#2849](https://github.com/FastLED/FastLED/pull/2849) — LPC11xx detection scaffold | CODE |
| MEDIUM⚡ | src/platforms/arm/lpc/README.md | 241 | - [#2849](https://github.com/FastLED/FastLED/pull/2849) — LPC11xx detection scaffold | CODE |
| MEDIUM⚡ | src/platforms/arm/lpc/README.md | 242 | - [#2859](https://github.com/FastLED/FastLED/pull/2859) — LPC15xx detection scaffold | CODE |
| MEDIUM⚡ | src/platforms/arm/lpc/README.md | 242 | - [#2859](https://github.com/FastLED/FastLED/pull/2859) — LPC15xx detection scaffold | CODE |
| MEDIUM | src/platforms/arm/lpc/is_lpc.h | 44 | // scaffold — driver wiring is a follow-up. The clockless path will reuse | COMMENT |
| MEDIUM | src/platforms/arm/lpc/is_lpc.h | 83 | // port scaffold — driver wiring is a follow-up. | COMMENT |
| MEDIUM | src/platforms/arm/lpc/rx_sct_capture.h | 4 | /// **Status:** scaffold + decoder. The register-level SCT/DMA capture path | COMMENT |
| MEDIUM | …s/arm/lpc/drivers/sct_dma/channel_engine_lpc_sct_dma.h | 11 | /// **Status:** scaffold + interface. The channels-API surface (canHandle, | COMMENT |
| MEDIUM | …s/arm/lpc/drivers/sct_dma/channel_engine_lpc_sct_dma.h | 15 | /// `clockless_arm_lpc_pwm_dma.h`. Same scaffold-then-bench pattern this | COMMENT |
| MEDIUM | src/fl/channels/README.md | 760 | **Why:** Established 2026-06-27 during the #3428 FlexIO-SPI / ObjectFLED-SPI implementation. The initial design forked i | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ci/util/build_lock.py | 412 | # Example usage | COMMENT |
| LOW⚡ | ci/meson/wasm_cross_file.ini | 7 | # Usage: | COMMENT |
| LOW | tests/profile/profile_result.h | 21 | /// Usage example: | COMMENT |
| LOW | examples/SpecialDrivers/ESP/DriverTest/TestRunner.h | 52 | /// Example usage: | COMMENT |
| LOW | src/platforms/esp/32/debug_setup.hpp | 10 | /// Example usage: | COMMENT |
| LOW | src/platforms/esp/32/drivers/spi/channel_driver_spi.h | 196 | /// Example usage: | COMMENT |
| LOW | src/fl/net/ota.h | 49 | /// Example usage: | COMMENT |
| LOW | src/fl/fx/fx2d_to_1d.h | 22 | /// Example usage: | COMMENT |
| LOW | src/fl/fx/2d/flowfield.h | 218 | /// Example usage: | COMMENT |
| LOW | src/fl/fx/2d/wave.h | 158 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/result.h | 9 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/charconv.h | 29 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/stdio.h | 29 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/stdio.h | 58 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/stdio.h | 76 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/stdio.h | 632 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/stdio.h | 663 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/stdio.h | 709 | /// Example usage: | COMMENT |
| LOW | src/fl/stl/iterator.h | 54 | /// Usage example: | COMMENT |
| LOW | src/fl/stl/iterator.h | 149 | /// Usage example: | COMMENT |
| LOW | src/fl/stl/asio/http/server.h | 7 | /// Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ci/github_project_sync.py | 258 | def update_date(project_id: str, item_id: str, field_id: str, date_value: str) -> None: | STRING |
| LOW | ci/iwyu_cache.py | 97 | def set_source_tree_hash(self, h: str) -> None: | CODE |
| LOW | ci/autoresearch/__init__.py | 28 | __all__ = [ | CODE |
| LOW | ci/lint/__init__.py | 9 | __all__ = ["parse_lint_args", "DurationTracker", "LintOrchestrator", "LintStage"] | CODE |
| LOW | ci/tools/gh/__init__.py | 7 | __all__ = ["WorkflowScanner", "HealthChecker"] | CODE |
| LOW | ci/fingerprint/__init__.py | 17 | __all__ = [ | CODE |
| LOW | ci/util/build_process_tracker.py | 181 | def _update_child_pids(self, client_pid: int) -> None: | CODE |
| LOW | ci/util/meson_runner.py | 51 | __all__ = [ | CODE |
| LOW | ci/util/lock_database.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/toolchain_downloader.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/process_status_display.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/pio_process_killer.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/running_process_group.py | 503 | def _update_process_output(self, process: RunningProcess) -> None: | CODE |
| LOW | ci/util/download_breadcrumb.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/pio_package_daemon.py | 177 | def update_status(state: DaemonState, message: str, **kwargs: Any) -> None: | CODE |
| LOW | ci/util/file_lock_rw.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/file_lock_rw.py | 36 | __all__ = [ | CODE |
| LOW | ci/util/serial_monitor.py | 226 | def set_serial_port(self, serial_port: serial.Serial) -> None: | CODE |
| LOW | ci/util/meson_example_runner.py | 72 | def update_message(self, message: str) -> None: | CODE |
| LOW | ci/util/cache_lock.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/file_lock_rw_util.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/util/global_interrupt_handler.py | 15 | def set_debug_test(enabled: bool = True) -> None: | CODE |
| LOW | ci/util/version_lockfile.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/lint_platformio/run_all_checkers.py | 35 | __all__ = [ | CODE |
| LOW | ci/meson/runner.py | 46 | def _setup_sanitizer_env(source_dir: Path, verbose: bool) -> None: | CODE |
| LOW | ci/meson/__init__.py | 30 | __all__ = [ | CODE |
| LOW | ci/meson/build_config.py | 75 | __all__ = [ | CODE |
| LOW | ci/compiler/platformio_cache.py | 275 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/compiler/platformio_ini.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | ci/compiler/platformio_ini.py | 1095 | def set_option(self, section: str, option: str, value: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/platforms/wasm/compiler/index.ts | 324 | print(...argsWithTime); | CODE |
| HIGH | src/platforms/wasm/compiler/index.ts | 338 | print(...argsWithTime); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ci/debug_attached.py | 374 | CODE | |
| LOW | ci/boards.py | 488 | CODE | |
| LOW | ci/util/meson_example_runner.py | 383 | CODE | |
| LOW | ci/util/fbuild_runner.py | 615 | CODE | |
| LOW | ci/meson/runner.py | 104 | CODE | |
| LOW | ci/meson/test_execution.py | 57 | CODE | |
| LOW | ci/meson/meson_markers.py | 25 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ci/demo_symbol_analysis.py | 86 | # List of boards to analyze (you can add more) | COMMENT |
| MEDIUM | src/fl/stl/stdio.h | 291 | // This is a basic implementation - could be enhanced | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/misc/colorimetric_strategy_table.cpp | 5713 | || text_contains(text, "placeholder") | CODE |
| LOW | tests/profile/benchmark_json_parsers.cpp | 151 | printf(" Download it with: curl -o tests/profile/benchmark_1mb.json https://microsoftedge.github.io/Demos/json | CODE |
| LOW | tests/profile/benchmark_json_parsers.cpp | 221 | printf(" https://microsoftedge.github.io/Demos/json-dummy-data/\n"); | CODE |
| LOW | tests/profile/json_memory_profile.cpp | 494 | printf(" Download it with: curl -o tests/profile/benchmark_1mb.json https://microsoftedge.github.io/Demos/json | CODE |
| LOW | tests/profile/json_performance.cpp | 195 | printf(" curl -o %s https://microsoftedge.github.io/Demos/json-dummy-data/1MB.json\n", filepath); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/platforms/avr/fastspi_avr.h | 533 | // TODO: implement ARMHardwareSPIOutput | COMMENT |
| LOW | src/platforms/avr/fastspi_avr.h | 721 | // TODO: implement ARMHardwareSPIOutput | COMMENT |