登录
首页 >  Golang >  Go问答

未在指定路径上使用“goimports”对文件进行编辑

来源:stackoverflow

时间:2024-03-11 20:42:26 153浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《未在指定路径上使用“goimports”对文件进行编辑》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我在 golang 项目中做了一些更改,然后运行了 make test,它负责 linting、格式化和单元测试。但是当它运行 linter.sh 时,它会抛出以下错误

pkg/skaffold/kubernetes/wait.go:23: File is not `goimports`-ed with -local github.com/GoogleContainerTools/skaffold (goimports)
        "github.com/GoogleContainerTools/skaffold/pkg/skaffold/kubectl"

这是代码的链接。


解决方案


仅执行正常的 sort 导入 可能不起作用。我认为您启用了 goimports linting 并启用了 local-prefixes,这就是为什么错误 file is not 'goimports'-ed with -local ...

通常,goimports 会对导入的库进行排序,以便标准 pkg 和其他库位于单独的组中。但是,当您启用本地前缀时,linting 需要标准 pkg、第 3 方 pkg 以及具有指定本地前缀的 pkg(在您的情况下为 github.com/googlecontainertools/skaffold,又名您自己的项目 pkg),这 3 种类型单独的组。 (参考:https://github.com/golangci/golangci-lint/issues/209

import (
  // stdlib

  // third-party

  // other packages of that project
)

这些不必分为 3 组,您可以有 3 组以上。只要确保以上 3 种(或 2 种)不在同一类型中即可。

修复

当您运行 goimports 时,请确保使用 -local 标志运行它。我认为你也可以配置你的 ide 来做到这一点。在你的情况下,它应该看起来像这样:

goimports -local "github.com/GoogleContainerTools/skaffold" -w .

-w 标志,以便将更改写回

. (点) 适用于所有文件,也可以仅指定一个文件

我遇到了同样的错误。 lint 是 golangci-lint

我对导入进行了排序(使用 goland ),整理了依赖项( go mod tidy )并删除了空格( gofmt -w app.go )。

除了以下内容之外,没有任何作用:

golangci-lint 运行 --fix

以上就是《未在指定路径上使用“goimports”对文件进行编辑》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>