2b66f96d01
新增 scripts/check_coding_standard.py + coding-standard 钩子(S1~S9: 头文件保护宏、文件头注释、宏大写、_t 后缀、switch default、 禁 strcpy/sprintf/goto/Tab、函数注释) 修复存量违规:NET_* 字节序宏大写化、net_fd_set 等类型加 _t 后缀、 net_inet_ntoa 的 sprintf 改 snprintf、补 4 处函数注释与 ui_task.c 文件头 docs/代码规范/pre-commit使用说明.md:新增 2.8 节,修正失效文档路径
99 lines
3.3 KiB
YAML
99 lines
3.3 KiB
YAML
# 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',
|
|
'-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 依赖文件
|
|
exclude: |
|
|
(?x)^(
|
|
Drivers/CMSIS/|
|
|
Drivers/STM32F4xx_HAL_Driver/|
|
|
Drivers/BSP/UI/|
|
|
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/UI/|
|
|
Drivers/BSP/NET/lftpd/|
|
|
Drivers/BSP/GD5F2GQ5UE/nand_ftl\.|
|
|
Drivers/BSP/dhara/|
|
|
Lib/|
|
|
Middlewares/|
|
|
MDK-ARM/|
|
|
test/|
|
|
Src/|
|
|
Inc/
|
|
)
|