2 回答
TA贡献1966条经验 获得超4个赞
在您.pre-commit-config.yaml
的types
设置中text
,它会将所有文本(如文件)传递给staticcheck
,但它只期望go-files
。
你可能想要types: [go]
。
TA贡献1877条经验 获得超6个赞
您的配置很接近,但有一些可以改进的地方。现在你正在安装一个 noopgolang存储库,然后同时运行./...(golang 中的所有内容)和text存储库中的所有文件(可能不是你想要的!)
首先让我们解决 noop 存储库——language: golang指示pre-commit它应该如何安装挂钩本身——在这种情况下你没有告诉它安装任何东西(repo: local挂钩通常additional_dependencies用来安装东西)
假设您想要预提交来管理安装(毕竟这是预提交要点的一部分——它管理您的安装,所以您不需要指导您的贡献者如何安装所有东西)——对于你会告诉 pre-commit 安装这样的东西:
# ...
language: golang
additional_dependencies: [honnef.co/go/tools/cmd/staticcheck@2022.1.2]
# ...
现在让我们来处理正在传递的文件——上面的@jkittner 正中要害,但我会详细说明一下。
pre-commit的参数模式:
您的挂钩应该期望收到该args值,然后是暂存文件列表。
然后从过滤文件类型:
text- 文件是否看起来像文本文件
将它们放在一起,您当前的配置就像运行一样staticcheck -tests=false ./... $(git ls-files)(假设您只有文本文件,我所知道的过滤掉二进制文件的 shell 方法并不是很好)
您可能想过滤掉 go 文件,并且您可能不想对每个文件进行双重检查——试试这个:
# ...
entry: staticcheck -tests=false
types: [go]
# ...
或者,如果你总是想运行所有的东西(我不推荐,它会一直变慢!)你可以关闭预提交的文件处理
# ...
entry: staticcheck -tests=false ./...
pass_filenames: false
always_run: true
# ...
免责声明:我写了预提交
- 2 回答
- 0 关注
- 324 浏览
添加回答
举报