Golang高效pre-commit钩子实现代码风格检查
Golang高效pre-commit钩子实现代码风格检查 在生产环境中使用Golang时,您觉得哪些预提交钩子非常有用? 我在代码中添加了一些,但一直没能找到一个能强制使用驼峰命名法而非蛇形命名法的钩子。
3 回复
几乎所有的编辑器都会在保存时对你的代码执行 gofmt。我从未在实际代码中见过蛇形命名法。这很可能更多是代码审查/风格规范层面的问题。
更多关于Golang高效pre-commit钩子实现代码风格检查的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Brajesh_Chandra:
在生产环境中使用 Golang 时,您发现哪些预提交钩子非常有用? 我在代码中添加了几个,但一直没找到一个能强制使用驼峰命名法而非蛇形命名法的钩子。
你在预提交钩子中是否使用了任何特定的工具或库(例如 golangci-lint、go fmt 或 gofmt),并且是否探索过它们针对命名约定的自定义选项?
对于强制使用驼峰命名法,推荐使用 revive 配合自定义规则。以下是一个配置示例:
// .revive.toml
ignoreGeneratedHeader = true
severity = "warning"
confidence = 0.8
[rule.var-naming]
arguments = [["^[a-z][a-zA-Z0-9]*$", "驼峰命名"]]
安装与配置:
# 安装 revive
go install github.com/mgechev/revive@latest
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: revive
name: revive
entry: revive
args: ["-config", ".revive.toml", "./..."]
language: system
files: \.go$
另一个常用钩子是 golangci-lint,它集成了多个检查工具:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/golangci/golangci-lint-pre-commit
rev: v1.54.2
hooks:
- id: golangci-lint
args: ["--enable", "var-naming"]
对于生产环境,建议组合使用以下钩子:
repos:
- repo: https://github.com/pre-commit/mirrors-go-fmt
rev: v1.20.4
hooks:
- id: go-fmt
- repo: https://github.com/dnephin/pre-commit-golang
rev: v0.5.0
hooks:
- id: go-mod-tidy
- id: go-unit-tests
- id: go-build
执行效果:
$ git commit -m "test"
revive................................................Failed
- hook id: revive
- exit code: 1
main.go:10:2: var-naming: 驼峰命名
这些配置会强制检查变量命名,拒绝蛇形命名提交。

