文件不是带有“-s”的“gofmt”:为什么会发生这种情况以及如何解决它?

我们使用一个 linter(对于 Golang),每次我们在存储库上打开或更新拉取请求时,它都会通过 Github 操作工作流运行。

它最近开始返回以下错误

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

在此另一个PR中发生的事情之后,文件。
(编辑:添加链接以评估并最终重现错误)pkg/api/api/go

证据:

original commit

linter output

我想了解此错误的来源是什么,以及如何解决它?


当年话下
浏览 205回答 2
2回答

holdtom

错误的来源当文件未根据Go规则正确格式化时,似乎可以返回此错误。例如:如果您不小心使用了制表符缩进而不是空格。编辑:黑绿的答案提供了有关错误来源的更准确的详细信息如何解决您可以使用以下 Go 命令:gofmt -s -w <path_to_file>.go...,然后提交代码。请注意,在我的情况下:gofmt -w pkg/api/api.go足以解决问题(没有-s标志,我觉得这很奇怪,因为错误特别要求-s)。源 1&nbsp;+&nbsp;源 2

有只小跳蛙

中的标志与格式无关。这是关于简化代码:-sgofmt尝试简化代码(在应用重写规则(如果有)之后)。您看到的警告来自棉绒绒。由于您声称已通过运行 修复了错误,因此提示“with ”的存在可能是由于以下错误:https://github.com/golangci/golangci-lint/issues/513。gofmt -w-s链接的问题已于 2019 年修复,随&nbsp;v1.17.0 发布。您可能需要检查管道是否正在使用旧版本。假设您的文件仅仅因为未格式化而触发了警告,则解决了由于覆盖文件而导致的问题:pkg/api/api.gogofmt -w-w如果文件的格式与 gofmt 的格式不同,请使用 gofmt 的版本覆盖它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go