AI Slop Code RIsk Monitor

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.

11.5 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for esphome/esphome, a C++ project with 11,805 GitHub stars. SynthScan examined 893,677 lines of code across 9298 source files, recording 9080 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 11.5 (Moderate pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

11.5
Adjusted Signal
11.5
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
11.8K
Stars
C++
Language
893.7K
Lines of Code
9.3K
Files
9.1K
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 34.0/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 7855 finding(s).

Hallucinated Dependency & Supply Chain Risk 3.6/100 · LOW

Are imports declared and package/API names verified? 573 finding(s).

Agent Over-Engineering Ratio 34.8/100 · MEDIUM

Are wrappers, guards, and repeated structures necessary? 6881 finding(s).

PR Review Velocity Impact 45.6/100 · MEDIUM

Which changes need focused human review? 9080 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 139MEDIUM 549LOW 8392

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

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

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers6226 hits · 5454 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
LOW⚡tests/unit_tests/test_upload_targets.py19def test_get_port_type_serial(port: str) -> None:CODE
LOW⚡tests/unit_tests/test_upload_targets.py24def test_get_port_type_bootsel() -> None:CODE
LOW⚡tests/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
LOW⚡tests/unit_tests/test_espidf_component_mirror.py153def test_parse_lock_keeps_only_default_registry_service_deps(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py159def test_parse_lock_missing_file(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py196def test_parse_lock_defaults_registry_url(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py202def test_parse_manifest_keeps_only_exact_registry_pins(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py208def test_parse_manifest_missing_file(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py212def test_parse_manifest_lowercases_mixed_case_keys(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py220def test_parse_manifest_ranged_specs(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py230def test_project_service_deps_merges_lock_and_manifest(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py242def test_project_service_deps_manifest_only(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py256def test_missing_deps_covered_and_not(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py332def test_publish_index_first_sync(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py343def test_publish_index_replaces_a_corrupt_live_index(tmp_path: Path, live: str) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py352def test_publish_index_merges_and_filters(tmp_path: Path) -> None:CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py406def test_component_mirror_env_sets_file_url(CODE
LOW⚡tests/unit_tests/test_espidf_component_mirror.py430def test_component_mirror_env_unwritable_cache(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py172def test_parse_lock_tolerates_bad_content(tmp_path: Path, text: str) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py176def test_parse_lock_unreadable_file_warns(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py288def test_missing_deps_damaged_mirror(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py299def test_missing_deps_deletes_a_torn_archive(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py310def test_missing_deps_covered_without_checksums_field(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py365def test_publish_index_unreadable_live_index_raises(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py375def test_promote_moves_archives_before_indexes(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py418def test_component_mirror_env_preserves_user_values(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py478def _assert_sync_lock_released() -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py484def test_sync_runs_the_manager_for_missing_deps(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py513def test_sync_skips_when_covered(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py528def test_sync_failure_is_tolerated(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py539def test_sync_subprocess_errors_are_tolerated(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py549def test_sync_refreshes_ranged_specs_only_before_a_fresh_solve(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py565def test_sync_ranged_refresh_runs_with_everything_else_covered(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py580def test_sync_timeout_retries_ranged_specs_too(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py597def test_sync_timeout_falls_back_to_one_component_at_a_time(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py627def test_sync_timeout_then_per_component_completes(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py649def test_sync_timeout_then_component_error_stops(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py665def test_sync_unexpected_error_logs_a_traceback(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py677def test_sync_single_component_timeout_is_not_retried(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py692def test_sync_environment_resolution_failure_is_tolerated(CODE
LOWtests/unit_tests/test_espidf_component_mirror.py706def test_sync_skips_when_another_process_holds_the_lock(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py720def test_sync_ignores_a_leftover_lock_file(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/test_espidf_component_mirror.py730def test_sync_lock_oserror_is_a_failure(CODE
6166 more matches not shown…
Decorative Section Separators423 hits · 1550 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
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py148# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py150# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py251# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py253# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py321# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py323# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py401# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py403# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py439# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_espidf_component_mirror.py441# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_logs.py135# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_logs.py137# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_logs.py168# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_logs.py170# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_logs.py218# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/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
MEDIUM⚡tests/unit_tests/test_preference_hash_stability.py27# =============================================================================COMMENT
MEDIUM⚡tests/unit_tests/test_preference_hash_stability.py29# =============================================================================COMMENT
MEDIUM⚡tests/unit_tests/test_preference_hash_stability.py35 # =====================================================================COMMENT
MEDIUM⚡tests/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
MEDIUM⚡tests/unit_tests/test_preference_hash_stability.py138# =============================================================================COMMENT
MEDIUM⚡tests/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
MEDIUM⚡tests/unit_tests/test_loader.py563# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/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.py768# ── IncludeFile / package loading tests ────────────────────────────────────COMMENT
MEDIUM⚡tests/unit_tests/test_config_normalization.py202# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_config_normalization.py205# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_config_normalization.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/unit_tests/test_config_normalization.py123# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_ota.py53# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_ota.py55# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_ota.py167# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_web_server_ota.py169# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py102# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py104# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py119# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py121# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py173# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py175# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py213# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py215# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py300# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py302# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/unit_tests/test_bundle.py446# ---------------------------------------------------------------------------COMMENT
363 more matches not shown…
Over-Commented Block1110 hits · 1085 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/test_lazy_imports.py41 "esphome.platformio.registry",COMMENT
LOWtests/unit_tests/components/test_rp2_generate_boards.py21 #define PIN_SERIAL1_RX (1u)COMMENT
LOWtests/integration/test_status_flags.py141COMMENT
LOWtests/components/uart_tcp/test_uart_tcp_host.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/uart_tcp/test_disconnect_host.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/snapshot/snapshot_test.cpp1#ifdef USE_HOSTCOMMENT
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
LOWtests/components/toshiba/benchmark.yaml1# Registers the climate platform so USE_CLIMATE is defined for the host unit testCOMMENT
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/tcp_uart/test_buffers_host.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/packet_transport/common.h1#pragma onceCOMMENT
LOWtests/components/exponential_moving_average/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/api/test_overflow_buffer.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/components/api/test_wizard.cpp1#ifdef USE_HOSTCOMMENT
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/components/socket/test_tcp_client_link_host.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…t_tests/ln882h_ble_tracker/test_automations_codegen.py41 # scan-control actions: templatable continuous lambda + stop_scan forwardedCOMMENT
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/merge_component_configs.py161 return dataCOMMENT
LOWscript/determine-jobs.py201MEMORY_IMPACT_MAX_COMPONENTS = 40 # Max components before results become nonsensicalCOMMENT
LOWscript/list-components.py61 changed = changed_files(args.branch)COMMENT
LOWscript/analyze_component_buses.py361 components[component_name] = platform_busesCOMMENT
LOW.github/workflows/sync-device-classes.yml61 uv pip install --system -r requirements.txt -r requirements_test.txtCOMMENT
LOW.github/workflows/sync-dependency-versions.yml1# Keeps pre-commit hook revs in sync with the requirements files.COMMENT
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.yml361 key: ${{ runner.os }}-${{ steps.restore-python.outputs.python-version }}-venv-${{ needs.common.outputs.cache-kCOMMENT
LOW.github/workflows/ci.yml1461 - name: Install device-builder + esphome from PRCOMMENT
LOW.github/workflows/ci.yml1801 env:COMMENT
LOWesphome/git.py41# entry lock so that recovery cannot hang forever behind another process.COMMENT
LOWesphome/git.py221COMMENT
LOWesphome/yaml_util.py781COMMENT
LOWesphome/config.py261 # A list of voluptuous errorsCOMMENT
LOWesphome/util.py221 # Add the terminator the line never got, so whatever ESPHomeCOMMENT
LOWesphome/framework_helpers.py1161 # resume of this part file safe.COMMENT
LOWesphome/coroutine.py81 # Network transport layerCOMMENT
LOWesphome/coroutine.py121 # Examples: web_server_ota (52)COMMENT
LOWesphome/loader.py341# ``esphome/component_aliases.py`` (CI and a unit test fail if the registryCOMMENT
1050 more matches not shown…
Unused Imports541 hits · 486 pts
SeverityFileLineSnippetContext
LOWtests/unit_tests/test_api_client.py3CODE
LOWtests/unit_tests/test_espidf_component_mirror.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_arduino8266_toolchain.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_platformio_pch_script.py3CODE
LOWtests/unit_tests/test_yaml_edit.py3CODE
LOWtests/unit_tests/test_download_types.py8CODE
LOWtests/unit_tests/test_platform_hooks.py9CODE
LOWtests/unit_tests/test_espota2_noise.py10CODE
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_host_toolchain.py3CODE
LOWtests/unit_tests/test_web_server_helpers.py3CODE
LOWtests/unit_tests/cli/test_rename.py3CODE
LOWtests/unit_tests/components/test_esp8266.py3CODE
LOWtests/unit_tests/components/test_rp2_generate_boards.py3CODE
LOW…tests/components/test_esp32_write_idf_component_yml.py7CODE
LOWtests/unit_tests/components/host/test_init.py3CODE
LOWtests/unit_tests/components/udp/test_init.py3CODE
LOWtests/unit_tests/components/file/test_image.py3CODE
LOWtests/unit_tests/components/shelly_dimmer/test_light.py3CODE
LOWtests/unit_tests/components/esp32/test_sdkconfig.py3CODE
LOW…_tests/components/esp8266/test_toolchain_validation.py3CODE
LOW…ts/unit_tests/components/esp8266/test_build_surgery.py3CODE
LOWtests/unit_tests/components/noise/test_noise_to_code.py7CODE
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
LOW…it_tests/components/lvgl/test_theme_update_ordering.py14CODE
LOWtests/unit_tests/components/lvgl/test_table_codegen.py3CODE
LOWtests/unit_tests/components/lvgl/test_table_config.py3CODE
LOW…it_tests/components/lvgl/test_list_trigger_ordering.py22CODE
LOW…mponents/lvgl/test_action_to_code_context_isolation.py6CODE
LOW…_tests/components/lvgl/test_get_part_state_selector.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_gen/test_host.py3CODE
481 more matches not shown…
Self-Referential Comments88 hits · 266 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/unit_tests/test_loader.py123 # Create a mock module with FILTER_SOURCE_FILES functionCOMMENT
MEDIUMtests/unit_tests/test_writer.py885 # Create a real file with markersCOMMENT
MEDIUMtests/unit_tests/test_writer.py975 # Create a file with begin marker but no end markerCOMMENT
MEDIUMtests/unit_tests/test_writer.py997 # Create a file with duplicate begin markersCOMMENT
MEDIUMtests/unit_tests/test_writer.py1174 # Create an absolute custom build path directory with contentsCOMMENT
MEDIUMtests/unit_tests/test_writer.py1272 # Create a file in cwd that must NOT be cleanedCOMMENT
MEDIUMtests/unit_tests/test_writer.py1637 # Create a read-only file (simulating git pack files on Windows)COMMENT
MEDIUMtests/unit_tests/test_writer.py1671 # Create a subdirectory with read-only filesCOMMENT
MEDIUMtests/unit_tests/test_writer.py2295 # Create a source fileCOMMENT
MEDIUMtests/unit_tests/test_writer.py2416 # 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.py753 # Create a real firmware fileCOMMENT
MEDIUMtests/unit_tests/test_espota2.py963 # Create a real firmware fileCOMMENT
MEDIUM⚡tests/unit_tests/test_git.py122 # Create a simple git repo to test withCOMMENT
MEDIUMtests/unit_tests/test_git.py748 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py814 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py863 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py917 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py996 # Create the git repo directory structureCOMMENT
MEDIUMtests/unit_tests/test_git.py824 fetch_head.touch() # Create the fileCODE
MEDIUMtests/unit_tests/test_git.py873 fetch_head.touch() # Create the fileCODE
MEDIUMtests/unit_tests/test_git.py1006 fetch_head.touch() # Create the fileCODE
MEDIUMtests/unit_tests/test_util.py917 # Create the expected directory structureCOMMENT
MEDIUM⚡tests/unit_tests/test_yaml_util.py134 # Create an empty secrets fileCOMMENT
MEDIUM⚡tests/unit_tests/test_yaml_util.py144 # Create a YAML file with a secret but no secrets.yamlCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py122 # Create a YAML file with a secret that doesn't existCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py165 # Create a subdirectory with a YAML file that uses secretsCOMMENT
MEDIUMtests/unit_tests/test_yaml_util.py369 # Create a dict with unsorted keysCOMMENT
MEDIUM⚡tests/unit_tests/test_helpers.py798 # Create a fileCOMMENT
MEDIUM⚡tests/unit_tests/test_helpers.py809 # Create a file where we want to create a directoryCOMMENT
MEDIUMtests/unit_tests/test_helpers.py903 # Create a directory and make it read-onlyCOMMENT
MEDIUMtests/unit_tests/test_main.py1626 # Create the actual firmware files so they existCOMMENT
MEDIUMtests/unit_tests/test_main.py1734 # Create a test firmware fileCOMMENT
MEDIUMtests/unit_tests/test_main.py4645 # Create a mock OSError with a specific messageCOMMENT
MEDIUMtests/unit_tests/test_main.py4673 # 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.py944 # Create a file (not a directory)COMMENT
MEDIUMtests/unit_tests/core/test_config.py947 # Create a directory without __init__.pyCOMMENT
MEDIUMtests/integration/conftest.py635 # Create a future to signal when connectedCOMMENT
MEDIUMtests/integration/conftest.py781 # 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
MEDIUM⚡tests/script/test_determine_jobs.py2789 # Create a fake benchmarks directory with an 'api' componentCOMMENT
28 more matches not shown…
Empty Error Handlers53 hits · 265 pts
SeverityFileLineSnippetContext
HIGHtests/integration/test_loop_disable_enable.py85except (IndexError, ValueError):CODE
HIGHtests/integration/test_loop_disable_enable.py96except (IndexError, ValueError):CODE
HIGHtests/integration/test_snapshot_display.py53except (FileNotFoundError, UnidentifiedImageError, OSError, EOFError):CODE
HIGHscript/helpers.py908except FileNotFoundError:CODE
HIGHscript/helpers.py654except: # noqa: E722CODE
HIGHscript/helpers.py1350except (OSError, json.JSONDecodeError):CODE
HIGHscript/helpers.py629except: # noqa: E722CODE
HIGHscript/api_protobuf/api_protobuf.py3735except ImportError:CODE
HIGHesphome/config_validation.py1442except Invalid:CODE
HIGHesphome/config_validation.py1448except Invalid:CODE
HIGHesphome/config_validation.py1463except Invalid:CODE
HIGHesphome/config_validation.py1469except Invalid:CODE
HIGHesphome/config_validation.py2469except Invalid:CODE
HIGHesphome/config_validation.py2838except Invalid:CODE
HIGHesphome/config_validation.py1400except Invalid:CODE
HIGHesphome/log.py72except UnicodeEncodeError:CODE
HIGHesphome/util.py97except UnicodeEncodeError:CODE
HIGHesphome/util.py114except UnicodeEncodeError:CODE
HIGHesphome/util.py88except UnicodeEncodeError:CODE
HIGHesphome/framework_helpers.py983except Timeout:CODE
HIGHesphome/mqtt.py83except OSError:CODE
HIGHesphome/writer.py380except AttributeError:CODE
HIGHesphome/writer.py642except ImportError:CODE
HIGHesphome/core/config.py232except cv.Invalid:CODE
HIGHesphome/core/config.py450except KeyError:CODE
HIGHesphome/core/config.py452except ImportError:CODE
HIGHesphome/platformio/runner.py98except Exception: # noqa: BLE001CODE
HIGHesphome/platformio/toolchain.py417except ValueError:CODE
HIGHesphome/components/wifi/wpa2_eap.py118except ImportError:CODE
HIGHesphome/components/sun/__init__.py71except cv.Invalid:CODE
HIGHesphome/components/host/gpio.py40except ValueError:CODE
HIGHesphome/components/logger/__init__.py498except cv.Invalid:CODE
HIGHesphome/components/logger/__init__.py503except cv.Invalid:CODE
HIGHesphome/components/mipi_rgb/display.py117except cv.Invalid:CODE
HIGHesphome/components/micro_wake_word/__init__.py279except cv.Invalid:CODE
HIGHesphome/components/micro_wake_word/__init__.py284except cv.Invalid:CODE
HIGHesphome/components/micro_wake_word/__init__.py289except cv.Invalid:CODE
HIGHesphome/components/network/__init__.py140except (ValueError, TypeError):CODE
HIGHesphome/components/esp32/gpio.py94except ValueError:CODE
HIGHesphome/components/esp8266/gpio.py60except ValueError:CODE
HIGHesphome/components/light/automation.py69except cv.Invalid:CODE
HIGHesphome/components/rp2/gpio.py54except ValueError:CODE
HIGHesphome/components/substitutions/jinja.py116except (ValueError, SyntaxError, MemoryError, TypeError):CODE
HIGHesphome/components/nrf52/framework.py476except FileNotFoundError:CODE
HIGHesphome/components/nrf52/gpio.py31except ValueError:CODE
HIGHesphome/components/rpi_dpi_rgb/display.py69except cv.Invalid:CODE
HIGHesphome/components/st7701s/display.py74except cv.Invalid:CODE
HIGHesphome/components/libretiny/gpio.py112except ValueError:CODE
HIGHesphome/components/libretiny/gpio.py121except ValueError:CODE
HIGHesphome/components/uart/event/__init__.py41except cv.Invalid:CODE
HIGHesphome/components/uart/event/__init__.py49except cv.Invalid:CODE
HIGHesphome/components/lvgl/schemas.py187except ValueError:CODE
HIGHesphome/espidf/install_tool_archives.py84except FileNotFoundError: # pragma: no cover # failed before mkdirCODE
Deep Nesting260 hits · 249 pts
SeverityFileLineSnippetContext
LOWdocker/build.py102CODE
LOWdocker/generate_tags.py36CODE
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.py104CODE
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.py459CODE
LOWtests/integration/conftest.py772CODE
LOWtests/integration/conftest.py466CODE
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.py129CODE
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.py385CODE
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
200 more matches not shown…
Cross-File Repetition41 hits · 205 pts
SeverityFileLineSnippetContext
HIGHtests/unit_tests/test_host_toolchain.py0anchor the path: ninja runs from the build directory.STRING
HIGHtests/unit_tests/build_helpers/test_ccache.py0anchor the path: ninja runs from the build directory.STRING
HIGHtests/unit_tests/build_helpers/test_ninja.py0anchor the path: ninja runs from the build directory.STRING
HIGHtests/integration/test_light_effect_zero_brightness.py0send a light command and wait for the state response.STRING
HIGHtests/integration/test_light_resume_effect.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_repeat_effect.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/canbus/test_canbus_payload_tables.py0equal payloads share one table; lambdas stay templates.STRING
HIGH…s/component_tests/cc1101/test_cc1101_payload_tables.py0equal payloads share one table; lambdas stay templates.STRING
HIGHtests/component_tests/espnow/test_payload_tables.py0equal payloads share one table; lambdas stay templates.STRING
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
Cross-Language Confusion25 hits · 159 pts
SeverityFileLineSnippetContext
HIGH⚡tests/unit_tests/test_espidf_component_mirror.py341 "live", ["not json", '{"versions": null}', '{"versions": {"a": 1}}']CODE
HIGH⚡tests/unit_tests/test_substitutions.py655 yaml_util.add_context(inner, {"a": "${undefined}"})CODE
HIGH⚡tests/unit_tests/test_yaml_util.py1019 value = _located("${undefined}", "root.yaml", 5, 10)CODE
HIGH⚡tests/unit_tests/test_yaml_util.py1755 """An empty (null) frontmatter document is treated as no frontmatter."""STRING
HIGHtests/unit_tests/test_cpp_generator.py14 (cg.RawExpression("foo && bar"), "foo && bar"),CODE
HIGHtests/unit_tests/test_cpp_generator.py422 (cg.RawStatement("foo && bar"), "foo && bar"),CODE
HIGH⚡tests/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
HIGHtests/unit_tests/components/noise/test_noise_to_code.py155 {"if": "$ESPHOME_ARDUINO_COMPONENT == 0 || idf_version >= 6.0.0"}CODE
HIGH⚡…it_tests/components/api/test_api_protobuf_generator.py81 assert get_varint64_ifdef(file_desc, guards) == (True, "USE_X || USE_Y")CODE
HIGH⚡…it_tests/components/api/test_api_protobuf_generator.py87 assert get_varint64_ifdef(file_desc, guards) == (True, "USE_X || USE_Y")CODE
HIGH⚡…it_tests/components/api/test_api_protobuf_generator.py108 assert _make_ifdef_line("USE_X || USE_Y") == "#if defined(USE_X) || defined(USE_Y)"CODE
HIGHtests/script/test_determine_jobs.py3446 '{"tests/integration/test_a.py": 12.5, "tests/integration/test_b.py": null}'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.py261# DEVICE_CLASS_MAX_LENGTH == MAX_DEVICE_CLASS_LENGTH - 1 (C++ includes the null)COMMENT
HIGHesphome/core/entity_helpers.py146 lines.append(f" if (index == 0 || index > {count}) return {empty_var};")CODE
HIGHesphome/core/entity_helpers.py156 f' if (index == 0 || index > {count}) return "";\n'CODE
HIGHesphome/core/entity_helpers.py348 - 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/improv_ble/__init__.py81 "state == improv::STATE_AUTHORIZED || state == improv::STATE_AWAITING_AUTHORIZATION",CODE
HIGHesphome/components/zigbee/zigbee_ep_esp32.py275 "if (x < 0.0f || std::isnan(x)) return 0xFFFF;" # NaNCODE
HIGH⚡esphome/components/uart/__init__.py414 # - Serial (UART0): TX=1 or null, RX=3 or nullCOMMENT
HIGH⚡esphome/components/uart/__init__.py415 # - Serial (UART0 swap): TX=15 or null, RX=13 or nullCOMMENT
HIGH⚡esphome/components/uart/__init__.py416 # - Serial1: TX=2 or null, RX=8 or nullCOMMENT
Redundant / Tautological Comments98 hits · 156 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.py877 # 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.py108 # 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.py306 # 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.py91 # Check if the variant is validCOMMENT
LOWtests/component_tests/sntp/test_init.py141 # Check if merging occurredCOMMENT
LOWscript/determine-jobs.py858 # Check if benchmark infrastructure changedCOMMENT
LOWscript/determine-jobs.py865 # Check if any directly changed component has benchmarksCOMMENT
LOWscript/determine-jobs.py1146 # Check if this is a platform-specific fileCOMMENT
LOWscript/analyze_component_buses.py241 # Check if buses are defined directly (not via packages)COMMENT
LOW⚡script/analyze_component_buses.py366 # Check if component is explicitly isolatedCOMMENT
LOW⚡script/analyze_component_buses.py371 # Check if component is a base bus componentCOMMENT
LOW⚡script/analyze_component_buses.py377 # Check if component uses !extend or !remove directivesCOMMENT
LOW⚡script/analyze_component_buses.py384 # Check if component defines buses directly in test filesCOMMENT
LOWscript/analyze_component_buses.py514 # Check if buses are compatibleCOMMENT
LOWscript/analyze_component_buses.py648 # Output resultsCOMMENT
LOWscript/test_build_components.py181 # Check if last part is a number (version)COMMENT
LOWscript/helpers.py701 # Check if any core C++ or header files changed firstCOMMENT
LOWscript/helpers.py1033 # Check if we found any new componentsSTRING
LOWscript/split_components_for_ci.py512 # Check if this is a merged signature (contains +)COMMENT
LOW⚡script/api_protobuf/api_protobuf.py550 # Check if this is a packed_buffer field (zero-copy packed repeated)COMMENT
LOW⚡script/api_protobuf/api_protobuf.py553 # Check if this repeated field has fixed_array_with_length_define optionCOMMENT
LOW⚡script/api_protobuf/api_protobuf.py558 # Check if this repeated field has fixed_array_size optionCOMMENT
LOW⚡script/api_protobuf/api_protobuf.py561 # Check if this repeated field has fixed_array_size_define optionCOMMENT
LOWscript/api_protobuf/api_protobuf.py922 # Check if this is being called from a repeated field contextCOMMENT
LOWscript/api_protobuf/api_protobuf.py1704 # Check if underlying type can use dump_fieldCOMMENT
LOWscript/api_protobuf/api_protobuf.py1818 # Check if we should skip encoding when all elements are zeroCOMMENT
LOWscript/api_protobuf/api_protobuf.py2025 # Check if underlying type can use dump_fieldCOMMENT
LOWscript/api_protobuf/api_protobuf.py2066 # Check if this is a pointer field by looking for container_pointer optionCOMMENT
LOWscript/api_protobuf/api_protobuf.py2075 # Check if this should use FixedVector instead of std::vectorCOMMENT
LOWscript/api_protobuf/api_protobuf.py2173 # Check if this is const char* elementsCOMMENT
LOWscript/api_protobuf/api_protobuf.py2215 # Check if this is a fixed-size typeCOMMENT
LOWscript/api_protobuf/api_protobuf.py2224 # Check if inner type produces a constant size (doesn't depend on value)COMMENT
LOWscript/api_protobuf/api_protobuf.py2365 # Check if this message is used by other messagesCOMMENT
LOWscript/api_protobuf/api_protobuf.py2551 # Check if this message has a base classCOMMENT
LOWscript/api_protobuf/api_protobuf.py2725 # Check if this message uses inline_encode — if so, skip generating standaloneCOMMENT
LOWscript/api_protobuf/api_protobuf.py2734 # Check if this message wants speed-optimized encode/calculate_size.COMMENT
LOWscript/api_protobuf/api_protobuf.py2807 # Check if message has any non-deprecated fieldsCOMMENT
LOW.github/workflows/ci.yml1140 # Check if /mnt has more free space than / before bind mountingCOMMENT
LOW.github/workflows/ci.yml1498 # Check if memory impact extraction script exists on target branchCOMMENT
LOWesphome/yaml_util.py726 # Check if key is hashableCOMMENT
LOWesphome/yaml_util.py739 # Check if it is a duplicate keyCOMMENT
LOWesphome/config_helpers.py188 # Check if logger config existsCOMMENT
LOWesphome/config.py698 # Check if component existsCOMMENT
LOWesphome/config.py721 # Check if platform already existsCOMMENT
LOWesphome/wizard.py255 # Check if file already exists to prevent overwritingCOMMENT
38 more matches not shown…
Excessive Try-Catch Wrapping90 hits · 118 pts
SeverityFileLineSnippetContext
MEDIUMtests/unit_tests/test_espota2_noise.py89def run(self) -> None:CODE
LOWtests/unit_tests/test_espota2_noise.py96 except Exception as err: # noqa: BLE001 - surfaced via join_and_checkCODE
LOWtests/unit_tests/test_framework_helpers.py1223 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
MEDIUMtests/integration/conftest.py829 print(f"Error reading from PTY: {result[0]}", file=sys.stderr)CODE
LOWtests/integration/test_syslog.py124 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/state_utils.py74 except Exception as exc: # noqa: BLE001 the wait re-raises it, the callback must not dieCODE
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
MEDIUM⚡script/ci_add_metadata_to_json.py43 print(f"Error: JSON file not found: {args.json_file}", file=sys.stderr)CODE
MEDIUM⚡script/ci_add_metadata_to_json.py50 print(f"Error loading JSON: {e}", file=sys.stderr)CODE
MEDIUM⚡script/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/build_helpers.py116 except Exception: # noqa: BLE001CODE
MEDIUM⚡script/build_helpers.py401 print(f"Error compiling {label} for {', '.join(components)}")CODE
LOW⚡script/build_helpers.py403 except Exception as e: # noqa: BLE001CODE
MEDIUM⚡script/build_helpers.py404 print(f"Error compiling {label} for {', '.join(components)}: {e}")CODE
MEDIUMscript/build_helpers.py494 print(f"Error obtaining platform components: {e}")CODE
LOWscript/stress_test_connect.py24 except Exception as e: # noqa: BLE001CODE
LOWscript/ci-custom.py130 except Exception:CODE
LOWscript/analyze_component_buses.py141 except Exception: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
LOWscript/analyze_component_buses.py177 except Exception: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
LOWscript/analyze_component_buses.py235 except Exception: # noqa: BLE001 # pylint: disable=broad-exception-caughtCODE
MEDIUMscript/analyze_component_buses.py344 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.py522 except Exception as e: # pylint: disable=broad-exception-caughtCODE
MEDIUMscript/test_build_components.py523 print(f"Error merging configs for {components}: {e}")CODE
LOWscript/helpers.py311 except Exception: # noqa: BLE001 - never let a bad test config crash groupingCODE
LOWscript/helpers.py605 except Exception as e:CODE
MEDIUMscript/split_components_for_ci.py451 print(f"Error parsing components JSON: {e}", file=sys.stderr)CODE
MEDIUMscript/split_components_for_ci.py464 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.py775 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/config.py819 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/config.py852 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/config.py1537 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.py326 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/util.py393 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/mqtt.py286 except Exception: # pylint: disable=broad-exceptCODE
LOWesphome/vscode.py145 except Exception as err: # noqa: BLE001 # pylint: disable=broad-exceptCODE
LOWesphome/vscode.py154 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.py344 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
30 more matches not shown…
Docstring Block Structure19 hits · 95 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.py146Find an entity or raise AssertionError if not found. Args: entities: List of entity info objects from the ASTRING
HIGHtests/integration/bmp_utils.py73Wait for a complete BMP file to appear at ``path`` and return it. The file is created before any of its contents arSTRING
HIGHtests/integration/bmp_utils.py126Ask for snapshots until one has something drawn on it, and return it and where it went. A display holds one flat coSTRING
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.py340Determine if clang-tidy should run based on changed files. This function is used by the CI workflow to intelligentlSTRING
HIGHscript/determine-jobs.py1095Determine memory impact analysis configuration. Always runs memory impact analysis when there are changed componentSTRING
HIGHscript/analyze_component_buses.py150Check 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.py550Run 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.py87 Remove a directory and its contents recursively if it exists. Args: directory: Path to the directory tSTRING
HIGHesphome/framework_helpers.py247 Create a Python virtual environment. Args: root: Path to the virtual environment directory msgSTRING
HIGHesphome/framework_helpers.py1329 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.py382 Get the ESP-IDF version from the specified framework root. Args: idf_framework_root: Path to the ESP-ISTRING
HIGHesphome/espidf/framework.py419 Get ESP-IDF tool paths and environment variables needed for building. Args: idf_framework_root: Path tSTRING
AI Slop Vocabulary20 hits · 48 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.py1147 # Workflow / harness filesCOMMENT
MEDIUMtests/components/aqi/benchmark.yaml3# the test harness; this only pulls the sensor + aqi source/include paths in.COMMENT
MEDIUMtests/components/toshiba/__init__.py6 # The harness walks dependencies from the component manifest, not from theCOMMENT
LOWscript/merge_component_configs.py232 # No ID, just add itCOMMENT
MEDIUMscript/determine-jobs.py557# Shared by every toolchain smoke-test job: the harness it invokes and theCOMMENT
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.yml1050 # (no --all-headers; the comprehensive esp32-idf pass covers the shared tree).COMMENT
MEDIUMesphome/host/toolchain.py36# and the integration-test harness resolve it by this nameCOMMENT
MEDIUMesphome/components/opentherm/opentherm_macros.h156// These macros utilize the structure of *_LIST macros in orderCOMMENT
MEDIUMesphome/components/epaper_spi/models/jd79660.py61# Device may have specific factory provisioned MTP content to facilitate vendor register features like fast init.COMMENT
LOWesphome/components/epaper_spi/models/__init__.py75 # 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__.py576 # Static value - just set it directly without action infrastructureCOMMENT
LOWesphome/components/mipi/__init__.py451 # Explicit dimensions, just use as isCOMMENT
LOWesphome/components/substitutions/__init__.py347 # 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 Boilerplate45 hits · 44 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_arduino8266_toolchain.py38def _setup_core(tmp_path: Path) -> None:STRING
LOWtests/unit_tests/test_git.py38def _setup_old_repo(repo_dir: Path, days_old: int = 2) -> None:CODE
LOWtests/unit_tests/test_nrf52_toolchain.py22def _set_sdk_version(version: cv.Version) -> None:CODE
LOW⚡tests/unit_tests/test_config_validation.py1439def _set_core_target(platform: str, framework: str) -> None:CODE
LOW⚡tests/unit_tests/test_config_validation.py1447def _set_framework_version(platform: str, framework: str, version: cv.Version) -> None:CODE
LOWtests/unit_tests/test_config_validation.py615def _setup_core_for_framework(platform: str, framework: str) -> None:CODE
LOWtests/unit_tests/test_espidf_clang_tidy.py283def _set_idf_version(version: cv.Version, framework: str = "arduino") -> None:CODE
LOW…tests/components/test_esp32_write_idf_component_yml.py29def _setup_core(tmp_path: Path) -> None:CODE
LOWtests/unit_tests/components/esp32/test_sdkconfig.py19def _setup_core(tmp_path: Path, toolchain: Toolchain | None) -> None:CODE
LOWtests/unit_tests/build_gen/test_arduino8266.py69def _set_flags(*flags: str) -> None:CODE
LOWtests/component_tests/cdc_acm_uart/test_init.py17def _set_esp32_s3(set_core_config: SetCoreConfigCallable, **kwargs) -> None:CODE
LOWtests/component_tests/mipi_rgb/test_mipi_rgb_config.py63def _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_ksz8851snl.py76def _set_esp32_s3(set_core_config: SetCoreConfigCallable) -> None:CODE
LOWtests/component_tests/ethernet/test_ethernet.py91def _set_esp32_core(set_core_config: SetCoreConfigCallable) -> 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
LOW⚡tests/component_tests/time/test_init.py43def _set_platform(platform: Platform) -> None:CODE
LOWtests/component_tests/uart_mux/test_init.py14def _set_esp32_s3(set_core_config: SetCoreConfigCallable) -> None:CODE
LOWscript/ci_memory_impact_comment.py525def update_existing_comment(comment_id: str, comment_body: str) -> None:CODE
LOWesphome/git.py516def update_submodules(repo_dir: Path, key: str) -> None:CODE
LOWesphome/yaml_util.py201 def set_context(self, vars: dict[str, Any]) -> None:CODE
LOWesphome/cpp_helpers.py230def set_setup_priority(var, priority: float) -> None:CODE
LOW⚡esphome/writer.py135def update_storage_json() -> None:CODE
LOWesphome/cpp_generator.py835def set_cpp_standard(standard: str) -> None:CODE
LOWesphome/core/entity_helpers.py423async def _setup_entity_impl(var: MockObj, config: ConfigType, platform: str) -> None:CODE
LOWesphome/components/openthread/__init__.py102def set_sdkconfig_options(config: ConfigType) -> None:CODE
LOWesphome/components/lock/__init__.py103async 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
LOW⚡esphome/components/esp32/__init__.py827def set_idf_sdkconfig_default(name: str, value: SdkconfigValueType) -> None:CODE
LOWesphome/components/esp32/__init__.py2587async 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.py184def _setup_core(work_dir: Path) -> None:CODE
LOWesphome/components/esp32_ble/__init__.py286__all__ = [CODE
LOWesphome/components/lvgl/widgets/__init__.py208 async def update_to_code(self, w: "Widget", config: dict) -> None:CODE
LOWesphome/components/lvgl/widgets/__init__.py555def _set_layout_options(w: Widget, layout: dict, base_name: str | None) -> None:CODE
LOWesphome/components/lvgl/widgets/table.py146async def set_selected_cell(w: Widget, config: ConfigType) -> None:CODE
LOWesphome/components/lvgl/widgets/keyboard.py57 async def update_to_code(self, w: "Widget", config: dict) -> None:CODE
LOWesphome/espidf/clang_tidy.py148def _setup_core(work_dir: Path, settings: _Settings) -> None:STRING
Structural Annotation Overuse14 hits · 29 pts
SeverityFileLineSnippetContext
LOW⚡tests/component_tests/motion/test_motion.py626 # Step 1: Device flat — gravity in enclosure frame is [0, 0, 1]COMMENT
LOW⚡tests/component_tests/motion/test_motion.py636 # Step 2: Tilt enclosure around Y by 20°COMMENT
LOW⚡esphome/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
LOW⚡esphome/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
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py36 # Step 3: DRV_OUT_CTL - driver output control (height-dependent)COMMENT
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py39 # Step 4: DATA_ENTRY - data entry mode (0x03 = decrement Y, increment X)COMMENT
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py41 # Step 5: BORDER_FULL - border waveform controlCOMMENT
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py43 # Step 6: TEMP_SENS - internal temperature sensorCOMMENT
LOW⚡esphome/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
LOW⚡esphome/components/sen6x/sen6x.cpp81 // Step 1: Read serial number (~25ms with I2C delay)COMMENT
LOW⚡esphome/components/sen6x/sen6x.cpp91 // Step 2: Read product name in next loop iterationCOMMENT
LOWesphome/components/sen6x/sen6x.cpp138 // Step 3: Read firmware version and start measurements in next loop iterationCOMMENT
LOWesphome/components/sen6x/sen6x.cpp150 // Step 4: write configuration commands one at a time, then start measurements.COMMENT
Verbosity Indicators13 hits · 28 pts
SeverityFileLineSnippetContext
LOW⚡tests/component_tests/motion/test_motion.py626 # Step 1: Device flat — gravity in enclosure frame is [0, 0, 1]COMMENT
LOW⚡tests/component_tests/motion/test_motion.py636 # Step 2: Tilt enclosure around Y by 20°COMMENT
LOW⚡esphome/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
LOW⚡esphome/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
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py36 # Step 3: DRV_OUT_CTL - driver output control (height-dependent)COMMENT
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py39 # Step 4: DATA_ENTRY - data entry mode (0x03 = decrement Y, increment X)COMMENT
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py41 # Step 5: BORDER_FULL - border waveform controlCOMMENT
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py43 # Step 6: TEMP_SENS - internal temperature sensorCOMMENT
LOW⚡esphome/components/epaper_spi/models/weact_bwr.py45 # Step 7: DISPLAY_UPDATE - display update controlCOMMENT
LOW⚡esphome/components/sen6x/sen6x.cpp81 // Step 1: Read serial number (~25ms with I2C delay)COMMENT
LOW⚡esphome/components/sen6x/sen6x.cpp91 // Step 2: Read product name in next loop iterationCOMMENT
LOWesphome/components/sen6x/sen6x.cpp138 // Step 3: Read firmware version and start measurements in next loop iterationCOMMENT
LOWesphome/components/sen6x/sen6x.cpp150 // Step 4: write configuration commands one at a time, then start measurements.COMMENT
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 Data7 hits · 6 pts
SeverityFileLineSnippetContext
LOW⚡tests/unit_tests/components/test_rp2_generate_boards.py436 _add_board(arduino_pico, "placeholder", pins_header=header)STRING
LOW⚡tests/unit_tests/components/test_rp2_generate_boards.py440 assert "SDA1" not in board_pins["placeholder"]STRING
LOW⚡tests/unit_tests/components/test_rp2_generate_boards.py441 assert "SCL1" not in board_pins["placeholder"]STRING
LOW⚡tests/unit_tests/components/test_rp2_generate_boards.py442 assert board_pins["placeholder"]["LED"] == 25STRING
LOW⚡tests/unit_tests/components/test_rp2_generate_boards.py443 assert "max_virtual_pin" not in boards["placeholder"]STRING
LOW…component_tests/esp32/config/mbedtls_tls_wifi_eap.yaml12 identity: "user@example.org"CODE
LOWesphome/components/runtime_image/__init__.py22CONF_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.py270CODE
LOWesphome/coroutine.py190CODE
LOWesphome/components/sensor/__init__.py380CODE
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.cpp99 // TODO: implementCOMMENT