【问题标题】:File is not `gofmt`-ed with `-s`: why is this happening and how to resolve it? [closed]文件不是带有 `-s` 的`gofmt`-ed:为什么会发生这种情况以及如何解决它? [关闭]
【发布时间】:2021-11-02 01:07:16
【问题描述】:

每次我们在our repository 上打开或更新拉取请求时,我们都会使用运行在 Github Actions 工作流程中的 linter(用于 Golang)。

最近开始返回以下error

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

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

证据:

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

【问题讨论】:

    标签: go github-actions linter gofmt


    【解决方案1】:

    错误来源

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

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

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


    如何解决

    您可以使用以下 Go 命令:

    gofmt -s -w <path_to_file>.go

    ...然后提交代码。

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

    Source 1 + Source 2

    【讨论】:

    • 如果你找到了证明问题的方法,你应该把它添加到问题中;这可能会让它重新打开。
    【解决方案2】:

    gofmt 中的 -s 标志与格式无关。关于simplifying的代码:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 2021-10-22
      • 2021-04-12
      • 2021-01-24
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      • 2021-04-30
      相关资源
      最近更新 更多