- id: conventional-commit
name: Conventional Commit
description: 强制 Commit Message 遵循 Conventional Commits 规范
entry: hooks/conventional_commit.py
language: script
stages: [commit-msg]
minimum_pre_commit_version: "3.0.0"
- id: add-signoff-and-change-id
name: 追加 Signed-off-by 和 Change-Id
description: 在 commit message 末尾自动追加 Signed-off-by 和 Change-Id 字段
entry: hooks/add_signoff_and_change_id.py
language: script
stages: [commit-msg]
minimum_pre_commit_version: "3.0.0"
- id: check-sr
name: Check .sr Files
description: 校验 .sr (openUBMC CSR/PSR) 文件语法,支持 C 风格注释
entry: hooks/check_sr.py
language: script
files: '\.sr$'
minimum_pre_commit_version: "3.0.0"
- id: check-global-properties
name: Check Global Properties
description: >-
校验全局属性配置文件 global.json:路径/接口前缀/类型白名单/String 长度/数量上限等静态规则,
以及属性类型(baseType)、持久化类型(usage)、取值范围禁止变更(报错),
访问权限(privilege)、可读写(readOnly)、默认值(default)变更告警
entry: hooks/check_global_properties.py
language: script
files: '(^|.*/)global\.json$'
minimum_pre_commit_version: "3.0.0"
- id: stylua-format
name: StyLua (Lua formatter)
description: Lua 代码格式化
entry: stylua
language: system
types: [lua]
args: ["--config-path", ".stylua.toml", "--verify"]
- id: luacheck
name: Luacheck (Lua linter)
description: Lua 静态分析(lint)
entry: luacheck
language: system
types: [lua]
args: ["--config", ".luacheckrc", "--codes", "--no-color", "--ranges"]
- id: black
name: black
description: Python 代码格式化(auto-fix 模式,Black 兼容)
entry: black
language: python
files: \.py$
types: [python]
args: [--line-length=120]
additional_dependencies: ['black==24.8.0']
minimum_pre_commit_version: '2.9.2'
- id: isort
name: isort
description: Python import 排序(auto-fix 模式)
entry: isort
language: python
files: \.py$
types: [python]
args: [--profile=black, --line-length=120]
additional_dependencies: ['isort==5.13.2']
minimum_pre_commit_version: '2.9.2'
- id: flake8
name: flake8
description: Python 代码风格检查(E203 由 no-space-before-colon 修复,此处只忽略 W503)
entry: flake8
language: python
files: \.py$
types: [python]
args: [--max-line-length=120, --extend-ignore=W503]
additional_dependencies:
- 'flake8==7.1.0'
- 'flake8-bugbear==24.4.21'
- 'flake8-comprehensions==3.15.0'
minimum_pre_commit_version: '2.9.2'
- id: no-space-before-colon
name: no-space-before-colon
description: 移除切片冒号前的空格(修复 black 的 E203/G.FMT.04 冲突,auto-fix)
entry: autopep8 --select E203 --in-place
language: python
files: \.py$
types: [python]
additional_dependencies: ['autopep8==2.3.1']
minimum_pre_commit_version: '2.9.2'
- id: check-json
name: Check JSON
description: JSON 语法检查
entry: python -c "import sys, json; [json.load(open(f, encoding='utf-8')) for f in sys.argv[1:]]"
language: python
files: \.json$
minimum_pre_commit_version: '2.9.2'
- id: check-yaml
name: Check YAML
description: YAML 语法检查 (yaml.safe_load)
entry: python -c "import sys, yaml; [yaml.safe_load(open(f, encoding='utf-8')) for f in sys.argv[1:]]"
language: python
files: \.(yaml|yml)$
additional_dependencies: ['pyyaml==6.0.2']
minimum_pre_commit_version: '2.9.2'
- id: clang-format
name: clang-format
description: C/C++ 代码格式化 (原地修改,使用项目 .clang-format)
entry: clang-format
language: python
types_or: [c++, c, c#, cuda, java, javascript, json, objective-c, proto, textproto]
args:
- -i
- -style=file
additional_dependencies: ['clang-format==22.1.5']
minimum_pre_commit_version: '2.9.2'
- id: eslint
name: eslint
description: TypeScript / Vue 代码质量检查与自动修复
entry: eslint --fix
language: node
types: [file]
files: \.[jt]sx?$|\.vue$
additional_dependencies:
- 'eslint@8.47.0'
- 'eslint-plugin-vue@9.17.0'
- 'eslint-config-prettier@8.10.0'
- '@typescript-eslint/eslint-plugin@5.4.0'
- '@typescript-eslint/parser@5.4.0'
- 'vue-eslint-parser@8.0.1'
minimum_pre_commit_version: '2.9.2'
- id: prettier
name: prettier
description: TypeScript / Vue / CSS / JSON 代码格式化(原地修改)
entry: prettier --write
language: node
types: [file]
files: \.[jt]sx?$|\.vue$|\.css$|\.less$|\.scss$|\.json$|\.md$
additional_dependencies: ['prettier@3.0.3']
minimum_pre_commit_version: '2.9.2'