【问题标题】:goimports needs to ignore vendor packagegoimports 需要忽略供应商包
【发布时间】:2017-11-28 21:07:24
【问题描述】:

我正在尝试在我的项目中实现dep。这一切都很好,但它也添加了一个供应商目录。我现在需要更新我的工具以忽略此目录,否则我的供应商软件包将被修改,或者我收到错误的警告。我目前正在使用以下工具:

  • goimports -w
  • 去看兽医
  • 去皮棉

这些工具也用于 CI。我确实想继续使用 goimports 进行自动格式化,但我愿意开始使用 gometalinter。我并不是真的在寻找使用 grep 的解决方案并找到魔法。

如何让这些工具忽略vendor/

【问题讨论】:

    标签: go continuous-integration go-toolchain


    【解决方案1】:

    gometalinter 有一个“--vendor”标志来忽略供应商文件夹。该标志将所需的参数传递给底层工具以忽略该文件夹。

    所以一种解决方案是只使用 govet、golint 和 goimports 和 gometalinter

    gometalinter --disable-all --enable=vet --enable=golint --enable=goimports --vendor ./...
    

    另一种解决方案可能是(复制自gist):

    goimports -d $(find . -type f -name '*.go' -not -path "./vendor/*")
    

    恕我直言,我更喜欢第一个解决方案。这样您就可以根据需要轻松添加其他 linter。

    【讨论】:

    • 我结合使用了您的两种解决方案。这允许我为开发人员自动格式化,然后在 CI 中检查这个和其他内容。谢谢!
    【解决方案2】:

    为了排除 $GOPATH 中的目录不被扫描 Go 文件,goimports 尊重位于 $GOPATH/src/.goimportsignore 的配置文件,其中可能包含空行、注释行(以 '#' 开头)或命名为扫描时要忽略的相对于配置文件的目录。不允许使用通配符或正则表达式模式。使用“-v”详细标志来验证它是否正常工作,并查看 goimports 正在做什么。

    https://godoc.org/golang.org/x/tools/cmd/goimports

    因此您可以将供应商目录添加到$GOPATH/src/.goimportsignore 文件,例如:

    github.com/foo/bar/vendor
    

    【讨论】:

    • 不知何故,这个解决方案忽略了供应商包。我怀疑这是因为在主要源代码中使用了供应商代码。
    猜你喜欢
    • 2017-01-11
    • 1970-01-01
    • 2017-10-02
    • 2016-06-28
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 2013-09-20
    相关资源
    最近更新 更多