0

我在我的项目上本地运行以下命令

gometalinter --config=gometalinter.json ./...

一开始我遇到了一些错误,我都修复了!

现在我在Travis脚本中运行相同的命令 exaclty 我得到了供应商错误

vendor/github.com/spf13/viper/flags.go:3:8:warning: error return value not checked (could not import github.com/spf13/pflag (go/build: importGo github.com/spf13/pflag: exit status 1) (errcheck)
vendor/github.com/spf13/viper/viper.go:42:7:warning: error return value not checked (could not import github.com/pelletier/go-toml (go/build: importGo github.com/pelletier/go-toml: exit status 1) (errcheck)

这是gometalinter.json用于配置

{
  "vendor": true,
  "Deadline": "2m",
  "Sort": [
    "linter",
    "severity"
  ],
  "DisableAll": true,
  "Enable": [
    "gotypex",
    "vetshadow",
    "errcheck",
    "gocyclo",
    "vet",
    "golint",
    "vetshadow",
    "ineffassign",


  ],
  "Cyclo": 10,
  "LineLength": 120
}

我不明白为什么在本地我没有收到此错误(我有供应商回购)以及为什么它要求供应商错误?可能是什么原因 ?

4

2 回答 2

0

gometalinter在您的路径中运行二进制文件以进行检查。我遇到的问题是我的 CI 会有一组二进制版本,而我的本地开发环境会有不同的版本。

尝试更新本地计算机上所有必需的二进制文件。

于 2018-11-18T18:20:30.730 回答
0

尝试--vendor标记并检查gometalinter所有使用的 linter 的版本。

摘自gometalinter 文档

如何使 gometalinter 与 Go 1.5 供应商一起使用?

gometalinter 有一个 --vendor 标志,它只设置 GO15VENDOREXPERIMENT=1,但是底层工具必须支持它。确保所有的 linter 都是最新的并使用 Go 1.5 (gometalinter --install --force) 构建,然后运行 ​​gometalinter --vendor .. 应该是这样。

于 2018-11-18T18:22:26.117 回答