Repository Analysis

esphome/esphome

ESPHome is a system to control your ESP32, ESP8266, BK72xx, RP2040 by simple yet powerful configuration files and control them remotely through Home Automation systems.

10.4 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of esphome/esphome, a C++ project with 11,613 GitHub stars. SynthScan v2.0 examined 812,057 lines of code across 8407 source files, recording 7471 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 10.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).

10.4
Adjusted Score
10.4
Raw Score
100%
Time Factor
2026-08-28
Last Push
11.6K
Stars
C++
Language
812.1K
Lines of Code
8.4K
Files
7.5K
Pattern Hits
2026-08-29
Scan Date
0.01
HC Hit Rate

What These Metrics Mean

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

Score History

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

Severity Breakdown

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

CRITICAL 0HIGH 71MEDIUM 533LOW 6867

Directory Score Breakdown

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

Pattern Findings

The scanner identified 7471 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers4917 hits · 4268 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/test_api_client.py21def test_component_shim_reexports_runtime_client() -> None:CODE
LOWtests/unit_tests/test_api_client.py32async def test_async_run_logs_full_flow(caplog) -> None:CODE
LOWtests/unit_tests/test_api_client.py89async def test_async_run_logs_never_resolves_without_crash_lines() -> None:CODE
LOWtests/unit_tests/test_api_client.py123def test_run_logs_suppresses_keyboard_interrupt() -> None:CODE
LOWtests/unit_tests/test_api_client.py142async def test_async_run_logs_passes_deep_sleep(CODE
LOWtests/unit_tests/test_api_client.py169async def test_async_run_logs_mqtt_resolver_feeds_addresses(caplog) -> None:CODE
LOWtests/unit_tests/test_api_client.py205async def test_async_run_logs_mqtt_resolver_no_addresses_keeps_running() -> None:CODE
LOWtests/unit_tests/test_api_client.py239async def test_async_run_logs_mqtt_resolver_stopped_on_teardown() -> None:CODE
LOWtests/unit_tests/test_api_client.py276async def test_async_run_logs_mqtt_resolver_crash_still_stops_cleanly(caplog) -> None:CODE
LOWtests/unit_tests/test_api_client.py309async def test_async_run_logs_connect_cancels_mqtt_discovery() -> None:CODE
LOWtests/unit_tests/test_api_client.py353async def test_async_run_logs_connect_before_discovery_skips_lookup() -> None:CODE
LOWtests/unit_tests/test_api_client.py384async def test_async_run_logs_mqtt_resolver_duplicate_addresses_logged(caplog) -> None:CODE
LOWtests/unit_tests/test_api_client.py421async def test_async_run_logs_base_exception_escape_logged_at_teardown(caplog) -> None:CODE
LOWtests/unit_tests/test_api_client.py456async def test_async_run_logs_stubborn_worker_cancelled_at_teardown() -> None:CODE
LOWtests/unit_tests/test_upload_targets.py19def test_get_port_type_serial(port: str) -> None:CODE
LOWtests/unit_tests/test_upload_targets.py24def test_get_port_type_bootsel() -> None:CODE
LOWtests/unit_tests/test_upload_targets.py34def test_get_port_type_mqttip() -> None:CODE
LOWtests/unit_tests/test_upload_targets.py48def test_get_port_type_network(port: str) -> None:CODE
LOWtests/unit_tests/test_upload_targets.py53def test_port_type_values_are_stable() -> None:CODE
LOWtests/unit_tests/test_upload_targets.py67def test_main_re_exports_for_backwards_compat() -> None:CODE
LOWtests/unit_tests/test_web_server_logs.py140def test_consume_emits_only_log_frames(CODE
LOWtests/unit_tests/test_web_server_logs.py173def test_stream_returns_false_when_connect_fails(CODE
LOWtests/unit_tests/test_web_server_logs.py223def test_run_logs_streams_then_reconnects_until_interrupt(CODE
LOWtests/unit_tests/test_web_server_logs.py114def test_build_urls_dedups_and_skips_unresolvable(CODE
LOWtests/unit_tests/test_web_server_logs.py156def test_consume_ignores_unterminated_trailing_frame(CODE
LOWtests/unit_tests/test_web_server_logs.py192def test_stream_returns_true_when_established_then_dropped(CODE
LOWtests/unit_tests/test_web_server_logs.py251def test_run_logs_passes_basic_auth(monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOWtests/unit_tests/test_web_server_logs.py281def test_run_logs_no_auth_when_credentials_missing(CODE
LOWtests/unit_tests/test_web_server_logs.py308def test_run_logs_raises_on_auth_failure(monkeypatch: pytest.MonkeyPatch) -> None:CODE
LOWtests/unit_tests/test_web_server_logs.py321def test_run_logs_retries_on_transient_status(CODE
LOWtests/unit_tests/test_web_server_logs.py343def test_run_logs_raises_on_permanent_status(CODE
LOWtests/unit_tests/test_web_server_logs.py358def test_run_logs_backs_off_on_repeated_failure(CODE
LOWtests/unit_tests/test_web_server_logs.py377def test_run_logs_reports_unresolvable(CODE
LOWtests/unit_tests/test_wizard.py44def test_sanitize_quotes_replaces_with_escaped_char():CODE
LOWtests/unit_tests/test_wizard.py58def test_config_file_fallback_ap_includes_descriptive_name(CODE
LOWtests/unit_tests/test_wizard.py91def test_config_file_should_include_ota(default_config: dict[str, Any]):CODE
LOWtests/unit_tests/test_wizard.py104def test_config_file_should_include_ota_when_password_set(CODE
LOWtests/unit_tests/test_wizard.py121def test_config_file_should_include_api_encryption_key(CODE
LOWtests/unit_tests/test_wizard.py139def test_wizard_write_sets_platform(CODE
LOWtests/unit_tests/test_wizard.py178def test_wizard_upload_config(tmp_path: Path, monkeypatch: MonkeyPatch):CODE
LOWtests/unit_tests/test_wizard.py329def test_safe_print_step_prints_step_number_and_description(monkeypatch: MonkeyPatch):CODE
LOWtests/unit_tests/test_wizard.py353def test_default_input_uses_default_if_no_input_supplied(monkeypatch: MonkeyPatch):CODE
LOWtests/unit_tests/test_wizard.py369def test_default_input_uses_user_supplied_value(monkeypatch: MonkeyPatch):CODE
LOWtests/unit_tests/test_wizard.py386def test_strip_accents_removes_diacritics():CODE
LOWtests/unit_tests/test_wizard.py402def test_wizard_rejects_path_with_invalid_extension():CODE
LOWtests/unit_tests/test_wizard.py417def test_wizard_rejects_existing_files(tmp_path):CODE
LOWtests/unit_tests/test_wizard.py507def test_wizard_offers_better_node_name(CODE
LOWtests/unit_tests/test_wizard.py540def test_wizard_requires_correct_platform(CODE
LOWtests/unit_tests/test_wizard.py564def test_wizard_requires_correct_board(CODE
LOWtests/unit_tests/test_wizard.py588def test_wizard_requires_valid_ssid(CODE
LOWtests/unit_tests/test_wizard.py612def test_wizard_write_protects_existing_config(CODE
LOWtests/unit_tests/test_wizard.py633def test_wizard_accepts_ota_password(CODE
LOWtests/unit_tests/test_wizard.py660def test_wizard_accepts_rpipico_board(tmp_path: Path, monkeypatch: MonkeyPatch):CODE
LOWtests/unit_tests/test_wizard.py691def test_fallback_psk_uses_secrets_choice(CODE
LOWtests/unit_tests/test_address_cache.py13def test_normalize_simple_hostname() -> None:CODE
LOWtests/unit_tests/test_address_cache.py20def test_normalize_removes_trailing_dots() -> None:CODE
LOWtests/unit_tests/test_address_cache.py28def test_normalize_converts_to_lowercase() -> None:CODE
LOWtests/unit_tests/test_address_cache.py102def test_get_addresses_auto_detection() -> None:CODE
LOWtests/unit_tests/test_address_cache.py124def test_add_mdns_addresses_stores_and_normalizes() -> None:CODE
LOWtests/unit_tests/test_address_cache.py137def test_add_mdns_addresses_empty_is_noop() -> None:CODE
4857 more matches not shown…
Decorative Section Separators407 hits · 1480 pts
SeverityFileLineSnippetContext
MEDIUM…ker/ha-addon-rootfs/etc/cont-init.d/30-esphome-fork.sh2# ==============================================================================COMMENT
MEDIUM…ker/ha-addon-rootfs/etc/cont-init.d/30-esphome-fork.sh7# ==============================================================================COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py135# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py137# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py168# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py170# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py218# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py220# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py85# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_logs.py87# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py27# =============================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py29# =============================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py35 # =====================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py37 # =====================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py73 # =====================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py75 # =====================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py96 # =====================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py98 # =====================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py138# =============================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py140# =============================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py194# =============================================================================COMMENT
MEDIUMtests/unit_tests/test_preference_hash_stability.py196# =============================================================================COMMENT
MEDIUMtests/unit_tests/test_loader.py563# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_loader.py565# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_loader.py24# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_loader.py26# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_loader.py179# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_loader.py183# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_loader.py343# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_loader.py345# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_substitutions.py709# ── IncludeFile / package loading tests ────────────────────────────────────COMMENT
MEDIUMtests/unit_tests/test_config_normalization.py202# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_config_normalization.py205# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_config_normalization.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_config_normalization.py123# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_ota.py53# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_ota.py55# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_ota.py167# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_web_server_ota.py169# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py102# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py104# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py119# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py121# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py173# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py175# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py213# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py215# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py300# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py302# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py446# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py448# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py509# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py511# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py759# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py761# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py846# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py848# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py1563# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py1565# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_bundle.py1597# ---------------------------------------------------------------------------COMMENT
347 more matches not shown…
Over-Commented Block1027 hits · 1009 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/test_lazy_imports.py41API_HEAVY_MODULES = ("aioesphomeapi",)COMMENT
LOWtests/unit_tests/components/test_rp2_generate_boards.py21 #define PIN_SERIAL1_RX (1u)COMMENT
LOWtests/integration/test_status_flags.py141COMMENT
LOWtests/components/core/test_component_iterator.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/core/test_lock_free_queue_single.cpp1// Exercises the LockFreeQueue PlainAtomic path under ESPHOME_THREAD_SINGLE —COMMENT
LOWtests/components/psram/validate.esp32-idf.yaml1# Config-only: with no options the single-mode ESP32 resolves mode -> quad andCOMMENT
LOWtests/components/psram/validate.esp32-p4-idf.yaml1# Config-only: the ESP32-P4 has a distinct value set (hex mode, 20/100/200MHz).COMMENT
LOWtests/components/mitsubishi_cn105/common.h1#pragma onceCOMMENT
LOW…ts/mitsubishi_cn105/climate/mitsubishi_cn105_tests.cpp201 // Partial frame (declares payload len=5, but we cut it short)COMMENT
LOW…ts/mitsubishi_cn105/climate/mitsubishi_cn105_tests.cpp221 // ─────────────────────────────COMMENT
LOW…omponents/epaper_spi/display/test_t133a01_transfer.cpp21COMMENT
LOWtests/components/camera/common.yaml1# Camera is a base component auto-loaded by esp32_cameraCOMMENT
LOWtests/components/bluetooth_proxy/test.rp2040-ard.yaml1# Full proxy on the rp2 BLE hub: active defaults to true here (esp32 parity),COMMENT
LOW…mponents/ble_device_base/test_scan_response_merger.cpp1// The host test build gets this from the manifest override; clang-tidy does not.COMMENT
LOWtests/components/ble_device_base/test_raw_callback.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/packet_transport/common.h1#pragma onceCOMMENT
LOWtests/components/time/is_valid.cpp1// Regression tests for ESPTime::is_valid() optional checks.COMMENT
LOWtests/components/time/posix_tz.cpp1// Tests for time conversion functions, DST detection, and ESPTime::strptime.COMMENT
LOW…/components/modbus_controller/command_payload_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/modbus_client/common.yaml1# The modbus_client actions are self-contained hub devices: each takes the hub (auto-resolved when thereCOMMENT
LOWtests/components/modbus/heap_probe_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/modbus/modbus_client_hub_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/benchmarks/core/bench_scheduler.cpp1#include <benchmark/benchmark.h>COMMENT
LOWtests/benchmarks/components/api/bench_helpers.h1#pragma onceCOMMENT
LOW…uild_components/common/uart_bridge_2/esp32-s3-idf.yaml1# Common configuration for 2-channel UART bridge/expander chipsCOMMENT
LOW…t_build_components/common/uart_bridge_2/esp32-idf.yaml1# Common configuration for 2-channel UART bridge/expander chipsCOMMENT
LOW…uild_components/common/uart_bridge_4/esp32-s3-idf.yaml1# Common configuration for 4-channel UART bridge/expander chipsCOMMENT
LOW…t_build_components/common/uart_bridge_4/esp32-idf.yaml1# Common configuration for 4-channel UART bridge/expander chipsCOMMENT
LOW…build_components/common/test_display/test_display.yaml1# Shared "test display" package for component tests.COMMENT
LOWscript/build_language_schema.py1161 if isinstance(k, vol.Marker) and callable(k.schema):COMMENT
LOWscript/merge_component_configs.py161 return dataCOMMENT
LOWscript/determine-jobs.py721 benchmarked_components = {COMMENT
LOWscript/list-components.py61 changed = changed_files(args.branch)COMMENT
LOWscript/analyze_component_buses.py361 # Note: Components using $component_dir are now groupable because the mergeCOMMENT
LOWscript/split_components_for_ci.py101COMMENT
LOWscript/split_components_for_ci.py161 # Components with the same signature stay in the same batchesCOMMENT
LOW.github/workflows/sync-device-classes.yml61 uv pip install --system -r requirements.txt -r requirements_test.txtCOMMENT
LOW.github/workflows/codeql.yml1# For most projects, this workflow file will not need changing; you simply needCOMMENT
LOW.github/workflows/codeql.yml41 # - language: c-cppCOMMENT
LOW.github/workflows/codeql.yml61 languages: ${{ matrix.language }}COMMENT
LOW.github/workflows/ci.yml321 runs-on: ubuntu-24.04COMMENT
LOW.github/workflows/ci.yml1181 version: "0.11.15"COMMENT
LOWesphome/git.py41# entry lock so that recovery cannot hang forever behind another process.COMMENT
LOWesphome/git.py221COMMENT
LOWesphome/git.py781 # can tell a quiescent complete entry from one mid-rewrite,COMMENT
LOWesphome/yaml_util.py721 "While constructing a mapping",COMMENT
LOWesphome/util.py221 # real result is already on its way out; raising here wouldCOMMENT
LOWesphome/framework_helpers.py1081 # No sha, no size, and the server sent no usableCOMMENT
LOWesphome/coroutine.py81 # Examples: async_tcp (200)COMMENT
LOWesphome/coroutine.py121 WEB_SERVER_OTA = 52COMMENT
LOWesphome/loader.py341# ``esphome/component_aliases.py`` (CI and a unit test fail if the registryCOMMENT
LOWesphome/loader.py541 try:COMMENT
LOWesphome/api_client.py121 # safe_print handles the dashboard \033 escaping and falls backCOMMENT
LOWesphome/__main__.py2581 parser_bundle.add_argument(COMMENT
LOWesphome/core/time.h1#pragma onceCOMMENT
LOWesphome/core/helpers.cpp1#include "esphome/core/helpers.h"COMMENT
LOWesphome/core/progmem.h1#pragma onceCOMMENT
LOWesphome/core/progmem.h21#define ESPHOME_snprintf_P snprintf_PCOMMENT
LOWesphome/core/progmem.h41#define ESPHOME_PSTR(s) (s)COMMENT
LOWesphome/core/version.h1#pragma onceCOMMENT
967 more matches not shown…
Unused Imports433 hits · 386 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/test_api_client.py3CODE
LOWtests/unit_tests/test_web_server_logs.py3CODE
LOWtests/unit_tests/test_address_cache.py3CODE
LOWtests/unit_tests/test_async_thread.py3CODE
LOWtests/unit_tests/test_arduino_library.py3CODE
LOWtests/unit_tests/test_lazy_imports.py15CODE
LOWtests/unit_tests/test_platformio_runner.py3CODE
LOWtests/unit_tests/test_compiled_config.py3CODE
LOWtests/unit_tests/test_config_prefetch.py3CODE
LOWtests/unit_tests/test_platformio_extra_script.py3CODE
LOWtests/unit_tests/test_dashboard_import.py10CODE
LOWtests/unit_tests/test_platformio_registry.py3CODE
LOWtests/unit_tests/test_size_summary.py3CODE
LOWtests/unit_tests/test_mqtt.py3CODE
LOWtests/unit_tests/test_espota2.py3CODE
LOWtests/unit_tests/test_util.py3CODE
LOWtests/unit_tests/test_happy_eyeballs.py3CODE
LOWtests/unit_tests/test_web_server_ota.py3CODE
LOWtests/unit_tests/test_bundle.py3CODE
LOWtests/unit_tests/test_download_types.py8CODE
LOWtests/unit_tests/test_platform_hooks.py9CODE
LOWtests/unit_tests/test_espidf_runner.py3CODE
LOWtests/unit_tests/test_stacktrace.py3CODE
LOWtests/unit_tests/test_zeroconf.py11CODE
LOWtests/unit_tests/test_main.py3CODE
LOWtests/unit_tests/test_resolver.py3CODE
LOWtests/unit_tests/test_arduino8266_framework.py3CODE
LOWtests/unit_tests/test_web_server_helpers.py3CODE
LOWtests/unit_tests/components/test_esp8266.py3CODE
LOWtests/unit_tests/components/test_rp2_generate_boards.py3CODE
LOWtests/unit_tests/components/file/test_image.py3CODE
LOWtests/unit_tests/components/shelly_dimmer/test_light.py3CODE
LOW…ts/unit_tests/components/esp8266/test_build_surgery.py3CODE
LOWtests/unit_tests/components/api/test_api_proto.py31CODE
LOW…it_tests/components/api/test_api_protobuf_generator.py9CODE
LOWtests/unit_tests/components/gsl3670/test_touchscreen.py3CODE
LOWtests/unit_tests/components/font/test_init.py3CODE
LOWtests/unit_tests/components/bme68x_bsec2/test_init.py3CODE
LOWtests/unit_tests/components/lvgl/test_table_codegen.py3CODE
LOWtests/unit_tests/components/lvgl/test_table_config.py3CODE
LOWtests/unit_tests/build_gen/test_build_tool.py3CODE
LOWtests/unit_tests/build_gen/test_platformio.py3CODE
LOWtests/unit_tests/build_gen/test_espidf.py3CODE
LOWtests/unit_tests/build_helpers/test_size_summary.py3CODE
LOWtests/unit_tests/build_helpers/test_ccache.py3CODE
LOWtests/unit_tests/build_helpers/test_ninja.py3CODE
LOWtests/integration/test_large_message_batching.py3CODE
LOWtests/integration/test_host_mode_many_entities.py3CODE
LOWtests/integration/test_wait_until_ordering.py10CODE
LOWtests/integration/test_select_stringref_trigger.py3CODE
LOW…sts/integration/test_binary_sensor_invalidate_state.py10CODE
LOWtests/integration/test_gpio_expander_cache.py3CODE
LOWtests/integration/test_text_command.py8CODE
LOWtests/integration/test_api_action_responses.py6CODE
LOWtests/integration/test_host_mode_basic.py3CODE
LOWtests/integration/test_script_array_params.py10CODE
LOW…ts/integration/test_logger_buffered_recursion_guard.py24CODE
LOWtests/integration/test_addressable_light_transition.py19CODE
LOWtests/integration/test_uart_mock_modbus.py18CODE
LOWtests/integration/conftest.py3CODE
373 more matches not shown…
Self-Referential Comments91 hits · 276 pts
SeverityFileLineSnippetContext
MEDIUMtests/unit_tests/test_loader.py123 # Create a mock module with FILTER_SOURCE_FILES functionCOMMENT
MEDIUMtests/unit_tests/test_writer.py852 # Create a real file with markersCOMMENT
MEDIUMtests/unit_tests/test_writer.py942 # Create a file with begin marker but no end markerCOMMENT
MEDIUMtests/unit_tests/test_writer.py964 # Create a file with duplicate begin markersCOMMENT
MEDIUMtests/unit_tests/test_writer.py1119 # Create an absolute custom build path directory with contentsCOMMENT
MEDIUMtests/unit_tests/test_writer.py1217 # Create a file in cwd that must NOT be cleanedCOMMENT
MEDIUMtests/unit_tests/test_writer.py1582 # Create a read-only file (simulating git pack files on Windows)COMMENT
MEDIUMtests/unit_tests/test_writer.py1616 # Create a subdirectory with read-only filesCOMMENT
MEDIUMtests/unit_tests/test_writer.py2240 # Create a source fileCOMMENT
MEDIUMtests/unit_tests/test_writer.py2361 # Create an existing source file in the build treeCOMMENT
MEDIUMtests/unit_tests/test_substitutions.py209 # Create an OrderedDict config with substitutionsCOMMENT
MEDIUMtests/unit_tests/test_substitutions.py299 # Create a minimal valid configCOMMENT
MEDIUMtests/unit_tests/test_substitutions.py329 # Create a minimal valid configCOMMENT
MEDIUMtests/unit_tests/test_espota2.py744 # Create a real firmware fileCOMMENT
MEDIUMtests/unit_tests/test_espota2.py954 # Create a real firmware fileCOMMENT
MEDIUMtests/unit_tests/test_git.py122 # Create a simple git repo to test withCOMMENT
MEDIUMtests/unit_tests/test_git.py729 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py795 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py844 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py898 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py977 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py805 fetch_head.touch() # Create the fileCODE
MEDIUMtests/unit_tests/test_git.py854 fetch_head.touch() # Create the fileCODE
MEDIUMtests/unit_tests/test_git.py987 fetch_head.touch() # Create the fileCODE
MEDIUMtests/unit_tests/test_util.py917 # Create the expected directory structureCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py135 # Create an empty secrets fileCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py145 # Create a YAML file with a secret but no secrets.yamlCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py123 # Create a YAML file with a secret that doesn't existCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py166 # Create a subdirectory with a YAML file that uses secretsCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py370 # Create a dict with unsorted keysCOMMENT
MEDIUMtests/unit_tests/test_helpers.py783 # Create a fileCOMMENT
MEDIUMtests/unit_tests/test_helpers.py794 # Create a file where we want to create a directoryCOMMENT
MEDIUMtests/unit_tests/test_helpers.py888 # Create a directory and make it read-onlyCOMMENT
MEDIUMtests/unit_tests/test_main.py1623 # Create the actual firmware files so they existCOMMENT
MEDIUMtests/unit_tests/test_main.py1731 # Create a test firmware fileCOMMENT
MEDIUMtests/unit_tests/test_main.py4998 # Create a mock OSError with a specific messageCOMMENT
MEDIUMtests/unit_tests/test_main.py5026 # Create a mock OSError without a messageCOMMENT
MEDIUMtests/unit_tests/test_config_helpers.py43 # Create the filter functionCOMMENT
MEDIUMtests/unit_tests/test_config_helpers.py82 # Create the filter functionCOMMENT
MEDIUMtests/unit_tests/test_config_helpers.py111 # Create the filter functionCOMMENT
MEDIUMtests/unit_tests/core/test_config.py722 # Create a file (not a directory)COMMENT
MEDIUMtests/unit_tests/core/test_config.py725 # Create a directory without __init__.pyCOMMENT
MEDIUMtests/integration/conftest.py97 # Create the test cache directory if it doesn't existCOMMENT
MEDIUMtests/integration/conftest.py380 # Create a future to signal when connectedCOMMENT
MEDIUMtests/integration/conftest.py526 # Create a pseudo-terminal to make the binary think it's running interactivelyCOMMENT
MEDIUMtests/integration/test_oversized_payloads.py42 # Create an oversized payload (>32768 bytes which is our new limit)COMMENT
MEDIUMtests/integration/test_oversized_payloads.py47 # Create a message with oversized payloadCOMMENT
MEDIUMtests/integration/test_oversized_payloads.py170 # Create an oversized payload (>32768 bytes which is our new limit)COMMENT
MEDIUMtests/integration/test_host_mode_entity_fields.py25 # Create a map of entity names to entity infoCOMMENT
MEDIUMtests/integration/test_object_id_api_verification.py98 # Create a map of entity names to entity infoCOMMENT
MEDIUMtests/integration/test_scheduler_rapid_cancellation.py31 # Create a future to signal test completionCOMMENT
MEDIUMtests/integration/test_scheduler_recursive_timeout.py30 # Create a future to signal test completionCOMMENT
MEDIUMtests/integration/test_scheduler_heap_stress.py31 # Create a future to signal test completionCOMMENT
MEDIUM…s/integration/test_scheduler_simultaneous_callbacks.py31 # Create a future to signal test completionCOMMENT
MEDIUMtests/integration/test_device_id_in_state.py108 # Create a mapping of entity key to expected device_idCOMMENT
MEDIUMtests/integration/test_entity_icon.py25 # Create a map of entity names to entity infoCOMMENT
MEDIUMtests/integration/test_scheduler_bulk_cleanup.py31 # Create a future to signal test completionCOMMENT
MEDIUMtests/integration/test_scheduler_defer_stress.py31 # Create a future to signal test completionCOMMENT
MEDIUMtests/integration/test_host_mode_fan_preset.py28 # Create a map of fan names to entity infoCOMMENT
MEDIUM…sts/integration/test_scheduler_defer_cancel_regular.py19 # Create a future to signal test completionCOMMENT
31 more matches not shown…
Deep Nesting245 hits · 238 pts
SeverityFileLineSnippetContext
LOWdocker/build.py102CODE
LOWdocker/generate_tags.py35CODE
LOWtests/unit_tests/test_compiled_config.py200CODE
LOWtests/unit_tests/test_substitutions.py44CODE
LOWtests/unit_tests/test_stacktrace.py121CODE
LOWtests/unit_tests/components/api/test_api_proto.py99CODE
LOWtests/integration/test_scheduler_defer_cancel.py12CODE
LOWtests/integration/test_scheduler_self_keyed.py19CODE
LOWtests/integration/test_scheduler_self_keyed.py36CODE
LOWtests/integration/test_api_action_responses.py19CODE
LOWtests/integration/test_api_action_responses.py49CODE
LOWtests/integration/test_scheduler_string_test.py12CODE
LOWtests/integration/test_scheduler_string_test.py41CODE
LOWtests/integration/conftest.py517CODE
LOWtests/integration/test_api_custom_services.py16CODE
LOWtests/integration/test_api_custom_services.py58CODE
LOW…integration/test_scheduler_internal_id_no_collision.py18CODE
LOW…integration/test_scheduler_internal_id_no_collision.py47CODE
LOWtests/integration/test_scheduler_numeric_id_test.py12CODE
LOWtests/integration/test_scheduler_numeric_id_test.py42CODE
LOWtests/integration/test_scheduler_pool.py14CODE
LOWtests/integration/test_scheduler_pool.py54CODE
LOWtests/integration/test_api_message_size_batching.py14CODE
LOWtests/integration/test_crc8_helper.py14CODE
LOWtests/integration/test_crc8_helper.py44CODE
LOWtests/integration/test_api_homeassistant.py23CODE
LOWtests/integration/test_api_homeassistant.py116CODE
LOWtests/integration/test_loop_disable_enable.py15CODE
LOWtests/integration/test_loop_disable_enable.py61CODE
LOWtests/integration/test_sensor_filters_sliding_window.py15CODE
LOWtests/integration/test_sensor_filters_sliding_window.py39CODE
LOWtests/integration/test_scheduler_rapid_cancellation.py14CODE
LOWtests/integration/test_scheduler_rapid_cancellation.py45CODE
LOWtests/integration/test_sensor_timeout_filter.py15CODE
LOWtests/integration/test_sensor_timeout_filter.py35CODE
LOWtests/integration/test_scheduler_recursive_timeout.py13CODE
LOWtests/integration/test_scheduler_recursive_timeout.py43CODE
LOWtests/integration/state_utils.py333CODE
LOWtests/integration/test_script_wait_on_boot.py31CODE
LOWtests/integration/test_script_wait_on_boot.py61CODE
LOWtests/integration/test_script_queued_idle_loop.py14CODE
LOWtests/integration/test_script_queued_idle_loop.py38CODE
LOWtests/integration/test_wait_until_reentrant_restart.py22CODE
LOWtests/integration/test_wait_until_reentrant_restart.py37CODE
LOWtests/integration/test_light_automations.py15CODE
LOWtests/integration/test_light_automations.py36CODE
LOWtests/integration/test_scheduler_defer_fifo_simple.py12CODE
LOWtests/integration/test_api_conditional_memory.py15CODE
LOWtests/integration/test_api_conditional_memory.py39CODE
LOWtests/integration/test_sensor_filters_value_list.py16CODE
LOWtests/integration/test_sensor_filters_value_list.py44CODE
LOW…egration/test_alarm_control_panel_state_transitions.py23CODE
LOWtests/integration/test_script_delay_params.py27CODE
LOWtests/integration/test_script_delay_params.py55CODE
LOWtests/integration/test_action_concurrent_reentry.py15CODE
LOWtests/integration/test_action_concurrent_reentry.py42CODE
LOWtests/integration/test_api_action_timeout.py20CODE
LOWtests/integration/test_api_action_timeout.py54CODE
LOWtests/integration/test_automations.py14CODE
LOWtests/integration/test_automations.py38CODE
185 more matches not shown…
Cross-File Repetition33 hits · 165 pts
SeverityFileLineSnippetContext
HIGHtests/integration/test_light_effect_zero_brightness.py0send a light command and wait for the state response.STRING
HIGHtests/integration/test_light_binary_effect_off_phase.py0send a light command and wait for the state response.STRING
HIGHtests/integration/test_light_constant_brightness.py0send a light command and wait for the state response.STRING
HIGH…ts/component_tests/binary_sensor/test_binary_sensor.py0when the gpio binary sensor is set in the yaml file, it should be registered in mainSTRING
HIGHtests/component_tests/text/test_text.py0when the gpio binary sensor is set in the yaml file, it should be registered in mainSTRING
HIGHtests/component_tests/gpio/test_gpio_binary_sensor.py0when the gpio binary sensor is set in the yaml file, it should be registered in mainSTRING
HIGH…ts/component_tests/binary_sensor/test_binary_sensor.py0when the mandatory fields are set in the yaml, they should be set in mainSTRING
HIGHtests/component_tests/text_sensor/test_text_sensor.py0when the mandatory fields are set in the yaml, they should be set in mainSTRING
HIGHtests/component_tests/button/test_button.py0when the mandatory fields are set in the yaml, they should be set in mainSTRING
HIGHtests/component_tests/text/test_text.py0when the mandatory fields are set in the yaml, they should be set in mainSTRING
HIGH…ts/component_tests/binary_sensor/test_binary_sensor.py0test that the "internal" config value is correctly setSTRING
HIGHtests/component_tests/text_sensor/test_text_sensor.py0test that the "internal" config value is correctly setSTRING
HIGHtests/component_tests/button/test_button.py0test that the "internal" config value is correctly setSTRING
HIGHtests/component_tests/text/test_text.py0test that the "internal" config value is correctly setSTRING
HIGH…s/component_tests/mipi_spi/test_padding_and_offsets.py0run schema + final validation and return the validated config.STRING
HIGHtests/component_tests/mipi_spi/test_page_selection.py0run schema + final validation and return the validated config.STRING
HIGHtests/component_tests/mipi_spi/test_display_metadata.py0run schema + final validation and return the validated config.STRING
HIGHesphome/components/qspi_dbi/__init__.py0the 'ili9xxx' component is deprecated and no new models will be added to it. new model prs should target the newer and mSTRING
HIGHesphome/components/st7735/__init__.py0the 'ili9xxx' component is deprecated and no new models will be added to it. new model prs should target the newer and mSTRING
HIGHesphome/components/ili9xxx/__init__.py0the 'ili9xxx' component is deprecated and no new models will be added to it. new model prs should target the newer and mSTRING
HIGHesphome/components/mipi_rgb/display.py0it is safe to use strapping pins as rgb output data bits, as they are outputs only, and not initialised until after bootSTRING
HIGHesphome/components/rpi_dpi_rgb/display.py0it is safe to use strapping pins as rgb output data bits, as they are outputs only, and not initialised until after bootSTRING
HIGHesphome/components/st7701s/display.py0it is safe to use strapping pins as rgb output data bits, as they are outputs only, and not initialised until after bootSTRING
HIGHesphome/components/ln882x/__init__.py0██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝ ██║ █╗ ██║██████STRING
HIGHesphome/components/bk72xx/__init__.py0██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝ ██║ █╗ ██║██████STRING
HIGHesphome/components/rtl87xx/__init__.py0██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝ ██║ █╗ ██║██████STRING
HIGHesphome/components/ln882x/boards.py0██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝ ██║ █╗ ██║██████STRING
HIGHesphome/components/bk72xx/boards.py0██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝ ██║ █╗ ██║██████STRING
HIGHesphome/components/rtl87xx/boards.py0██╗ ██╗ █████╗ ██████╗ ███╗ ██╗██╗███╗ ██╗ ██████╗ ██║ ██║██╔══██╗██╔══██╗████╗ ██║██║████╗ ██║██╔════╝ ██║ █╗ ██║██████STRING
HIGHesphome/components/esp32/__init__.py0binary-download entries for a built libretiny firmware. used by device-builder (esphome/device-builder), via ``importlibSTRING
HIGHesphome/components/esp8266/__init__.py0binary-download entries for a built libretiny firmware. used by device-builder (esphome/device-builder), via ``importlibSTRING
HIGHesphome/components/rp2/__init__.py0binary-download entries for a built libretiny firmware. used by device-builder (esphome/device-builder), via ``importlibSTRING
HIGHesphome/components/libretiny/__init__.py0binary-download entries for a built libretiny firmware. used by device-builder (esphome/device-builder), via ``importlibSTRING
Redundant / Tautological Comments102 hits · 165 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/core/test_entity_helpers.py843 # Set friendly_name to a specific valueCOMMENT
LOWtests/unit_tests/core/test_entity_helpers.py873 # Set friendly_name to emptyCOMMENT
LOWtests/integration/test_host_mode_many_entities.py42 # Check if we have received minimum expected statesCOMMENT
LOWtests/integration/test_gpio_expander_cache.py100 # Check if this line contains a read operation we're trackingCOMMENT
LOWtests/integration/conftest.py94 # Check if the native platform is installed (the actual indicator of a populated cache)COMMENT
LOWtests/integration/conftest.py622 # Check if process diedCOMMENT
LOWtests/integration/test_api_message_size_batching.py174 # Check if we've received states from all expected entitiesCOMMENT
LOWtests/integration/test_api_homeassistant.py99 # Check if this service call is one we're waiting forCOMMENT
LOWtests/integration/test_loop_disable_enable.py82 # Check if component was re-enabled (count > 10)COMMENT
LOWtests/integration/test_sensor_filters_sliding_window.py55 # Check if we received the expected final valueCOMMENT
LOWtests/integration/test_sensor_filters_sliding_window.py230 # Check if both have received their final valuesCOMMENT
LOWtests/integration/test_sensor_filters_ring_buffer.py50 # Check if we've received enough updates from all sensorsCOMMENT
LOWtests/integration/state_utils.py254 # Check if we've now seen all entitiesCOMMENT
LOWtests/integration/test_scheduler_heap_stress.py72 # Check if we've executed all 1000 callbacks (0-999)COMMENT
LOWtests/integration/test_areas_and_devices.py100 # Check if we have all initial statesCOMMENT
LOWtests/integration/test_scheduler_defer_stress.py67 # Check if we've executed all 1000 defers (0-999)COMMENT
LOWtests/integration/test_automations.py123 # Check if we have all 3 completionsCOMMENT
LOWtests/component_tests/conftest.py41 # Check if config directory exists, if not use parent directoryCOMMENT
LOWtests/component_tests/conftest.py43 # Set config_path to a dummy yaml file in the config directoryCOMMENT
LOWtests/component_tests/esp32/test_esp32.py63 # Check if the variant is validCOMMENT
LOWtests/component_tests/sntp/test_init.py140 # Check if merging occurredCOMMENT
LOWscript/determine-jobs.py710 # Check if benchmark infrastructure changedCOMMENT
LOWscript/determine-jobs.py717 # Check if any directly changed component has benchmarksCOMMENT
LOWscript/determine-jobs.py998 # Check if this is a platform-specific fileCOMMENT
LOWscript/analyze_component_buses.py239 # Check if buses are defined directly (not via packages)COMMENT
LOWscript/analyze_component_buses.py364 # Check if component is explicitly isolatedCOMMENT
LOWscript/analyze_component_buses.py369 # Check if component is a base bus componentCOMMENT
LOWscript/analyze_component_buses.py375 # Check if component uses !extend or !remove directivesCOMMENT
LOWscript/analyze_component_buses.py382 # Check if component defines buses directly in test filesCOMMENT
LOWscript/analyze_component_buses.py512 # Check if buses are compatibleCOMMENT
LOWscript/analyze_component_buses.py646 # Output resultsCOMMENT
LOWscript/test_build_components.py178 # Check if last part is a number (version)COMMENT
LOWscript/helpers.py656 # Check if any core C++ or header files changed firstCOMMENT
LOWscript/helpers.py991 # Check if we found any new componentsSTRING
LOWscript/split_components_for_ci.py191 # Check if adding this component would exceed the batch sizeCOMMENT
LOWscript/split_components_for_ci.py312 # Check if this is a merged signature (contains +)COMMENT
LOWscript/api_protobuf/api_protobuf.py524 # Check if this is a packed_buffer field (zero-copy packed repeated)COMMENT
LOWscript/api_protobuf/api_protobuf.py527 # Check if this repeated field has fixed_array_with_length_define optionCOMMENT
LOWscript/api_protobuf/api_protobuf.py532 # Check if this repeated field has fixed_array_size optionCOMMENT
LOWscript/api_protobuf/api_protobuf.py535 # Check if this repeated field has fixed_array_size_define optionCOMMENT
LOWscript/api_protobuf/api_protobuf.py901 # Check if this is being called from a repeated field contextCOMMENT
LOWscript/api_protobuf/api_protobuf.py1652 # Check if underlying type can use dump_fieldCOMMENT
LOWscript/api_protobuf/api_protobuf.py1766 # Check if we should skip encoding when all elements are zeroCOMMENT
LOWscript/api_protobuf/api_protobuf.py1980 # Check if underlying type can use dump_fieldCOMMENT
LOWscript/api_protobuf/api_protobuf.py2021 # Check if this is a pointer field by looking for container_pointer optionCOMMENT
LOWscript/api_protobuf/api_protobuf.py2030 # Check if this should use FixedVector instead of std::vectorCOMMENT
LOWscript/api_protobuf/api_protobuf.py2168 # Check if this is const char* elementsCOMMENT
LOWscript/api_protobuf/api_protobuf.py2210 # Check if this is a fixed-size typeCOMMENT
LOWscript/api_protobuf/api_protobuf.py2219 # Check if inner type produces a constant size (doesn't depend on value)COMMENT
LOWscript/api_protobuf/api_protobuf.py2360 # Check if this message is used by other messagesCOMMENT
LOWscript/api_protobuf/api_protobuf.py2549 # Check if this message has a base classCOMMENT
LOWscript/api_protobuf/api_protobuf.py2759 # Check if this message uses inline_encode — if so, skip generating standaloneCOMMENT
LOWscript/api_protobuf/api_protobuf.py2768 # Check if this message wants speed-optimized encode/calculate_size.COMMENT
LOWscript/api_protobuf/api_protobuf.py2834 # Check if message has any non-deprecated fieldsCOMMENT
LOW.github/workflows/ci.yml999 # Check if /mnt has more free space than / before bind mountingCOMMENT
LOW.github/workflows/ci.yml1219 # Check if memory impact extraction script exists on target branchCOMMENT
LOW.github/workflows/ci.yml1231 # Check if test files exist on the target branch for the requestedCOMMENT
LOWesphome/yaml_util.py671 # Check if key is hashableCOMMENT
LOWesphome/yaml_util.py684 # Check if it is a duplicate keyCOMMENT
LOWesphome/config_helpers.py188 # Check if logger config existsCOMMENT
42 more matches not shown…
Cross-Language Confusion20 hits · 131 pts
SeverityFileLineSnippetContext
HIGHtests/unit_tests/test_substitutions.py596 yaml_util.add_context(inner, {"a": "${undefined}"})CODE
HIGHtests/unit_tests/test_yaml_util.py887 value = _located("${undefined}", "root.yaml", 5, 10)CODE
HIGHtests/unit_tests/test_yaml_util.py1623 """An empty (null) frontmatter document is treated as no frontmatter."""STRING
HIGHtests/unit_tests/test_cpp_generator.py13 (cg.RawExpression("foo && bar"), "foo && bar"),CODE
HIGHtests/unit_tests/test_cpp_generator.py324 (cg.RawStatement("foo && bar"), "foo && bar"),CODE
HIGHtests/unit_tests/test_storage_json.py980 """Unset build/firmware paths serialize as JSON null, not str(None)."""STRING
HIGHtests/unit_tests/components/test_esp_stacktrace.py159 # EXCVADDR pointing at data (heap/null) is not a code address, must be ignoredCOMMENT
HIGH…it_tests/components/api/test_api_protobuf_generator.py65 assert get_varint64_ifdef(file_desc, guards) == (True, "USE_X || USE_Y")CODE
HIGH…it_tests/components/api/test_api_protobuf_generator.py71 assert get_varint64_ifdef(file_desc, guards) == (True, "USE_X || USE_Y")CODE
HIGH…it_tests/components/api/test_api_protobuf_generator.py92 assert _make_ifdef_line("USE_X || USE_Y") == "#if defined(USE_X) || defined(USE_Y)"CODE
HIGHesphome/mqtt.py307 _LOGGER.error("MQTT log topic set to null, can't start MQTT logs")CODE
HIGHesphome/cpp_helpers.py117 cond = "index == 0" if count >= 255 else f"index == 0 || index > {count}"CODE
HIGHesphome/core/config.py221# DEVICE_CLASS_MAX_LENGTH == MAX_DEVICE_CLASS_LENGTH - 1 (C++ includes the null)COMMENT
HIGHesphome/core/entity_helpers.py145 lines.append(f" if (index == 0 || index > {count}) return {empty_var};")CODE
HIGHesphome/core/entity_helpers.py155 f' if (index == 0 || index > {count}) return "";\n'CODE
HIGHesphome/core/entity_helpers.py347 - If !has_own_name && is_name_add_mac_suffix_enabled():STRING
HIGHesphome/components/rp2040_pio_led_strip/light.py92 ; out null, 24 ; discard the byte lane replication of the FIFO since we only need 8 bits (not needed????)CODE
HIGHesphome/components/uart/__init__.py356 # - Serial (UART0): TX=1 or null, RX=3 or nullCOMMENT
HIGHesphome/components/uart/__init__.py357 # - Serial (UART0 swap): TX=15 or null, RX=13 or nullCOMMENT
HIGHesphome/components/uart/__init__.py358 # - Serial1: TX=2 or null, RX=8 or nullCOMMENT
Excessive Try-Catch Wrapping89 hits · 116 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/test_framework_helpers.py1212 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
MEDIUMtests/integration/conftest.py574 print(f"Error reading from PTY: {result[0]}", file=sys.stderr)CODE
LOWtests/integration/test_syslog.py113 except Exception: # noqa: BLE001CODE
LOWtests/integration/online_image_utils.py91 except Exception as exc:CODE
LOWtests/integration/online_image_utils.py146 except Exception as exc:CODE
MEDIUMtests/integration/online_image_utils.py61def handler(reader, writer):CODE
MEDIUMtests/integration/online_image_utils.py106def handler(reader, writer):CODE
LOWtests/integration/raw_api_client.py105 except Exception:CODE
LOWtests/integration/test_udp.py83 except Exception: # noqa: BLE001CODE
LOWscript/merge_component_configs.py485 except Exception as e: # noqa: BLE001CODE
MEDIUMscript/merge_component_configs.py486 print(f"Error merging configs: {e}", file=sys.stderr)CODE
MEDIUMscript/ci_add_metadata_to_json.py43 print(f"Error: JSON file not found: {args.json_file}", file=sys.stderr)CODE
MEDIUMscript/ci_add_metadata_to_json.py50 print(f"Error loading JSON: {e}", file=sys.stderr)CODE
MEDIUMscript/ci_add_metadata_to_json.py57 print("Error: --components must be a JSON array", file=sys.stderr)CODE
MEDIUMscript/ci_add_metadata_to_json.py68 print(f"Error parsing components: {e}", file=sys.stderr)CODE
MEDIUMscript/ci_add_metadata_to_json.py81 print(f"Error writing JSON: {e}", file=sys.stderr)CODE
LOWscript/platformio_install_deps.py144 except Exception as err: # noqa: BLE001CODE
LOWscript/platformio_install_deps.py248 except Exception as err: # noqa: BLE001CODE
LOWscript/platformio_install_deps.py281 except Exception as unlock_err: # noqa: BLE001CODE
LOWscript/build_helpers.py114 except Exception: # noqa: BLE001CODE
MEDIUMscript/build_helpers.py399 print(f"Error compiling {label} for {', '.join(components)}")CODE
LOWscript/build_helpers.py401 except Exception as e: # noqa: BLE001CODE
MEDIUMscript/build_helpers.py402 print(f"Error compiling {label} for {', '.join(components)}: {e}")CODE
MEDIUMscript/build_helpers.py482 print(f"Error obtaining platform components: {e}")CODE
LOWscript/stress_test_connect.py24 except Exception as e: # noqa: BLE001CODE
LOWscript/ci-custom.py128 except Exception:CODE
LOWscript/analyze_component_buses.py139 except Exception: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
LOWscript/analyze_component_buses.py175 except Exception: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
LOWscript/analyze_component_buses.py233 except Exception: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
MEDIUMscript/analyze_component_buses.py342 print(f"Error: {tests_dir} does not exist", file=sys.stderr)CODE
MEDIUMscript/ci_memory_impact_comment.py657 print("Error: Failed to load PR analysis JSON", file=sys.stderr)CODE
LOWscript/test_build_components.py509 except Exception as e: # pylint: disable=broad-exception-caughtCODE
MEDIUMscript/test_build_components.py510 print(f"Error merging configs for {components}: {e}")CODE
LOWscript/helpers.py264 except Exception: # noqa: BLE001 - never let a bad test config crash groupingCODE
LOWscript/helpers.py560 except Exception as e:CODE
MEDIUMscript/split_components_for_ci.py251 print(f"Error parsing components JSON: {e}", file=sys.stderr)CODE
MEDIUMscript/split_components_for_ci.py264 print(f"Error parsing directly-changed JSON: {e}", file=sys.stderr)CODE
LOWscript/test_component_grouping.py66 except Exception as e: # noqa: BLE001CODE
MEDIUMscript/test_component_grouping.py67 print(f"Error running test: {e}")CODE
LOWesphome/stacktrace.py78 except Exception as exc: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/stacktrace.py99 except Exception as exc: # noqa: BLE001 # pylint: disable=broad-exceptCODE
MEDIUMesphome/stacktrace.py75def _resolve_handler(self) -> bool:CODE
LOWesphome/config.py777 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/config.py821 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/config.py854 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/config.py1501 except Exception:CODE
LOWesphome/storage_json.py326 except Exception: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/storage_json.py427 except Exception: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/storage_json.py456 except Exception: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/util.py320 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/util.py383 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/mqtt.py286 except Exception: # pylint: disable=broad-exceptCODE
LOWesphome/vscode.py151 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/vscode.py160 except Exception: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/compiled_config.py67 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/compiled_config.py94 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/compiled_config.py141 except Exception: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/zeroconf.py339 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/loader.py299 except Exception: # pylint: disable=broad-exceptCODE
LOWesphome/async_thread.py133 except Exception: # pylint: disable=broad-exceptCODE
29 more matches not shown…
Docstring Block Structure17 hits · 85 pts
SeverityFileLineSnippetContext
HIGHtests/integration/state_utils.py30Subscribe to states and wait for one matching ``predicate``. Resolves with the first :class:`EntityState` for whichSTRING
HIGHtests/integration/state_utils.py94Find an entity or raise AssertionError if not found. Args: entities: List of entity info objects from the ASTRING
HIGHscript/merge_component_configs.py184Deduplicate list items with the same ID. Identical items sharing an ID (e.g. a shared bus from a common package pulSTRING
HIGHscript/determine-jobs.py304Determine if clang-tidy should run based on changed files. This function is used by the CI workflow to intelligentlSTRING
HIGHscript/determine-jobs.py947Determine memory impact analysis configuration. Always runs memory impact analysis when there are changed componentSTRING
HIGHscript/analyze_component_buses.py148Check if a component is a platform component (abstract base class). Platform components have IS_PLATFORM_COMPONENT STRING
HIGHscript/ci_memory_impact_comment.py32Run a gh CLI command with retries and error reporting. Args: args: Command arguments (including 'gh') STRING
HIGHscript/ci_memory_impact_comment.py460Find existing memory impact comment on the PR. Args: pr_number: PR number Returns: Comment numSTRING
HIGHscript/helpers.py505Run a gh CLI command, retrying transient network and server failures. Args: args: Full command line, includSTRING
HIGHesphome/bundle.py589Extract a bundle archive and return the path to the config YAML. Sanity checks reject path traversal, symlinks, absSTRING
HIGHesphome/bundle.py640Read and validate the manifest from a bundle without full extraction. Args: bundle_path: Path to the .tar.gSTRING
HIGHesphome/framework_helpers.py86 Remove a directory and its contents recursively if it exists. Args: directory: Path to the directory tSTRING
HIGHesphome/framework_helpers.py246 Create a Python virtual environment. Args: root: Path to the virtual environment directory msgSTRING
HIGHesphome/framework_helpers.py1233 Download file from multiple mirrors with substitution support. Args: mirrors: list of mirror URLs STRING
HIGHesphome/analyze_memory/__init__.py609Build mapping from heuristic pattern categories to discovered libraries. Heuristic categories like ``mdns_lib``STRING
HIGHesphome/espidf/framework.py325 Get the ESP-IDF version from the specified framework root. Args: idf_framework_root: Path to the ESP-ISTRING
HIGHesphome/espidf/framework.py352 Get ESP-IDF tool paths and environment variables needed for building. Args: idf_framework_root: Path tSTRING
AI Slop Vocabulary18 hits · 42 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/core/test_entity_helpers.py166 # Empty name is handled specially - it doesn't just use sanitize(snake_case(""))COMMENT
MEDIUMtests/integration/test_script_queued.py19 """Test comprehensive queued script functionality."""STRING
MEDIUMtests/script/test_determine_jobs.py987 # Workflow / harness filesCOMMENT
MEDIUMtests/components/aqi/benchmark.yaml3# the test harness; this only pulls the sensor + aqi source/include paths in.COMMENT
LOWscript/merge_component_configs.py232 # No ID, just add itCOMMENT
MEDIUMscript/determine-jobs.py504# - script/test_build_components.py -- the harness the job invokesCOMMENT
MEDIUMscript/list-components.py64 # BUT only for --changed (used by clang-tidy for comprehensive checking)COMMENT
MEDIUMscript/list-components.py90 # This is for --changed (clang-tidy) which needs comprehensive checkingCOMMENT
MEDIUM.github/workflows/ci.yml918 # (no --all-headers; the comprehensive esp32-idf pass covers the shared tree).COMMENT
MEDIUMesphome/components/opentherm/opentherm_macros.h156// These macros utilize the structure of *_LIST macros in orderCOMMENT
MEDIUMesphome/components/epaper_spi/models/jd79660.py59# Device may have specific factory provisioned MTP content to facilitate vendor register features like fast init.COMMENT
LOWesphome/components/epaper_spi/models/__init__.py63 # Explicit dimensions, just use as isCOMMENT
MEDIUMesphome/components/shelly_dimmer/shelly_dimmer.cpp54// Essentially std::size() for pre c++17COMMENT
LOWesphome/components/esp32_ble_server/__init__.py577 # Static value - just set it directly without action infrastructureCOMMENT
LOWesphome/components/mipi/__init__.py449 # Explicit dimensions, just use as isCOMMENT
LOWesphome/components/substitutions/__init__.py345 # This node does not define any vars itself, so just return parent contextCOMMENT
LOWesphome/components/mipi_spi/display.py132 # No exact divisor, just use the closest.COMMENT
MEDIUMesphome/components/lvgl/animation.py59# It would be better to have a more robust way of passing arguments to the timing classes.COMMENT
Modern Structural Boilerplate34 hits · 34 pts
SeverityFileLineSnippetContext
LOWtests/testing_helpers.py57def set_testing_manifest(domain: str, manifest: ComponentManifestOverride) -> None:CODE
LOWtests/unit_tests/test_preferences.py26def _set_platform(platform: str) -> None:CODE
LOWtests/unit_tests/test_preferences.py30def _set_esp32(variant: str) -> None:CODE
LOWtests/unit_tests/test_compiled_config.py104def _set_cache_mtime(cache_path: Path, yaml_path: Path, *, offset: int) -> None:CODE
LOWtests/unit_tests/test_git.py38def _setup_old_repo(repo_dir: Path, days_old: int = 2) -> None:CODE
LOWtests/unit_tests/test_config_validation.py1402def _set_core_target(platform: str, framework: str) -> None:CODE
LOWtests/unit_tests/test_config_validation.py1410def _set_framework_version(platform: str, framework: str, version: cv.Version) -> None:CODE
LOWtests/unit_tests/test_config_validation.py607def _setup_core_for_framework(platform: str, framework: str) -> None:CODE
LOWtests/component_tests/mipi_rgb/test_mipi_rgb_config.py41def _set_s3(set_core_config: SetCoreConfigCallable) -> None:CODE
LOW…component_tests/bluetooth_proxy/test_platform_gates.py52def _set_platform(platform: str | None) -> None:CODE
LOW…ts/component_tests/ble_device_base/test_hub_binding.py37def _set_platform(platform: str | None) -> None:CODE
LOWtests/component_tests/ethernet/test_spi_id.py52def _set_esp32_s3(set_core_config: SetCoreConfigCallable) -> None:CODE
LOWtests/component_tests/ethernet/test_spi_id.py143def _set_spi_buses(*buses: dict) -> None:CODE
LOWtests/component_tests/time/test_init.py43def _set_platform(platform: Platform) -> None:CODE
LOWscript/ci_memory_impact_comment.py525def update_existing_comment(comment_id: str, comment_body: str) -> None:CODE
LOWesphome/git.py507def update_submodules(repo_dir: Path, key: str) -> None:CODE
LOWesphome/yaml_util.py195 def set_context(self, vars: dict[str, Any]) -> None:CODE
LOWesphome/cpp_helpers.py216def set_setup_priority(var, priority: float) -> None:CODE
LOWesphome/writer.py135def update_storage_json() -> None:CODE
LOWesphome/cpp_generator.py721def set_cpp_standard(standard: str) -> None:CODE
LOWesphome/core/entity_helpers.py422async def _setup_entity_impl(var: MockObj, config: ConfigType, platform: str) -> None:CODE
LOWesphome/components/openthread/__init__.py97def set_sdkconfig_options(config: ConfigType) -> None:CODE
LOWesphome/components/lock/__init__.py106async def _setup_lock_core(var: MockObj, config: ConfigType) -> None:CODE
LOWesphome/components/image/__init__.py127 def set_big_endian(self, big_endian: bool) -> None:CODE
LOWesphome/components/esp32/__init__.py671def set_idf_sdkconfig_default(name: str, value: SdkconfigValueType) -> None:CODE
LOWesphome/components/esp32/__init__.py2254async def _set_libc_picolibc_newlib_compat() -> None:CODE
LOWesphome/components/audio/__init__.py214 def set_limits_in_config(config: ConfigType) -> None:CODE
LOWesphome/components/api/client.py10__all__ = ["async_run_logs", "run_logs"]CODE
LOWesphome/components/nrf52/clang_tidy.py154def _setup_core(work_dir: Path) -> None:CODE
LOWesphome/components/esp32_ble/__init__.py285__all__ = [CODE
LOWesphome/components/lvgl/defines.py144def set_widgets_completed(value: bool) -> None:CODE
LOWesphome/components/lvgl/widgets/__init__.py556def _set_layout_options(w: Widget, layout: dict, base_name: str | None) -> None:CODE
LOWesphome/components/lvgl/widgets/table.py147async def set_selected_cell(w: Widget, config: ConfigType) -> None:CODE
LOWesphome/espidf/clang_tidy.py148def _setup_core(work_dir: Path, settings: _Settings) -> None:STRING
Structural Annotation Overuse13 hits · 28 pts
SeverityFileLineSnippetContext
LOWtests/component_tests/motion/test_motion.py611 # Step 1: Device flat — gravity in enclosure frame is [0, 0, 1]COMMENT
LOWtests/component_tests/motion/test_motion.py621 # Step 2: Tilt enclosure around Y by 20°COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py33 # Step 1: Software Reset (0x12) - REQUIRED per SSD1680, but works without it as well, so it's commented out COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py35 # Step 2: Wait 10ms after SWRESET (?) not sure how to implement wht waiting for 10ms after SWRESET, so it's COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py36 # Step 3: DRV_OUT_CTL - driver output control (height-dependent)COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py39 # Step 4: DATA_ENTRY - data entry mode (0x03 = decrement Y, increment X)COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py41 # Step 5: BORDER_FULL - border waveform controlCOMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py43 # Step 6: TEMP_SENS - internal temperature sensorCOMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py45 # Step 7: DISPLAY_UPDATE - display update controlCOMMENT
LOWesphome/components/async_tcp/async_tcp_socket.h17/// NOTE: This class is NOT thread-safe. All methods must be called from the main loop.COMMENT
LOWesphome/components/sen6x/sen6x.cpp77 // Step 1: Read serial number (~25ms with I2C delay)COMMENT
LOWesphome/components/sen6x/sen6x.cpp87 // Step 2: Read product name in next loop iterationCOMMENT
LOWesphome/components/sen6x/sen6x.cpp134 // Step 3: Read firmware version and start measurements in next loop iterationCOMMENT
Verbosity Indicators12 hits · 26 pts
SeverityFileLineSnippetContext
LOWtests/component_tests/motion/test_motion.py611 # Step 1: Device flat — gravity in enclosure frame is [0, 0, 1]COMMENT
LOWtests/component_tests/motion/test_motion.py621 # Step 2: Tilt enclosure around Y by 20°COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py33 # Step 1: Software Reset (0x12) - REQUIRED per SSD1680, but works without it as well, so it's commented out COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py35 # Step 2: Wait 10ms after SWRESET (?) not sure how to implement wht waiting for 10ms after SWRESET, so it's COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py36 # Step 3: DRV_OUT_CTL - driver output control (height-dependent)COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py39 # Step 4: DATA_ENTRY - data entry mode (0x03 = decrement Y, increment X)COMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py41 # Step 5: BORDER_FULL - border waveform controlCOMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py43 # Step 6: TEMP_SENS - internal temperature sensorCOMMENT
LOWesphome/components/epaper_spi/models/weact_bwr.py45 # Step 7: DISPLAY_UPDATE - display update controlCOMMENT
LOWesphome/components/sen6x/sen6x.cpp77 // Step 1: Read serial number (~25ms with I2C delay)COMMENT
LOWesphome/components/sen6x/sen6x.cpp87 // Step 2: Read product name in next loop iterationCOMMENT
LOWesphome/components/sen6x/sen6x.cpp134 // Step 3: Read firmware version and start measurements in next loop iterationCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHesphome/components/weikai/weikai.h56/// problem by asking users to rewrite their code, I have implemented this ring buffer that store the bytes receivedCOMMENT
Fake / Example Data6 hits · 5 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/components/test_rp2_generate_boards.py436 _add_board(arduino_pico, "placeholder", pins_header=header)STRING
LOWtests/unit_tests/components/test_rp2_generate_boards.py440 assert "SDA1" not in board_pins["placeholder"]STRING
LOWtests/unit_tests/components/test_rp2_generate_boards.py441 assert "SCL1" not in board_pins["placeholder"]STRING
LOWtests/unit_tests/components/test_rp2_generate_boards.py442 assert board_pins["placeholder"]["LED"] == 25STRING
LOWtests/unit_tests/components/test_rp2_generate_boards.py443 assert "max_virtual_pin" not in boards["placeholder"]STRING
LOWesphome/components/runtime_image/__init__.py21CONF_PLACEHOLDER = "placeholder"CODE
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/codeql.yml51 # If you are analyzing a compiled language, you can modify the 'build-mode' for that language to customize hCOMMENT
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWesphome/coroutine.py269CODE
LOWesphome/coroutine.py189CODE
LOWesphome/components/sensor/__init__.py366CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWesphome/components/sha256/sha256.h46/// Example usage:COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWesphome/components/rp2/gpio.cpp96 // TODO: implementCOMMENT