# pre-commit 自动化代码审查配置 # 详见 docs/代码规范/pre-commit使用说明.md default_install_hook_types: [pre-commit, commit-msg] exclude: | (?x)^( \.opencode/node_modules/| Lib/lvgl/| simulator/| MDK-ARM/RTE/ ) repos: # 1) 通用钩子(官方) - repo: https://github.com/pre-commit/pre-commit-hooks rev: v5.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-added-large-files - id: check-merge-conflict - id: check-yaml # 2) C 代码格式:只检查,绝不改写(编码铁律) # Route A:暂不启用,待全库格式化基线后再放开 # - repo: https://github.com/pre-commit/mirrors-clang-format # rev: v19.1.4 # hooks: # - id: clang-format # args: [--dry-run, --Werror] # 3) commit message 格式(宽松规则,兼容中文标题) - repo: https://github.com/jorisroovers/gitlint rev: v0.19.1 hooks: - id: gitlint # 4) 本地自定义钩子(仓库级) - repo: local hooks: - id: cppcheck name: cppcheck entry: cppcheck # 注意:YAML 流序列中逗号是元素分隔符,含逗号/空格的参数必须加引号 args: ['--enable=warning,performance,portability,style', '--error-exitcode=1', '--inline-suppr', '--std=c99', '--quiet', '--suppress=missingIncludeSystem', '--suppress=missingInclude', '--suppress=invalidPrintfArgType_sint', '--suppress=invalidPrintfArgType_uint', '--suppress=unusedFunction', '--suppress=unusedStructMember', '--suppress=noExplicitConstructor', '--suppress=useStlAlgorithm', '--suppress=constParameterPointer', '--suppress=constParameterCallback', '--suppress=redundantAssignment', '--suppress=normalCheckLevelMaxBranches', '-I', 'Inc', '-I', 'App', '-I', 'Drivers/BSP', '-I', 'Drivers/STM32F4xx_HAL_Driver/Inc', '-I', 'Drivers/CMSIS/Include', '-I', 'Middlewares/Third_Party/FreeRTOS/Source/include'] language: system types: [c] # 仅扫描项目自有代码;排除第三方库与 LVGL 依赖文件 # (UI 生成文件 ui_font_cn_12/ui_menu_tab 由生成器按工程约定产出,纳入受检) exclude: | (?x)^( Drivers/CMSIS/| Drivers/STM32F4xx_HAL_Driver/| Drivers/BSP/NET/lftpd/| Drivers/BSP/dhara/| Lib/| Middlewares/| MDK-ARM/| test/ ) - id: no-mojibake name: Forbid U+FFFD mojibake entry: python scripts/check_mojibake.py language: system types: [c] - id: coding-standard name: C coding standard (规范V1.0) entry: python scripts/check_coding_standard.py language: system types: [c] # 范围与 cppcheck 钩子一致;另排除 CubeMX 生成文件(Src/、Inc/,重新生成即覆盖)、 # dhara/FatFS 接口适配层(nand_ftl,函数名由外部 API 固定) exclude: | (?x)^( Drivers/CMSIS/| Drivers/STM32F4xx_HAL_Driver/| Drivers/BSP/NET/lftpd/| Drivers/BSP/GD5F2GQ5UE/nand_ftl\.| Drivers/BSP/dhara/| Lib/| Middlewares/| MDK-ARM/| test/| Src/| Inc/ )