文件未使用“-s”进行“gofmt”编辑:为什么会发生这种情况以及如何解决?

Gui*_*urd 12 go gofmt linter github-actions

每次我们在存储库上打开或更新拉取请求时,我们都会使用 linter(适用于 Golang)来运行 Github Actions 工作流程。

它最近开始返回以下错误

File is not `gofmt`-ed with `-s` (gofmt)

在该文件的其他 PR中发生的事情之后pkg/api/api/go
(编辑:添加链接以评估并最终重现错误)

证据:

原始提交

短绒输出

我想了解这个错误的根源是什么,以及如何解决它?

Gui*_*urd 28

错误来源

当文件格式不符合 Go 规则时,似乎会返回此错误。

例如:如果您不小心使用了制表符缩进而不是空格。

编辑:blackgreen的答案提供了有关错误来源的更准确的详细信息


如何解决

您可以使用以下 Go 命令:

gofmt -s -w <path_to_file>.go

...然后提交代码。

请注意,就我而言:gofmt -w pkg/api/api.go足以解决问题(没有-s标志,我发现这很奇怪,因为错误专门要求了-s)。

来源 1 +来源 2


bla*_*een 8

-s中的标志与gofmt格式无关。这是为了简化代码:

尝试简化代码(在应用重写规则之后,如果有的话)。

您看到的警告来自 linter golangci-lint。由于您声称已通过运行修复了错误gofmt -w,因此提示“with -s”的存在可能是由于此错误所致: https: //github.com/golangci/golangci-lint/issues/513

链接的问题已于 2019 年修复并随v1.17.0. 您可能想检查您的管道是否使用旧版本。

假设您的文件pkg/api/api.go只是因为未格式化而触发警告,gofmt -w则解决问题,因为-w覆盖文件:

如果文件的格式与gofmt 的格式不同,请用gofmt 的版本覆盖它。