[英]getting error when running pre-commit hook for golang repo [named files must be .go files: ./...]
這是我的.pre-commit-config.yaml文件的內容,
repos:
- repo: local
hooks:
- id: static-checks-pramod
name: Static Analysis
description: This hook does static analysis
entry: staticcheck -tests=false ./...
language: golang
types: [text]
在本地為所有文件在本地運行掛鈎時,我遇到了以下錯誤,
pramodchoudhari@Pramods-MacBook-Pro-2 my-repo % pre-commit run --all-files
Static Analysis..........................................................Failed
- hook id: static-checks-pramod
- exit code: 1
-: named files must be .go files: ./...
-: named files must be .go files: ./...
-: named files must be .go files: ./...
-: named files must be .go files: ./...
-: named files must be .go files: ./...
-: named files must be .go files: ./...
-: named files must be .go files: ./...
-: named files must be .go files: ./...
但是如果我在本地運行 staticcheck 命令,它可以正常工作,如下所示,
pramodchoudhari@Pramods-MacBook-Pro-2 my-repo % staticcheck -tests=false ./...
pramodchoudhari@Pramods-MacBook-Pro-2 my-repo %
我不確定我在預提交配置中做錯了什么。
PS:我正在使用這個linter 對我的 repo 進行靜態分析
在您的.pre-commit-config.yaml
,您的types
設置為text
,這會將所有類似文件的文本傳遞給staticcheck
,但它只需要go-files
。
您可能需要types: [go]
代替。
您的配置很接近,但有一些可以改進的地方。 現在您正在安裝 noop golang
存儲庫,然后針對./...
(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]
# ...
或者,如果你總是想運行所有東西(我不建議這樣做,它會一直讓它變慢!)你可以改為關閉 pre-commit 對文件的處理
# ...
entry: staticcheck -tests=false ./...
pass_filenames: false
always_run: true
# ...
免責聲明:我寫了預提交
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.