1.4 KiB
1.4 KiB
Pre-commit Hook
Purpose
定义基于 lefthook 的 pre-commit hook 配置,在 git commit 时自动运行 lint 检查,拦截违规代码提交。
ADDED Requirements
Requirement: lefthook 配置
系统 SHALL 通过 lefthook.yml 配置 pre-commit hook。
Scenario: 配置文件位置
- WHEN 配置 lefthook
- THEN 配置文件 SHALL 位于项目根目录
lefthook.yml
Scenario: pre-commit hook 安装
- WHEN 开发者首次克隆项目
- THEN 运行
lefthook installSHALL 安装 git hooks - THEN hooks SHALL 自动注册到 .git/hooks/
Requirement: Go 文件变更触发 lint
系统 SHALL 在 Go 文件变更时自动运行 golangci-lint。
Scenario: 检测到 Go 文件变更
- WHEN git commit 中包含 backend/**/*.go 文件的变更
- THEN SHALL 自动运行 golangci-lint
Scenario: 增量检查
- WHEN 运行 lint
- THEN SHALL 只检查 staged 文件(使用 --new-from-rev HEAD)
- THEN SHALL NOT 检查整个代码库
Scenario: lint 通过
- WHEN golangci-lint 检查通过
- THEN commit SHALL 正常完成
Scenario: lint 失败
- WHEN golangci-lint 检查发现违规
- THEN commit SHALL 被拒绝
- THEN SHALL 显示具体的违规信息和修复建议
Scenario: 无 Go 文件变更
- WHEN git commit 不包含 Go 文件变更
- THEN SHALL NOT 运行 golangci-lint
- THEN commit SHALL 正常完成