繁体   English   中英

文件不是 `gofmt`-ed with `-s`:为什么会发生这种情况以及如何解决它?

[英]File is not `gofmt`-ed with `-s`: why is this happening and how to resolve it?

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

它最近开始返回以下 错误

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

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

证据:

原始提交

短绒输出

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

错误来源

文件没有按照 Go 规则正确格式化时,似乎可以返回此错误。

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

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


如何解决

您可以使用以下 Go 命令:

gofmt -s -w <path_to_file>.go

...然后提交代码。

请注意,在我的情况下: gofmt -w pkg/api/api.go足以解决问题(没有-s标志,我觉得奇怪,因为错误专门要求-s )。

来源 1 +来源 2

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

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

您看到的警告来自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 的版本覆盖它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM