Golangci-lint: Can't run linter goanalysis_metalinter 1.24.x: failed prerequisites

Created on 16 Mar 2020  Â·  18Comments  Â·  Source: golangci/golangci-lint

I still have the same issue (but you guys closed it, which you shouldn't, because it is not fixed)

Using the new 1.24.0 with Go 1.14

Config file

linters-settings:
  depguard:
    list-type: blacklist
    packages:
      # logging is allowed only by logutils.Log, logrus
      # is allowed to use only in logutils package
      - github.com/sirupsen/logrus
  dogsled:
    # checks assignments with too many blank identifiers; default is 2
    max-blank-identifiers: 2
  dupl:
    threshold: 100
  funlen:
    lines: 100
    statements: 50
  gocognit:
    # minimal code complexity to report, 30 by default (but we recommend 10-20)
    min-complexity: 10
  goconst:
    min-len: 2
    min-occurrences: 5
  gocritic:
    enabled-tags:
      - diagnostic
      - experimental
      - opinionated
      - performance
      - style
    disabled-checks:
      - wrapperFunc
      - dupImport # https://github.com/go-critic/go-critic/issues/845
      - ifElseChain
      - octalLiteral
      - commentedOutCode
      - commentFormatting
  gocyclo:
    min-complexity: 12
  godox:
    # report any comments starting with keywords, this is useful for TODO or FIXME comments that
    # might be left in the code accidentally and should be resolved before merging
    keywords: # default keywords are TODO, BUG, and FIXME, these can be overwritten by this setting
      - NOTE
      - OPTIMIZE # marks code that should be optimized before merging
      - HACK # marks hack-arounds that should be removed before merging
  gofmt:
    # simplify code: gofmt with `-s` option, true by default
    simplify: true
  goimports:
    # put imports beginning with prefix after 3rd-party packages;
    # it's a comma-separated list of prefixes
    local-prefixes: github.com/org/project
  golint:
    min-confidence: 0.8
  govet:
    # report about shadowed variables
    check-shadowing: true
    settings:
      printf:
        funcs:
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Infof
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Warnf
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Errorf
          - (github.com/golangci/golangci-lint/pkg/logutils.Log).Fatalf
  lll:
    line-length: 120
  maligned:
    suggest-new: true
  misspell:
    locale: US, NL
  nakedret:
    # make an issue if func has more lines of code than this setting and it has naked returns; default is 30
    max-func-lines: 30
  prealloc:
    # XXX: we don't recommend using this linter before doing performance profiling.
    # For most programs usage of prealloc will be a premature optimization.

    # Report preallocation suggestions only on simple loops that have no returns/breaks/continues/gotos in them.
    # True by default.
    simple: true
    range-loops: true # Report preallocation suggestions on range loops, true by default
    for-loops: false # Report preallocation suggestions on for loops, false by default
  whitespace:
    auto-fix: true
  wsl:
    # If true append is only allowed to be cuddled if appending value is
    # matching variables, fields or types on line above. Default is true.
    strict-append: true
    # Allow calls and assignments to be cuddled as long as the lines have any
    # matching variables, fields or types. Default is true.
    allow-assign-and-call: true
    # Allow multiline assignments to be cuddled. Default is true.
    allow-multiline-assign: true
    # Allow case blocks to end with a whitespace.
    allow-case-traling-whitespace: true
    # Allow declarations (var) to be cuddled.
    allow-cuddle-declarations: false

linters:
  disable-all: true
  enable:
    - bodyclose
    - deadcode
    - depguard
    - dogsled
    - dupl
    - errcheck
    - funlen
    - gochecknoglobals
    - gochecknoinits
    - gocognit
    - goconst
    - gocritic
    - gocyclo
    - godox
    - gofmt
    - goimports
    - golint
    - gosec
    - gosimple
    - govet
    - ineffassign
    - interfacer
    - lll
    - maligned
    - misspell
    - nakedret
    - prealloc
    - scopelint
    - staticcheck
    - structcheck
    - stylecheck
    - typecheck
    - unconvert
    - unparam
    #- unused
    - varcheck
    - whitespace
  disable:
    #- goanalysis_metalinter
    #- maligned
    #- prealloc
    #- gochecknoinits
    #- goimports
    #- gofmt
  fast: false

run:
  skip-dirs:
    - test/testdata_etc
  build-tags:
    - codeanalysis

# output configuration options
output:
  # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number"
  format: colored-line-number

  # print lines of code with issue, default is true
  print-issued-lines: true

  # print linter name in the end of issue text, default is true
  print-linter-name: true

issues:
  exclude-rules:
    - text: "G107:"
      linters:
        - gosec
    - text: "weak cryptographic primitive"
      linters:
        - gosec
    #- text: "unnecessary leading newline"
    #  linters:
    #    - whitespace
# golangci.com configuration
# https://github.com/golangci/golangci/wiki/Configuration
#service:
#  golangci-lint-version: 1.15.x # use the fixed version to not introduce new linters unexpectedly
#  prepare:
#    - echo "here I can run custom commands, but no preparation needed for this repo"

Go environment

go version go1.14 darwin/amd64
GO111MODULE=""
GOARCH="amd64"
GOBIN="/Users/marcelloh/go/bin"
GOCACHE="/Users/marcelloh/Library/Caches/go-build"
GOENV="/Users/marcelloh/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GONOPROXY="bitbucket.org/aanzeeonline"
GONOSUMDB="bitbucket.org/aanzeeonline"
GOOS="darwin"
GOPATH="/Users/marcelloh/go"
GOPRIVATE="bitbucket.org/aanzeeonline"
GOPROXY="direct"
GOROOT="/usr/local/go"
GOSUMDB="off"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/marcelloh/data/go-business/impact/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/sw/g1d8300x5mjgfkr7c6td2pq00000gn/T/go-build853007795=/tmp/go-build -gno-record-gcc-switches -fno-common"

Verbose output of running

INFO [config_reader] Config search paths: [./ /Users/marcelloh/data/go-business/impact /Users/marcelloh/data/go-business /Users/marcelloh/data /Users/marcelloh /Users /] 
INFO [config_reader] Used config file .golangci.yml 
INFO [lintersdb] Active 36 linters: [bodyclose deadcode depguard dogsled dupl errcheck funlen gochecknoglobals gochecknoinits gocognit goconst gocritic gocyclo godox gofmt goimports golint gosec gosimple govet ineffassign interfacer lll maligned misspell nakedret prealloc scopelint staticcheck structcheck stylecheck typecheck unconvert unparam varcheck whitespace] 
INFO [lintersdb] Active 36 linters: [bodyclose deadcode depguard dogsled dupl errcheck funlen gochecknoglobals gochecknoinits gocognit goconst gocritic gocyclo godox gofmt goimports golint gosec gosimple govet ineffassign interfacer lll maligned misspell nakedret prealloc scopelint staticcheck structcheck stylecheck typecheck unconvert unparam varcheck whitespace] 
INFO [loader] Go packages loading at mode 575 (types_sizes|name|deps|exports_file|files|imports|compiled_files) took 240.699611ms 
INFO [runner/filename_unadjuster] Pre-built 0 adjustments in 2.319414ms 
INFO [runner/goanalysis_metalinter/goanalysis] analyzers took 760.762635ms with top 10 stages: buildir: 156.838969ms, buildssa: 127.551009ms, gocritic: 48.135795ms, dupl: 36.867479ms, interfacer: 35.853932ms, unparam: 34.103223ms, goimports: 27.338886ms, unconvert: 19.332466ms, depguard: 18.441935ms, gosec: 16.821912ms 
WARN [runner] Can't run linter goanalysis_metalinter: S1002: failed prerequisites: [([email protected]/aanzeeonline/impact/compare, [email protected]/aanzeeonline/impact/compare): analysis skipped: errors in package: [/Users/marcelloh/data/go-business/impact/compare/file.go:37:19: undeclared name: Options /Users/marcelloh/data/go-business/impact/compare/file.go:49:15: undeclared name: Exec]] 
INFO [runner] processing took 4.153µs with stages: max_same_issues: 2.073µs, nolint: 334ns, skip_dirs: 254ns, max_from_linter: 164ns, cgo: 139ns, autogenerated_exclude: 122ns, filename_unadjuster: 118ns, path_shortener: 118ns, skip_files: 118ns, exclude-rules: 115ns, diff: 114ns, path_prettifier: 111ns, exclude: 108ns, identifier_marker: 108ns, source_code: 53ns, uniq_by_line: 52ns, max_per_file_from_linter: 52ns 
INFO [runner] linters took 309.345133ms with stages: goanalysis_metalinter: 309.257375ms 
ERRO Running error: S1002: failed prerequisites: [([email protected]/aanzeeonline/impact/compare, [email protected]/aanzeeonline/impact/compare): analysis skipped: errors in package: [/Users/marcelloh/data/go-business/impact/compare/file.go:37:19: undeclared name: Options /Users/marcelloh/data/go-business/impact/compare/file.go:49:15: undeclared name: Exec]] 
INFO Memory: 7 samples, avg is 109.5MB, max is 138.6MB 
INFO Execution took 562.48163ms  

It's always on the same part. What is interesting about it, that it complains about a struct and a function not being present. They are present within the package, only not in that file.
The software compiles, so there's nothing wrong, only the linter sees that differently. :-(

bug cursed

Most helpful comment

I fixed the problem with:

GO111MODULE=on
CGO_ENABLED=0

All 18 comments

linter began failing suddenly a short while ago, just upgraded (brew) from 1.23.2 -> 1.23.8, working again. considering description above, i suspect it was re-broken :P

this issue is about the new 1.24.x versions

Having the same issue with a slight random effect:

We do have a repo containing several /cmd/... tools which we are testing in a shell-loop using golangci-lint run --modules-download-mode=vendor --timeout=5m.

  • When executed on a local system (Archlinux, Go 1.14, golangci-lint@master) it fails once and afterwards all exeecutions succeeds
  • When executed in a Docker container (Alpine, Go 1.14, [email protected], @master, @1.23.8, @1.23.2) it fails randomly in different executions

That "random" has following effect:

  • Execution 1: tool1 fails, tool2 succeeds, tool3 fails
  • Execution 2: tool1 fails, tool2 succeeds, tool3 succeeds
  • Execution 3: tool1 succeeds, tool2 fails, tool3 succeeds

Between those executions no code chance was made, all executions were made in a fresh container from the same image…

golangci-lint has version 1.24.0 built from 6fd4383 on 2020-03-15T11:30:52Z

Running error: SA4016: failed prerequisites: [([email protected]/my/project/cmd, [email protected]/my/project/cmd): analysis skipped: errors in package: [/Users/User/go/src/github.com/my/project/cmd/generate.go:36:39: cannot use es.NewClient(conf.R.OverviewElasticsearch) (value of type *elastic.Client) as *elastic.Client value in argument to repo.NewOverviewRepo /Users/adam/go/src/github.com/my/project/cmd/generate.go:37:31: cannot use es.NewClient(conf.R.RoboElasticsearch) (value of type *elastic.Client) as *elastic.Client value in argument to repo.NewRoboRepo]]


Config

  run:
  concurrency: 1
  skip-dirs:
    - vendor
  #    - autogenerated_by_my_lib

  skip-files:
  #    - ".*\\.my\\.go$"
  #    - lib/bad.go
  timeout: 5m
linters-settings:
  funlen:
    lines: 200
    statements: 40
  golint:
    # minimal confidence for issues, default is 0.8
    min-confidence: 0.8
  gocyclo:
    min-complexity: 30
  gocritic:
    enabled-checks:
      - appendAssign #Bugs
      - argOrder
      - caseOrder
      - dupArg
      - dupBranchBody
      - dupCase
      - dupSubExpr
      - flagDeref
linters:
  enable:
    - bodyclose
    - golint
    - unconvert
    - gocyclo
    - gofmt
    - unparam
    - goimports
    - dogsled
    - nakedret
    - scopelint
    - funlen
    - gocritic

Also seeing this same issue and it seems very erratic/intermittent.

golangci-lint has version 1.24.0 built from 6fd4383 on 2020-03-15T11:38:02Z
buildkite@f8f3c3fcd96f:/buildkite/builds/authelia/authelia$ golangci-lint cache clean
buildkite@f8f3c3fcd96f:/buildkite/builds/authelia/authelia$ golangci-lint run -v
INFO [config_reader] Config search paths: [./ /buildkite/builds/authelia/authelia /buildkite/builds/authelia /buildkite/builds /buildkite /]
INFO [config_reader] Used config file .golangci.yml
INFO [lintersdb] Active 19 linters: [deadcode errcheck gocyclo goimports golint gosimple govet ineffassign interfacer maligned misspell prealloc staticcheck structcheck typecheck unparam unused varcheck whitespace]
INFO [lintersdb] Active 19 linters: [deadcode errcheck gocyclo goimports golint gosimple govet ineffassign interfacer maligned misspell prealloc staticcheck structcheck typecheck unparam unused varcheck whitespace]
INFO [loader] Go packages loading at mode 575 (compiled_files|files|name|types_sizes|deps|exports_file|imports) took 2.472966343s
INFO [runner/filename_unadjuster] Pre-built 0 adjustments in 16.695426ms
INFO [runner/unused/goanalysis] analyzers took 16.469084845s with top 10 stages: buildir: 16.152201785s, U1000: 316.88306ms
INFO [runner/goanalysis_metalinter/goanalysis] analyzers took 27.581640143s with top 10 stages: buildir: 19.458378773s, buildssa: 1.948842144s, inspect: 825.846284ms, fact_deprecated: 603.72258ms, ctrlflow: 538.225424ms, printf: 516.553304ms, goimports: 500.122194ms, interfacer: 472.460409ms, fact_purity: 454.141741ms, unparam: 367.787968ms
WARN [runner] Can't run linter goanalysis_metalinter: SA4000: failed prerequisites: [([email protected]/authelia/authelia/internal/middlewares_test [github.com/authelia/authelia/internal/middlewares.test], [email protected]/authelia/authelia/internal/middlewares_test [github.com/authelia/authelia/internal/middlewares.test], [email protected]/authelia/authelia/internal/middlewares_test [github.com/authelia/authelia/internal/middlewares.test]): analysis skipped: errors in package: [/buildkite/builds/authelia/authelia/internal/middlewares/authelia_context_test.go:24:20: cannot use userProvider (variable of type *mocks.MockUserProvider) as authentication.UserProvider value in struct literal: wrong type for method GetDetails /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:44:60: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(newArgs(retriever)) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:61:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:84:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:102:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:120:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:143:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:190:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:198:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:211:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:224:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:240:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:255:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:272:53: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(args, next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:291:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:310:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next)]]
INFO [runner] Issues before processing: 18, after processing: 17
INFO [runner] Processors filtering stat (out/in): skip_files: 17/18, path_shortener: 17/17, max_per_file_from_linter: 17/17, cgo: 18/18, skip_dirs: 17/17, exclude: 17/17, exclude-rules: 17/17, uniq_by_line: 17/17, diff: 17/17, autogenerated_exclude: 17/17, identifier_marker: 17/17, nolint: 17/17, max_from_linter: 17/17, filename_unadjuster: 18/18, path_prettifier: 18/18, max_same_issues: 17/17, source_code: 17/17
INFO [runner] processing took 4.307274ms with stages: nolint: 3.095692ms, exclude: 411.448µs, path_prettifier: 310.953µs, identifier_marker: 162.222µs, autogenerated_exclude: 156.928µs, skip_dirs: 95.728µs, skip_files: 26.223µs, source_code: 14.248µs, uniq_by_line: 14.218µs, cgo: 7.449µs, path_shortener: 4.783µs, filename_unadjuster: 2.319µs, max_per_file_from_linter: 1.928µs, max_same_issues: 1.55µs, diff: 616ns, max_from_linter: 502ns, exclude-rules: 467ns
INFO [runner] linters took 7.363476047s with stages: unused: 4.560667792s, goanalysis_metalinter: 2.798395259s
ERRO Running error: SA4000: failed prerequisites: [([email protected]/authelia/authelia/internal/middlewares_test [github.com/authelia/authelia/internal/middlewares.test], [email protected]/authelia/authelia/internal/middlewares_test [github.com/authelia/authelia/internal/middlewares.test], [email protected]/authelia/authelia/internal/middlewares_test [github.com/authelia/authelia/internal/middlewares.test]): analysis skipped: errors in package: [/buildkite/builds/authelia/authelia/internal/middlewares/authelia_context_test.go:24:20: cannot use userProvider (variable of type *mocks.MockUserProvider) as authentication.UserProvider value in struct literal: wrong type for method GetDetails /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:44:60: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(newArgs(retriever)) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:61:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:84:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:102:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:120:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:143:46: cannot use mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationStart(args) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:190:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:198:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:211:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:224:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:240:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:255:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:272:53: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(args, next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:291:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next) /buildkite/builds/authelia/authelia/internal/middlewares/identity_verification_test.go:310:64: cannot use s.mock.Ctx (variable of type *middlewares.AutheliaCtx) as *middlewares.AutheliaCtx value in argument to middlewares.IdentityVerificationFinish(newFinishArgs(), next)]]
INFO Memory: 97 samples, avg is 1467.2MB, max is 3505.7MB
INFO Execution took 9.866739853s

You should be able to reproduce it with: https://github.com/authelia/authelia with the following configuration:

Config

run:
  timeout: 3m
  skip-files:
    - "migration_local.go$"
    - "migration_mongo.go$"

linters-settings:
  gocyclo:
    min-complexity: 15
  goimports:
    local-prefixes: github.com/authelia/authelia

linters:
  disable-all: false
  enable:
    - gocyclo
    - goimports
    - golint
    - interfacer
    - maligned
    - misspell
    - prealloc
    - unparam
    - whitespace

issues:
  max-issues-per-linter: 0
  max-same-issues: 0

I am also encountering this issue. What is weird is that I cannot reproduce it locally on my machine. The bug only triggers on my CI (Gitlab). Running Go 1.14 and golangci-lint 1.24.0 both locally and in the CI. Go code compiles successfully, and all unit tests succeed, so there are no compile errors present in the code. And like other people have commented, the "failed prerequisites" error isnt always consistent. It fails on different parts of the code for whatever reason.

https://github.com/golangci/golangci-lint/issues/827 is the original closed issue that OP referenced.

I encountered the same issue after updating golangci-lint 1.23.8->1.24.0 and Golang 1.14.1->1.14.2.
The issue also only happened in CI runs.

We are running multiple golangci-lint instances in docker containers in parallel.
The docker containers share the go-cache and the golangci-lint cache directory via a volume mount.

Removing the volume mount for the golangci-lint cache directory fixed the issue.
It seems to be a concurrency issue when multiple golangci-lint instances access the same golangci-lint cache directory.

It seems to be a concurrency issue when multiple golangci-lint instances access the same golangci-lint cache directory.

Cannot confirm. We're running builds within a Docker container without volume mounts and the first build always produces errors while a second (sequential) build in the same container does no longer produce those errors. There is no concurrency involved on our side when experiencing this.

For those who can't reproduce this issue locally: please try cleaning golangci cache before running.

$ golangci-lint cache clean

@ernado cleaning the cache does not help to reproduce the issue locally with version 1.24.0 for me

Please do golangci-lint cache clean again and upgrade to v1.25.0

@ernado I can not reproduce the error locally neither with 1.24.0 nor with 1.25.0,
cleaning the cache before running golangci-lint does not change the result

@fho the 1.25.0 should not contain this issue AFAIK

I fixed the problem with:

GO111MODULE=on
CGO_ENABLED=0

Closing this for now.

Please open new issue if problem will reappear, but ensure that you are installing golangci-lint either via binary or via go modules.

Thanks everyone.

Is this issue reoccurring in version 1.31.0 on Windows 10? It works on MacOS, but Windows still appears to be borked.

I'm running version 1.31.0 on MacOS with Go 1.15, having this issue

I was able to get around this issue on macOS Catalina (10.15.6)

My issue was the installation was taking a previously installed version and not the new home-brew install. I found something was fishy by checking the version

golangci-lint version
 # -> golangci-lint has version master built from ? on master

I uninstalled the brew version:

brew uninstall golangci/tap/golangci-lint

did a find on my root file system for any

sudo find / | grep golangci-lint

rm any golangci-lint binaries in your go paths

reinstalled golangci

brew upgrade golangci/tap/golangci-lint
brew install golangci/tap/golangci-lint

Verify Version

golangci-lint version
 # -> golangci-lint has version 1.31.0 built from 3d6d0e7 on 2020-09-07T15:14:41Z

Now I can run linter without any issues

Was this page helpful?
0 / 5 - 0 ratings

Related issues

anuaimi picture anuaimi  Â·  4Comments

KeepMasterBranch picture KeepMasterBranch  Â·  3Comments

moolibdensplk picture moolibdensplk  Â·  4Comments

simonpasquier picture simonpasquier  Â·  4Comments

ferhatelmas picture ferhatelmas  Â·  4Comments