文件未使用 `-s` 进行 `gofmt` 编辑:为什么会发生这种情况以及如何解决?
File is not `gofmt`-ed with `-s`: why is this happening and how to resolve it?
每次我们在 our repository.
上打开或更新 Pull Request 时,我们都会使用 运行 通过 Github Actions 工作流的 linter(针对 Golang)
最近开始return以下error:
File is not `gofmt`-ed with `-s` (gofmt)
在 this other PR 中对文件 pkg/api/api/go
发生的事情之后。
(编辑:添加 link 以评估并最终重现错误)
证据:
我想了解这个错误的根源是什么,以及如何解决?
错误来源
当文件格式不符合 Go 规则.
时,似乎会返回此错误
例如:如果您不小心使用了制表符缩进而不是空格。
编辑:blackgreen 的回答 给出了关于错误来源的更准确的细节
如何解决
您可以使用以下 Go 命令:
gofmt -s -w <path_to_file>.go
...然后提交代码。
请注意,在我的情况下:gofmt -w pkg/api/api.go
足以解决问题(没有 -s
标志,我觉得这很奇怪,因为错误特别要求 -s
).
gofmt
中的 -s
标志与格式无关。关于simplifying代码:
Try to simplify code (after applying the rewrite rule, if any).
您看到的警告来自 linter golangci-lint
. Since you claim to have fixed the error by running gofmt -w
, the presence of the hint "with -s
" may be due to this bug: https://github.com/golangci/golangci-lint/issues/513。
链接的问题已于 2019 年修复并与 v1.17.0
一起发布。您可能想检查您的管道是否使用旧版本。
假设您的文件 pkg/api/api.go
只是因为未格式化而触发了警告,gofmt -w
解决了这个问题,因为 -w
覆盖了文件:
If a file's formatting is different from gofmt's, overwrite it with gofmt's version.
每次我们在 our repository.
上打开或更新 Pull Request 时,我们都会使用 运行 通过 Github Actions 工作流的 linter(针对 Golang)最近开始return以下error:
File is not `gofmt`-ed with `-s` (gofmt)
在 this other PR 中对文件 pkg/api/api/go
发生的事情之后。
(编辑:添加 link 以评估并最终重现错误)
证据:
我想了解这个错误的根源是什么,以及如何解决?
错误来源
当文件格式不符合 Go 规则.
时,似乎会返回此错误例如:如果您不小心使用了制表符缩进而不是空格。
编辑:blackgreen 的回答 给出了关于错误来源的更准确的细节
如何解决
您可以使用以下 Go 命令:
gofmt -s -w <path_to_file>.go
...然后提交代码。
请注意,在我的情况下:gofmt -w pkg/api/api.go
足以解决问题(没有 -s
标志,我觉得这很奇怪,因为错误特别要求 -s
).
gofmt
中的 -s
标志与格式无关。关于simplifying代码:
Try to simplify code (after applying the rewrite rule, if any).
您看到的警告来自 linter golangci-lint
. Since you claim to have fixed the error by running gofmt -w
, the presence of the hint "with -s
" may be due to this bug: https://github.com/golangci/golangci-lint/issues/513。
链接的问题已于 2019 年修复并与 v1.17.0
一起发布。您可能想检查您的管道是否使用旧版本。
假设您的文件 pkg/api/api.go
只是因为未格式化而触发了警告,gofmt -w
解决了这个问题,因为 -w
覆盖了文件:
If a file's formatting is different from gofmt's, overwrite it with gofmt's version.