pre-commit工具使用指导
概述
pre-commit是一个Git Hooks框架,用于在 git commit 时自动运行代码检查和格式化工具。本项目已配置以下检查:
| Hook | 功能 | 说明 |
|---|---|---|
| clang-format | C/C++ 代码格式化 | 自动格式化代码,保持风格一致 |
| OAT Check | 开源合规检查 | 检测许可证头、禁止二进制文件提交 |
环境要求
- Git: 2.0+
- Python: 3.8+
- clang-format: 14.0+ (代码格式化工具)
- Java: 17+ (OAT工具依赖,可自动安装)
- Maven: 3.6+ (OAT工具依赖,可自动安装)
安装步骤
1. 安装pre-commit
# 方式一: 使用pip
pip install pre-commit
# 方式二: 使用系统包管理器 (Ubuntu/Debian)
sudo apt install pre-commit
2. 安装依赖工具
# Ubuntu/Debian
sudo apt install clang-format openjdk-17-jre maven
# macOS
brew install clang-format openjdk@17 maven
3. 项目路径下安装Git Hooks
# 进入代码仓根目录
cd /path/to/hccl
pre-commit install
安装成功后会显示:
pre-commit installed at .git/hooks/pre-commit
使用方法
自动检查(推荐)
每次执行 git commit 时,pre-commit会自动运行检查:
git add .
git commit -m "your commit message"
输出示例:
clang-format.............................................................Passed
OAT Compliance Check.....................................................Passed
手动运行检查
# 运行所有检查
pre-commit run
# 运行特定类型检查
pre-commit run clang-format
pre-commit run oat-check
# 检查所有文件(不限于暂存区)
pre-commit run --all-files
跳过检查(紧急情况)
git commit --no-verify -m "emergency fix"
注意: 仅在紧急情况下使用,正常开发流程应保证检查通过。
检查项说明
1. clang-format
自动格式化C/C++ 代码,遵循项目根目录下 .clang-format 配置:
2. OAT Compliance Check
OAT (Open Source Audit Tool) 检查开源合规性:
| 检查项 | 说明 |
|---|---|
| 许可证头检查 | 确保源文件包含CANN License头 |
| 二进制文件检查 | 禁止提交二进制文件 |
| 归档文件检查 | 禁止提交zip/tar等归档文件 |
OAT检查脚本,首次运行时会自动:
- 检测/安装Java 17
- 检测/安装Maven
- 克隆并编译tools_oat工具(约1-2分钟)
常见问题
Q1: 首次提交时OAT检查很慢
原因: 首次运行需要克隆并编译OAT工具。
解决: 这是正常现象,后续提交会使用缓存的JAR,速度会很快。