089、Pre-commit Hooks 与 Claude Code:提交前自动检查、修复与拦截上周五晚上十一点,我盯着终端里那行git commit -m "fix: 紧急修复线上空指针"发呆。代码改了三行,但 CI 跑了十五分钟才告诉我 lint 没过——因为一个多余的分号。这种场景你肯定不陌生:提交完代码,push 上去,等 CI 跑完,发现是低级错误,再补一个 fix commit,commit log 里全是“修复修复的修复”。Pre-commit hooks 就是用来干这个的:在git commit执行之前,把能自动检查的事情全部做掉。但问题来了——传统的 pre-commit 只能跑脚本、跑 linter,遇到需要上下文理解的逻辑修复,它就傻眼了。Claude Code 的出现改变了这个局面:它不仅能检查,还能在提交前自动修复,甚至能拦截那些“看起来合法但逻辑有问题”的代码。从一次真实的“漏网之鱼”说起先讲个真实案例。我们有个微服务,负责处理用户订单状态机。某次提交,同事改了状态流转逻辑,本地测试通过,lint 通过,单元测试通过。但上线后,某个边界条件下状态回滚出现了死循环。事后复盘,问题出在一段看似无害的代码:# 别这样写!这个条件判断在特定场景下会无限递归
089、Pre-commit Hooks 与 Claude Code:提交前自动检查、修复与拦截
089、Pre-commit Hooks 与 Claude Code:提交前自动检查、修复与拦截上周五晚上十一点,我盯着终端里那行git commit -m "fix: 紧急修复线上空指针"发呆。代码改了三行,但 CI 跑了十五分钟才告诉我 lint 没过——因为一个多余的分号。这种场景你肯定不陌生:提交完代码,push 上去,等 CI 跑完,发现是低级错误,再补一个 fix commit,commit log 里全是“修复修复的修复”。Pre-commit hooks 就是用来干这个的:在git commit执行之前,把能自动检查的事情全部做掉。但问题来了——传统的 pre-commit 只能跑脚本、跑 linter,遇到需要上下文理解的逻辑修复,它就傻眼了。Claude Code 的出现改变了这个局面:它不仅能检查,还能在提交前自动修复,甚至能拦截那些“看起来合法但逻辑有问题”的代码。从一次真实的“漏网之鱼”说起先讲个真实案例。我们有个微服务,负责处理用户订单状态机。某次提交,同事改了状态流转逻辑,本地测试通过,lint 通过,单元测试通过。但上线后,某个边界条件下状态回滚出现了死循环。事后复盘,问题出在一段看似无害的代码:# 别这样写!这个条件判断在特定场景下会无限递归