AI Slop Code RIsk Monitor

78/xiaozhi-esp32

An MCP-based chatbot | 一个基于MCP的聊天机器人

14.3 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for 78/xiaozhi-esp32, a C++ project with 30,613 GitHub stars. SynthScan examined 67,742 lines of code across 758 source files, recording 882 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 14.3 (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.

14.3
Adjusted Signal
14.3
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
30.6K
Stars
C++
Language
67.7K
Lines of Code
758
Files
882
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 45.1/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 4.8/100 · LOW

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

Agent Over-Engineering Ratio 13.6/100 · LOW

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

PR Review Velocity Impact 51.6/100 · HIGH

Which changes need focused human review? 882 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 9MEDIUM 28LOW 845

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 882 distinct pattern matches across 11 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.

Over-Commented Block656 hits · 656 pts
SeverityFileLineSnippetContext
LOWdocs/custom-board_zh.md41参考示例(来自lichuang-c3-dev):COMMENT
LOWdocs/custom-board_zh.md61#define AUDIO_CODEC_I2C_SCL_PIN GPIO_NUM_1COMMENT
LOWdocs/custom-board.md41- Display parameters and pins.COMMENT
LOWdocs/custom-board.md61#define AUDIO_CODEC_PA_PIN GPIO_NUM_13COMMENT
LOWscripts/Image_Converter/LVGLImage.py321 if premultiplied:COMMENT
LOWmain/application.h1#ifndef _APPLICATION_H_COMMENT
LOWmain/application.h21#include "device_state_machine.h"COMMENT
LOWmain/mcp_server.h1#ifndef MCP_SERVER_HCOMMENT
LOWmain/assets.h1#ifndef ASSETS_HCOMMENT
LOWmain/led/circular_strip.h1#ifndef _CIRCULAR_STRIP_H_COMMENT
LOWmain/audio/audio_service.h1#ifndef AUDIO_SERVICE_HCOMMENT
LOWmain/audio/audio_service.h41#define MAX_ENCODE_TASKS_IN_QUEUE 2COMMENT
LOWmain/audio/audio_codec.h1#ifndef _AUDIO_CODEC_HCOMMENT
LOWmain/audio/codecs/es8374_audio_codec.h41#endif // _ES8374_AUDIO_CODEC_HCOMMENT
LOWmain/audio/wake_words/custom_wake_word.h1#ifndef CUSTOM_WAKE_WORD_HCOMMENT
LOWmain/audio/wake_words/esp_wake_word.h1#ifndef ESP_WAKE_WORD_HCOMMENT
LOWmain/audio/engines/afe_audio_engine.h1#ifndef AFE_AUDIO_ENGINE_HCOMMENT
LOWmain/boards/minsi-k08-dual/config.h1#ifndef _BOARD_CONFIG_H_COMMENT
LOWmain/boards/minsi-k08-dual/config.h21COMMENT
LOWmain/boards/freenove-esp32s3-display-2.8-lcd/config.h1#ifndef _BOARD_CONFIG_H_COMMENT
LOWmain/boards/freenove-esp32s3-display-2.8-lcd/config.h21#define AUDIO_CODEC_ES8311_ADDR ES8311_CODEC_DEFAULT_ADDRCOMMENT
LOWmain/boards/freenove-esp32s3-display-2.8-lcd/config.h41#define DISPLAY_WIDTH 320COMMENT
LOWmain/boards/doit-s3-aibox/config.h1#ifndef _BOARD_CONFIG_H_COMMENT
LOWmain/boards/doit-s3-aibox/config.h21#define BUILTIN_LED_GPIO GPIO_NUM_45COMMENT
LOWmain/boards/wdmomo/esp32-cgc-144/config.h1#ifndef _BOARD_CONFIG_H_COMMENT
LOWmain/boards/wdmomo/esp32-cgc-144/config.h21#define ASR_BUTTON_GPIO GPIO_NUM_13COMMENT
LOWmain/boards/wdmomo/esp32-cgc-144/config.h41#ifdef LCD_128X128COMMENT
LOWmain/boards/wdmomo/esp32-cgc-144/config.h61#define DISPLAY_MIRROR_Y falseCOMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h1#ifndef _BOARD_CONFIG_H_COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h21COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h41#define DISPLAY_SCLK_PIN GPIO_NUM_18COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h61#endifCOMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h81#define DISPLAY_HEIGHT 320COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h101#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGRCOMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h121#endifCOMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h141#define DISPLAY_HEIGHT 240COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h161#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGRCOMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h181COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h201#define DISPLAY_MIRROR_X falseCOMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h221#define DISPLAY_OFFSET_X 0COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h241COMMENT
LOWmain/boards/wdmomo/esp32-cgc/config.h261#define DISPLAY_MIRROR_Y falseCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h1#ifndef _BOARD_CONFIG_H_COMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h21#elseCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h41#define DISPLAY_DC_PIN GPIO_NUM_40COMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h61#ifdef CONFIG_LCD_ST7789_240X320_NO_IPSCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h81#define DISPLAY_MIRROR_Y falseCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h101#define DISPLAY_OFFSET_Y 0COMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h121#ifdef CONFIG_LCD_ST7789_240X240COMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h141#define DISPLAY_MIRROR_Y falseCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h161#define DISPLAY_OFFSET_Y 53COMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h181#ifdef CONFIG_LCD_ST7735_128X128COMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h201#define DISPLAY_MIRROR_Y falseCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h221#define DISPLAY_OFFSET_Y 0COMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h241#ifdef CONFIG_LCD_ILI9341_240X320_NO_IPSCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h261#define DISPLAY_MIRROR_Y falseCOMMENT
LOWmain/boards/bread-compact-wifi-lcd/config.h281#define DISPLAY_BACKLIGHT_OUTPUT_INVERT falseCOMMENT
LOWmain/boards/dfrobot/df-s3-ai-cam/config.h1#ifndef _BOARD_CONFIG_H_COMMENT
LOWmain/boards/dfrobot/df-s3-ai-cam/config.h21#define RESET_NVS_BUTTON_GPIO GPIO_NUM_NCCOMMENT
LOWmain/boards/dfrobot/df-s3-ai-cam/config.h41COMMENT
596 more matches not shown…
Hyper-Verbose Identifiers123 hits · 107 pts
SeverityFileLineSnippetContext
LOWdocker/firmware-builder/firmware_builder.py293def is_retryable_upload_error(error: Exception) -> bool:CODE
LOWdocker/firmware-builder/test_firmware_builder.py56 def test_success_writes_artifacts_and_manifest(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py110 def test_failed_build_preserves_log_and_failed_manifest(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py139 def test_failure_summary_prefers_compiler_error(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py155 def test_success_uploads_outputs_and_manifest_last(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py216 def test_transient_upload_is_retried_with_exponential_backoff(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py245 def test_transient_upload_fails_after_retry_limit(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py273 def test_permanent_upload_error_is_not_retried(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py300 def test_rejects_path_traversal_board(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py319 def test_rejects_unknown_board_name(self) -> None:CODE
LOWdocker/firmware-builder/test_firmware_builder.py338 def test_rejects_invalid_build_options(self) -> None:CODE
LOWscripts/build.py110def _validate_reported_identifier(value: object, field: str) -> str:CODE
LOWscripts/build.py216def _language_sdkconfig_option(language: str) -> tuple[str, str]:CODE
LOWscripts/build.py300def _enabled_default_wake_word_symbols(target: str) -> list[str]:CODE
LOWscripts/build.py313def _board_supports_wake_word(CODE
LOWscripts/build.py338def _wake_word_sdkconfig_options(CODE
LOWscripts/build.py463def _kconfig_config_board_dependencies(CODE
LOWscripts/build.py503def _build_option_definitions(CODE
LOWscripts/build.py783def _detect_idf_version_for_listing() -> tuple[int, int, int]:CODE
LOWscripts/build.py1011def _load_representative_variants(CODE
LOWscripts/build.py1054def _select_variants_for_changes(CODE
LOWscripts/build.py1115def _find_board_config_candidates(board_type: str) -> list[str]:CODE
LOWscripts/build.py1154def _extract_board_config_from_sdkconfig_append(sdkconfig_append: list[str]) -> Optional[str]:CODE
LOWscripts/build.py1170def _board_config_symbol_exists(CODE
LOWscripts/build.py1465def _validate_configured_symbols(symbols: list[str], option_name: str) -> None:CODE
LOWscripts/build.py1487def _validate_configured_options(options: list[str], option_name: str) -> None:CODE
LOW⚡scripts/build_default_assets.py509def read_idf_target_from_sdkconfig(sdkconfig_path):CODE
LOWscripts/build_default_assets.py521def read_wakenet_from_sdkconfig(sdkconfig_path):CODE
LOWscripts/build_default_assets.py547def read_multinet_from_sdkconfig(sdkconfig_path):CODE
LOWscripts/build_default_assets.py596def read_wake_word_type_from_sdkconfig(sdkconfig_path):CODE
LOWscripts/build_default_assets.py636def read_custom_wake_word_from_sdkconfig(sdkconfig_path):CODE
LOWscripts/build_default_assets.py689def get_language_from_multinet_models(multinet_models):CODE
LOWscripts/build_default_assets.py770def get_emoji_collection_path(default_emoji_collection, noto_fonts_path, project_root=None):CODE
LOWscripts/tests/test_ogg_demuxer.py15 def test_zero_length_lace_is_processed_without_more_input(self):CODE
LOW⚡scripts/tests/test_build.py333 def test_nested_manufacturer_board_path(self):CODE
LOW⚡scripts/tests/test_build.py340 def test_official_directory_can_keep_legacy_board_type(self):CODE
LOW⚡scripts/tests/test_build.py348 def test_board_display_name_comes_from_kconfig_prompt(self):CODE
LOW⚡scripts/tests/test_build.py356 def test_board_target_matching_uses_complete_kconfig_symbols(self):CODE
LOW⚡scripts/tests/test_build.py811 def test_sync_vscode_target_skips_missing_settings(self):CODE
LOW⚡scripts/tests/test_build.py816 def test_same_target_does_not_clean_build_directory(self):CODE
LOW⚡scripts/tests/test_build.py826 def test_changed_cmake_target_runs_fullclean_only(self):CODE
LOW⚡scripts/tests/test_build.py1046 def test_incompatible_wake_word_model_is_rejected(self):CODE
LOW⚡scripts/tests/test_build.py1055 def test_board_wake_word_support_obeys_psram_dependency(self):CODE
LOW⚡scripts/tests/test_build.py1065 def test_user_options_override_board_options(self):CODE
LOWscripts/tests/test_build.py133 def test_reported_types_and_names_are_valid_and_unique(self):CODE
LOWscripts/tests/test_build.py172 def test_language_and_wake_word_are_not_board_config_options(self):CODE
LOWscripts/tests/test_build.py202 def test_default_flash_options_are_not_repeated(self):CODE
LOWscripts/tests/test_build.py253 def test_chip_defaults_only_contain_target_overrides(self):CODE
LOWscripts/tests/test_build.py382 def test_explicit_board_config_rejects_incompatible_target(self):CODE
LOWscripts/tests/test_build.py393 def test_explicit_board_config_rejects_different_board_directory(self):CODE
LOWscripts/tests/test_build.py404 def test_inferred_board_config_rejects_incompatible_target(self):CODE
LOWscripts/tests/test_build.py415 def test_rejected_board_selection_stops_before_build(self):CODE
LOWscripts/tests/test_build.py460 def test_variant_name_disambiguates_shared_board_directory(self):CODE
LOWscripts/tests/test_build.py480 def test_new_manufacturer_directories_keep_existing_board_types(self):CODE
LOWscripts/tests/test_build.py507 def test_alientek_directory_keeps_atk_board_types(self):CODE
LOWscripts/tests/test_build.py540 def test_same_leaf_names_are_scoped_by_manufacturer(self):CODE
LOWscripts/tests/test_build.py550 def test_common_and_core_changes_select_representatives(self):CODE
LOWscripts/tests/test_build.py566 def test_docs_only_selects_none(self):CODE
LOWscripts/tests/test_build.py574 def test_board_menu_is_sorted_and_matches_cmake(self):CODE
LOWscripts/tests/test_build.py635 def test_board_menu_has_explicit_target_defaults(self):CODE
63 more matches not shown…
Excessive Try-Catch Wrapping39 hits · 63 pts
SeverityFileLineSnippetContext
LOWdocker/firmware-builder/firmware_builder.py327 except Exception as error:CODE
LOWdocker/firmware-builder/firmware_builder.py449 except Exception as error:CODE
LOWscripts/build.py950 except Exception as e:CODE
MEDIUMscripts/download_github_runs.py209 print("Error: GITHUB_TOKEN not found in environment variables.", file=sys.stderr)CODE
LOWscripts/download_github_runs.py287 except Exception as e:CODE
MEDIUMscripts/download_github_runs.py288 print(f"Error: {e}", file=sys.stderr)CODE
LOWscripts/gen_lang.py185 except Exception as e:CODE
MEDIUMscripts/gen_lang.py186 print(f"Error: {e}")CODE
MEDIUM⚡scripts/build_default_assets.py873 print(f"Error: Generated assets.bin not found: {image_file}")CODE
MEDIUM⚡scripts/build_default_assets.py877 print(f"Error: Failed to build assets: {e}")CODE
MEDIUMscripts/build_default_assets.py258 print(f"Error: Failed to generate srmodels.bin: {e}")CODE
MEDIUMscripts/build_default_assets.py940 print("Error: USE_CUSTOM_WAKE_WORD is enabled but no multinet models are selected in sdkconfig")CODE
LOW⚡scripts/build_default_assets.py876 except Exception as e:CODE
LOWscripts/build_default_assets.py257 except Exception as e:CODE
LOWscripts/versions.py219 except Exception as e:CODE
MEDIUMscripts/versions.py220 print(f"Error uploading version info: {str(e)}")CODE
LOWscripts/ogg_converter/xiaozhi_ogg_converter.py186 except Exception as e:CODE
LOWscripts/ogg_converter/xiaozhi_ogg_converter.py205 except Exception as e:CODE
LOWscripts/ogg_converter/xiaozhi_ogg_converter.py224 except Exception as e:CODE
LOWscripts/Image_Converter/lvgl_tools_gui.py245 except Exception as e:CODE
LOWscripts/p3_tools/batch_convert_gui.py187 except Exception as e:CODE
LOWscripts/p3_tools/batch_convert_gui.py201 except Exception as e:CODE
LOWscripts/p3_tools/batch_convert_gui.py215 except Exception as e:CODE
MEDIUMscripts/spiffs_assets/build.py72 print(f"Error: Failed to generate srmodels.bin: {e}")CODE
LOW⚡scripts/spiffs_assets/build.py134 except Exception as e:CODE
MEDIUM⚡scripts/spiffs_assets/build.py135 print(f"Error loading config file {config_path}: {e}")CODE
MEDIUMscripts/spiffs_assets/build.py151 print(f"Error: No src field found for emote '{emote_name}' in config")CODE
LOWscripts/spiffs_assets/build.py259 except Exception as e:CODE
MEDIUMscripts/spiffs_assets/build.py260 print(f"Error reading/processing layout.json: {e}")CODE
MEDIUMscripts/spiffs_assets/build.py391 print(f"Error: Failed to package assets.bin: {e}")CODE
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py101 print('Error: convert_path is NULL')CODE
LOWscripts/spiffs_assets/spiffs_assets_gen.py137 except Exception as e:CODE
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py254 print('An error occurred while executing LVGLImage.py:')CODE
LOW⚡scripts/spiffs_assets/spiffs_assets_gen.py294 except Exception as e:CODE
MEDIUM⚡scripts/spiffs_assets/spiffs_assets_gen.py295 print(f'An error occurred during conversion: {e}')CODE
MEDIUM⚡scripts/spiffs_assets/spiffs_assets_gen.py305 print('Error: Height must be a positive integer')CODE
LOW⚡scripts/spiffs_assets/spiffs_assets_gen.py314 except Exception as e:CODE
LOWscripts/spiffs_assets/spiffs_assets_gen.py418 except Exception as e:CODE
LOWscripts/spiffs_assets/build_all.py75 except Exception as e:CODE
Cross-Language Confusion8 hits · 60 pts
SeverityFileLineSnippetContext
HIGH⚡scripts/tests/test_esp_vocat_i2c.py87 assert(charge.Update() && reads==6 && waits==std::vector<int>({10,20}));CODE
HIGH⚡scripts/tests/test_esp_vocat_i2c.py89 assert(level==50 && !charging && discharging);CODE
HIGH⚡scripts/tests/test_esp_vocat_i2c.py91 assert(!charge.Update() && reads==3 && waits==std::vector<int>({10,20}));CODE
HIGH⚡scripts/tests/test_esp_vocat_i2c.py94 assert(!charge.Update() && reads==1 && waits.empty());CODE
HIGH⚡scripts/tests/test_esp_vocat_i2c.py99 assert(level==60 && charging && !discharging);CODE
HIGH⚡scripts/tests/test_esp_vocat_i2c.py107 assert(touch.tp_.x==42 && touch.tp_.y==24 && touch.press_count_==1);CODE
HIGH⚡scripts/tests/test_esp_vocat_i2c.py109 assert(!touch.UpdateTouchPoint() && reads==2 && waits.empty());CODE
HIGH⚡scripts/tests/test_esp_vocat_i2c.py110 assert(touch.tp_.num==1 && touch.was_touched_ && touch.press_count_==1);CODE
Decorative Section Separators8 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUM⚡scripts/build_default_assets.py505# =============================================================================COMMENT
MEDIUM⚡scripts/build_default_assets.py507# =============================================================================COMMENT
MEDIUMscripts/build_default_assets.py24# =============================================================================COMMENT
MEDIUMscripts/build_default_assets.py26# =============================================================================COMMENT
MEDIUMscripts/build_default_assets.py127# =============================================================================COMMENT
MEDIUMscripts/build_default_assets.py129# =============================================================================COMMENT
MEDIUMscripts/build_default_assets.py407# =============================================================================COMMENT
MEDIUMscripts/build_default_assets.py409# =============================================================================COMMENT
Deep Nesting30 hits · 26 pts
SeverityFileLineSnippetContext
LOWscripts/build.py639CODE
LOWscripts/build.py755CODE
LOWscripts/build.py854CODE
LOWscripts/build.py1115CODE
LOWscripts/build_default_assets.py59CODE
LOWscripts/build_default_assets.py275CODE
LOWscripts/build_default_assets.py521CODE
LOWscripts/build_default_assets.py547CODE
LOWscripts/build_default_assets.py596CODE
LOWscripts/build_default_assets.py636CODE
LOWscripts/versions.py61CODE
LOWscripts/versions.py223CODE
LOWscripts/Image_Converter/lvgl_tools_gui.py195CODE
LOWscripts/Image_Converter/LVGLImage.py212CODE
LOWscripts/Image_Converter/LVGLImage.py576CODE
LOWscripts/Image_Converter/LVGLImage.py787CODE
LOWscripts/Image_Converter/LVGLImage.py839CODE
LOWscripts/Image_Converter/LVGLImage.py875CODE
LOWscripts/Image_Converter/LVGLImage.py978CODE
LOWscripts/Image_Converter/LVGLImage.py1287CODE
LOWscripts/p3_tools/convert_p3_to_audio.py9CODE
LOWscripts/p3_tools/play_p3.py8CODE
LOWscripts/p3_tools/p3_gui_player.py12CODE
LOWscripts/tests/test_build.py202CODE
LOWscripts/tests/test_build.py660CODE
LOWscripts/spiffs_assets/spiffs_assets_gen.py141CODE
LOWscripts/spiffs_assets/spiffs_assets_gen.py391CODE
LOWscripts/spiffs_assets/spiffs_assets_gen.py492CODE
LOWscripts/spiffs_assets/build_all.py80CODE
LOWscripts/spiffs_assets/pack_model.py41CODE
Redundant / Tautological Comments6 hits · 9 pts
SeverityFileLineSnippetContext
LOWscripts/download_github_runs.py87 # Check if there are more pagesCOMMENT
LOWscripts/download_github_runs.py254 # Check if file already existsCOMMENT
LOWscripts/audio_debug_server.py40 # Close files and socketCOMMENT
LOWscripts/build_default_assets.py1000 # Check if we have anything to buildCOMMENT
LOWscripts/spiffs_assets/spiffs_assets_gen.py72 # Check if convert_path is not emptyCOMMENT
LOWscripts/spiffs_assets/spiffs_assets_gen.py117 # Check if the file already existsCOMMENT
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMscripts/audio_debug_server.py12 # Create a UDP socketCOMMENT
MEDIUMscripts/build_default_assets.py1003 # Create an empty assets.bin fileCOMMENT
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py123 # Create the parent directories if they do not existCOMMENT
Unused Imports7 hits · 7 pts
SeverityFileLineSnippetContext
LOWdocker/firmware-builder/firmware_builder.py9CODE
LOWdocker/firmware-builder/test_firmware_builder.py4CODE
LOWscripts/download_github_runs.py17CODE
LOWscripts/download_github_runs.py19CODE
LOWscripts/spiffs_assets/build.py22CODE
LOWscripts/spiffs_assets/spiffs_assets_gen.py3CODE
LOWscripts/spiffs_assets/spiffs_assets_gen.py10CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHscripts/download_github_runs.py126 Rename artifact according to the specified rules. Rules: - Remove "xiaozhi_" prefix - Remove hash STRING
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/Image_Converter/LVGLImage.py1285CODE