Repository Analysis

78/xiaozhi-esp32

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

13.3 Low AI signal View on GitHub
13.3
Adjusted Score
13.3
Raw Score
100%
Time Factor
2026-05-28
Last Push
26,867
Stars
C++
Language
53,744
Lines of Code
648
Files
664
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 1MEDIUM 28LOW 635

Pattern Findings

664 matches across 9 categories. Click a row to expand file-level details.

Over-Commented Block559 hits · 559 pts
SeverityFileLineSnippet
LOWdocs/custom-board_zh.md41参考示例(来自lichuang-c3-dev):
LOWdocs/custom-board_zh.md61#define AUDIO_CODEC_I2C_SCL_PIN GPIO_NUM_1
LOWdocs/custom-board_zh.md1411. **类定义**:继承自`WifiBoard`或`Ml307Board`
LOWdocs/custom-board.md41- Display parameters and pins.
LOWdocs/custom-board.md61#define AUDIO_CODEC_PA_PIN GPIO_NUM_13
LOWdocs/custom-board.md141
LOWscripts/Image_Converter/LVGLImage.py321 if premultiplied:
LOWmain/application.h1#ifndef _APPLICATION_H_
LOWmain/application.h21// Main event bits
LOWmain/mcp_server.h1#ifndef MCP_SERVER_H
LOWmain/assets.h1#ifndef ASSETS_H
LOWmain/led/circular_strip.h1#ifndef _CIRCULAR_STRIP_H_
LOWmain/audio/audio_service.h1#ifndef AUDIO_SERVICE_H
LOWmain/audio/audio_service.h41#define MAX_PLAYBACK_TASKS_IN_QUEUE 2
LOWmain/audio/audio_codec.h1#ifndef _AUDIO_CODEC_H
LOWmain/audio/codecs/es8374_audio_codec.h41#endif // _ES8374_AUDIO_CODEC_H
LOWmain/audio/processors/afe_audio_processor.h1#ifndef AFE_AUDIO_PROCESSOR_H
LOWmain/audio/wake_words/custom_wake_word.h1#ifndef CUSTOM_WAKE_WORD_H
LOWmain/audio/wake_words/esp_wake_word.h1#ifndef ESP_WAKE_WORD_H
LOWmain/audio/wake_words/afe_wake_word.h1#ifndef AFE_WAKE_WORD_H
LOWmain/boards/movecall-moji-esp32s3/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/movecall-moji-esp32s3/config.h21
LOWmain/boards/zhengchen-1.54tft-ml307/config.h1
LOWmain/boards/zhengchen-1.54tft-ml307/config.h21#define DISPLAY_SDA GPIO_NUM_41
LOWmain/boards/minsi-k08-dual/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/minsi-k08-dual/config.h21
LOWmain/boards/esp-s3-lcd-ev-board-2/pin_config.h1
LOWmain/boards/esp-s3-lcd-ev-board-2/pin_config.h21#define GC9503V_LCD_BK_LIGHT_OFF_LEVEL !GC9503V_LCD_BK_LIGHT_ON_LEVEL
LOWmain/boards/esp-s3-lcd-ev-board-2/pin_config.h41
LOWmain/boards/esp-s3-lcd-ev-board-2/esp_lcd_gc9503.c1/*
LOWmain/boards/esp-s3-lcd-ev-board-2/esp_lcd_gc9503.c181// *INDENT-OFF*
LOWmain/boards/esp-s3-lcd-ev-board-2/esp_lcd_gc9503.c201// {0x71, (uint8_t []){0x48}, 1, 0},
LOWmain/boards/esp-s3-lcd-ev-board-2/esp_lcd_gc9503.c221// {0x7b, (uint8_t []){0x08, 0x13}, 2, 0},
LOWmain/boards/esp-s3-lcd-ev-board-2/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/esp-s3-lcd-ev-board-2/config.h21
LOWmain/boards/lichuang-dev/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/lichuang-dev/config.h21#define AUDIO_CODEC_ES7210_ADDR 0x82
LOWmain/boards/lichuang-dev/config.h41#define CAMERA_PIN_PWDN GPIO_NUM_NC
LOWmain/boards/freenove-esp32s3-display-2.8-lcd/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/freenove-esp32s3-display-2.8-lcd/config.h21#define AUDIO_CODEC_ES8311_ADDR ES8311_CODEC_DEFAULT_ADDR
LOWmain/boards/freenove-esp32s3-display-2.8-lcd/config.h41#define DISPLAY_WIDTH 320
LOWmain/boards/esp-box-lite/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/esp-box-lite/config.h21#define BUILTIN_LED_GPIO GPIO_NUM_NC
LOWmain/boards/esp-sensairshuttle/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/esp-sensairshuttle/config.h21#define DISPLAY_CS_PIN GPIO_NUM_25
LOWmain/boards/esp-vocat/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/esp-vocat/config.h21#define AUDIO_I2S_GPIO_WS GPIO_NUM_39
LOWmain/boards/esp-vocat/config.h41#define DISPLAY_MIRROR_X false
LOWmain/boards/esp-vocat/config.h61#define UART1_TX_2 GPIO_NUM_5
LOWmain/boards/doit-s3-aibox/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/doit-s3-aibox/config.h21#define BUILTIN_LED_GPIO GPIO_NUM_45
LOWmain/boards/labplus-mpython-v3/config.h1
LOWmain/boards/labplus-mpython-v3/config.h21#define BOOT_BUTTON_GPIO GPIO_NUM_0
LOWmain/boards/atk-dnesp32s3-box2-4g/config.h21#define AUDIO_CODEC_I2C_SDA_PIN GPIO_NUM_48
LOWmain/boards/atk-dnesp32s3-box2-4g/config.h41#define XIO_VBUS_EN (IO_EXPANDER_PIN_NUM_11)
LOWmain/boards/atk-dnesp32s3-box2-4g/config.h61#define LCD_PIN_D6 GPIO_NUM_4
LOWmain/boards/bread-compact-wifi-lcd/config.h1#ifndef _BOARD_CONFIG_H_
LOWmain/boards/bread-compact-wifi-lcd/config.h21#else
LOWmain/boards/bread-compact-wifi-lcd/config.h41#define DISPLAY_DC_PIN GPIO_NUM_40
LOWmain/boards/bread-compact-wifi-lcd/config.h61#ifdef CONFIG_LCD_ST7789_240X320_NO_IPS
499 more matches not shown…
Excessive Try-Catch Wrapping40 hits · 64 pts
SeverityFileLineSnippet
MEDIUMscripts/download_github_runs.py209 print("Error: GITHUB_TOKEN not found in environment variables.", file=sys.stderr)
LOWscripts/download_github_runs.py287 except Exception as e:
MEDIUMscripts/download_github_runs.py288 print(f"Error: {e}", file=sys.stderr)
LOWscripts/release.py128 except Exception as e:
LOWscripts/gen_lang.py185 except Exception as e:
MEDIUMscripts/gen_lang.py186 print(f"Error: {e}")
MEDIUMscripts/build_default_assets.py799 print(f"Error: Generated assets.bin not found: {image_file}")
MEDIUMscripts/build_default_assets.py803 print(f"Error: Failed to build assets: {e}")
MEDIUMscripts/build_default_assets.py201 print(f"Error: Failed to generate srmodels.bin: {e}")
MEDIUMscripts/build_default_assets.py860 print("Error: USE_CUSTOM_WAKE_WORD is enabled but no multinet models are selected in sdkconfig")
LOWscripts/build_default_assets.py802 except Exception as e:
LOWscripts/build_default_assets.py200 except Exception as e:
LOWscripts/versions.py219 except Exception as e:
MEDIUMscripts/versions.py220 print(f"Error uploading version info: {str(e)}")
LOWscripts/ogg_converter/xiaozhi_ogg_converter.py186 except Exception as e:
LOWscripts/ogg_converter/xiaozhi_ogg_converter.py205 except Exception as e:
LOWscripts/ogg_converter/xiaozhi_ogg_converter.py224 except Exception as e:
LOWscripts/Image_Converter/lvgl_tools_gui.py245 except Exception as e:
LOWscripts/p3_tools/batch_convert_gui.py187 except Exception as e:
LOWscripts/p3_tools/batch_convert_gui.py201 except Exception as e:
LOWscripts/p3_tools/batch_convert_gui.py215 except Exception as e:
MEDIUMscripts/spiffs_assets/build.py72 print(f"Error: Failed to generate srmodels.bin: {e}")
LOWscripts/spiffs_assets/build.py134 except Exception as e:
MEDIUMscripts/spiffs_assets/build.py135 print(f"Error loading config file {config_path}: {e}")
MEDIUMscripts/spiffs_assets/build.py151 print(f"Error: No src field found for emote '{emote_name}' in config")
LOWscripts/spiffs_assets/build.py259 except Exception as e:
MEDIUMscripts/spiffs_assets/build.py260 print(f"Error reading/processing layout.json: {e}")
MEDIUMscripts/spiffs_assets/build.py391 print(f"Error: Failed to package assets.bin: {e}")
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py101 print('Error: convert_path is NULL')
LOWscripts/spiffs_assets/spiffs_assets_gen.py137 except Exception as e:
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py254 print('An error occurred while executing LVGLImage.py:')
LOWscripts/spiffs_assets/spiffs_assets_gen.py294 except Exception as e:
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py295 print(f'An error occurred during conversion: {e}')
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py305 print('Error: Height must be a positive integer')
LOWscripts/spiffs_assets/spiffs_assets_gen.py314 except Exception as e:
LOWscripts/spiffs_assets/spiffs_assets_gen.py418 except Exception as e:
LOWscripts/spiffs_assets/build_all.py75 except Exception as e:
LOWscripts/acoustic_check/graphic.py342 except Exception as e:
LOWscripts/acoustic_check/graphic.py418 except Exception as e:
LOWscripts/acoustic_check/main.py16 except Exception as e:
Decorative Section Separators8 hits · 27 pts
SeverityFileLineSnippet
MEDIUMscripts/build_default_assets.py452# =============================================================================
MEDIUMscripts/build_default_assets.py454# =============================================================================
MEDIUMscripts/build_default_assets.py23# =============================================================================
MEDIUMscripts/build_default_assets.py25# =============================================================================
MEDIUMscripts/build_default_assets.py126# =============================================================================
MEDIUMscripts/build_default_assets.py128# =============================================================================
MEDIUMscripts/build_default_assets.py354# =============================================================================
MEDIUMscripts/build_default_assets.py356# =============================================================================
Deep Nesting29 hits · 26 pts
SeverityFileLineSnippet
LOWscripts/release.py74
LOWscripts/release.py143
LOWscripts/release.py267
LOWscripts/build_default_assets.py58
LOWscripts/build_default_assets.py218
LOWscripts/build_default_assets.py456
LOWscripts/build_default_assets.py482
LOWscripts/build_default_assets.py531
LOWscripts/build_default_assets.py571
LOWscripts/versions.py61
LOWscripts/versions.py223
LOWscripts/Image_Converter/lvgl_tools_gui.py195
LOWscripts/Image_Converter/LVGLImage.py212
LOWscripts/Image_Converter/LVGLImage.py576
LOWscripts/Image_Converter/LVGLImage.py787
LOWscripts/Image_Converter/LVGLImage.py839
LOWscripts/Image_Converter/LVGLImage.py875
LOWscripts/Image_Converter/LVGLImage.py978
LOWscripts/Image_Converter/LVGLImage.py1287
LOWscripts/p3_tools/convert_p3_to_audio.py9
LOWscripts/p3_tools/play_p3.py8
LOWscripts/p3_tools/p3_gui_player.py12
LOWscripts/spiffs_assets/spiffs_assets_gen.py141
LOWscripts/spiffs_assets/spiffs_assets_gen.py391
LOWscripts/spiffs_assets/spiffs_assets_gen.py492
LOWscripts/spiffs_assets/build_all.py80
LOWscripts/spiffs_assets/pack_model.py41
LOWscripts/acoustic_check/demod.py179
LOWscripts/acoustic_check/graphic.py118
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippet
LOWscripts/download_github_runs.py87 # Check if there are more pages
LOWscripts/download_github_runs.py254 # Check if file already exists
LOWscripts/audio_debug_server.py40 # Close files and socket
LOWscripts/build_default_assets.py225 # Check if this is otto-gif collection
LOWscripts/build_default_assets.py913 # Check if we have anything to build
LOWscripts/spiffs_assets/spiffs_assets_gen.py72 # Check if convert_path is not empty
LOWscripts/spiffs_assets/spiffs_assets_gen.py117 # Check if the file already exists
Hyper-Verbose Identifiers11 hits · 10 pts
SeverityFileLineSnippet
LOWscripts/release.py17def get_board_type_from_compile_commands() -> Optional[str]:
LOWscripts/release.py143def _find_board_config_candidates(board_type: str) -> list[str]:
LOWscripts/release.py163def _extract_board_config_from_sdkconfig_append(sdkconfig_append: list[str]) -> Optional[str]:
LOWscripts/build_default_assets.py456def read_wakenet_from_sdkconfig(sdkconfig_path):
LOWscripts/build_default_assets.py482def read_multinet_from_sdkconfig(sdkconfig_path):
LOWscripts/build_default_assets.py531def read_wake_word_type_from_sdkconfig(sdkconfig_path):
LOWscripts/build_default_assets.py571def read_custom_wake_word_from_sdkconfig(sdkconfig_path):
LOWscripts/build_default_assets.py624def get_language_from_multinet_models(multinet_models):
LOWscripts/build_default_assets.py709def get_emoji_collection_path(default_emoji_collection, xiaozhi_fonts_path, project_root=None):
LOWscripts/spiffs_assets/build.py138def process_board_emoji_collection(emoji_collection_dir, target_board_dir, assets_dir):
LOWscripts/spiffs_assets/build.py192def process_board_icon_collection(icon_collection_dir, assets_dir):
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippet
MEDIUMscripts/audio_debug_server.py12 # Create a UDP socket
MEDIUMscripts/build_default_assets.py916 # Create an empty assets.bin file
MEDIUMscripts/spiffs_assets/spiffs_assets_gen.py123 # Create the parent directories if they do not exist
Unused Imports6 hits · 6 pts
SeverityFileLineSnippet
LOWscripts/download_github_runs.py17
LOWscripts/download_github_runs.py19
LOWscripts/spiffs_assets/build.py22
LOWscripts/spiffs_assets/spiffs_assets_gen.py3
LOWscripts/spiffs_assets/spiffs_assets_gen.py10
LOWscripts/acoustic_check/graphic.py12
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippet
HIGHscripts/download_github_runs.py126 Rename artifact according to the specified rules. Rules: - Remove "xiaozhi_" prefix - Remove hash