Golang linter 问题“上下文加载失败:没有要分析的 go 文件”

Mic*_*ihs 19 lint go

我们正在使用

  • golangci-lint版本1.40.1连同
  • golang版本1.16.4

在我们的项目中用于检查 Golang 代码。

到目前为止,我们所做的是运行这个 bash 脚本(从我们存储库的根目录):

if ! [ -x "$(command -v golangci-lint)" ]; then
    echo "Fetching linter..."
    go install github.com/golangci/golangci-lint/cmd/golangci-lint
    go mod tidy
fi

golangci-lint run --build-tags="unit contract container"
Run Code Online (Sandbox Code Playgroud)

随着 Golang 和 的最近更新golangci-lint,我们突然遇到以下错误消息:

ERRO Running error: context loading failed: no go files to analyze 
Run Code Online (Sandbox Code Playgroud)

GitHub 上有一篇关于这个问题的长篇文章,但唯一有用的建议是关闭GO111MODULEenv 变量。当我运行 linter 并GO111MODULE关闭时,就像

ERRO Running error: context loading failed: no go files to analyze 
Run Code Online (Sandbox Code Playgroud)

上面的错误消息消失了,但我收到了很多错误的 linting 错误,例如:

api/router.go:152:5: undeclared name: `PermissionUpdatePackage` (typecheck)
                                PermissionUpdatePackage,
                                ^
Run Code Online (Sandbox Code Playgroud)

我的围棋环境是这样的:

GO111MODULE=on
GOPATH=/Users/USER/workspace/go
GOROOT=/usr/local/opt/go/libexec
GOPRIVATE=*.CUSTOMER.com
GOSS_PATH=/usr/local/bin/goss
Run Code Online (Sandbox Code Playgroud)

go get...我尝试通过以及go install ...最后安装 linter,brew install golangci-lint这似乎是遵循本文档的推荐方法。

Mic*_*ihs 8

在项目的根目录中运行go get ./...最终解决了问题。在这期间,我们运行了以下命令,这些命令可能清除了一些可能也会引起问题的(模块?)缓存:

golangci-lint cache clean && go clean -modcache -cache -i
golangci-lint run -v --timeout=5s
Run Code Online (Sandbox Code Playgroud)

错误信息

ERRO Running error: context loading failed: failed to load packages: timed out to load packages: context deadline exceeded 
Run Code Online (Sandbox Code Playgroud)

在后一个命令中,我们看到了这篇 GitHub 帖子,它让我尝试了一下go get ./...

为了安装 linter(具有指定版本),我们最终使用了以下脚本:

ERRO Running error: context loading failed: failed to load packages: timed out to load packages: context deadline exceeded 
Run Code Online (Sandbox Code Playgroud)