-
| Welcome
 Description of the problemWe have a .golangci-lint.yml in the root of the repo. We haven't change golangci-lint version in 6 months and out of nowhere it's applying new rules. I updated the config in a new branch and the workflow still applies the same rules. Failing workflows can be seen here: https://github.com/gofiber/fiber/actions/workflows/linter.yml I created a new PR with updated config to ignore the issues and even though it works locally it fails on the CI while ignoring by config. Trying to fix issues in this PR: gofiber/fiber#3354 Version of golangci-lint1.64.7 Version of the GitHub Actionlatest Workflow filename: golangci-lint
on:
  push:
    branches:
      - master
      - main
    paths-ignore:
      - "**/*.md"
  pull_request:
    paths-ignore:
      - "**/*.md"
permissions:
  # Required: allow read access to the content for analysis.
  contents: read
  # Optional: allow read access to pull request. Use with `only-new-issues` option.
  pull-requests: read
  # Optional: Allow write access to checks to allow the action to annotate code in the PR.
  checks: write
jobs:
  golangci:
    name: lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          # NOTE: Keep this in sync with the version from go.mod
          go-version: "1.23.x"
          cache: false
      - name: golangci-lint
        uses: golangci/golangci-lint-action@v6
        with:
          # NOTE: Keep this in sync with the version from .golangci.yml
          version: v1.62.2
Golangci-lint configurationrun:
  timeout: 5m
  modules-download-mode: readonly
  allow-serial-runners: true
output:
  sort-results: true
  uniq-by-line: false
linters-settings:
  depguard:
    rules:
      all:
        list-mode: lax
        deny:
          - pkg: "flag"
            desc: '`flag` package is only allowed in main.go'
          - pkg: "log"
            desc: 'logging is provided by `pkg/log`'
          - pkg: "io/ioutil"
            desc: '`io/ioutil` package is deprecated, use the `io` and `os` package instead'
          # TODO: Prevent using these without a reason
          # - pkg: "reflect"
          #   desc: '`reflect` package is dangerous to use'
          # - pkg: "unsafe"
          #   desc: '`unsafe` package is dangerous to use'
  errcheck:
    check-type-assertions: true
    check-blank: true
    disable-default-exclusions: true
    exclude-functions:
      - '(*bytes.Buffer).Write' # always returns nil error
      - '(*github.com/valyala/bytebufferpool.ByteBuffer).Write' # always returns nil error
      - '(*github.com/valyala/bytebufferpool.ByteBuffer).WriteByte' # always returns nil error
      - '(*github.com/valyala/bytebufferpool.ByteBuffer).WriteString' # always returns nil error
  errchkjson:
    report-no-exported: true
  exhaustive:
    check-generated: true
    default-signifies-exhaustive: true
  forbidigo:
    forbid:
      - ^print(ln)?$
      - ^fmt\.Print(f|ln)?$
      - ^http\.Default(Client|ServeMux|Transport)$
      # TODO: Eventually enable these patterns
      # - ^panic$
      # - ^time\.Sleep$
    analyze-types: true
  gci:
    sections:
      - standard
      - prefix(github.com/gofiber/fiber)
      - default
      - blank
      - dot
      # - alias
    custom-order: true
  goconst:
    numbers: true
  gocritic:
    # TODO: Uncomment the following lines
    enabled-tags:
      - diagnostic
    #   - style
    #   - performance
    #   - experimental
    #   - opinionated
    settings:
      captLocal:
        paramsOnly: false
      elseif:
        skipBalanced: false
      underef:
        skipRecvDeref: false
      # NOTE: Set this option to false if other projects rely on this project's code
      # unnamedResult:
        # checkExported: false
  gofumpt:
    module-path: github.com/gofiber/fiber
    extra-rules: true
  gosec:
    excludes:
      - G104 # TODO: Enable this again. Mostly provided by errcheck
    config:
      global:
        # show-ignored: true # TODO: Enable this
        audit: true
  govet:
    enable-all: true
    disable:
      - shadow
  grouper:
    # const-require-grouping: true # TODO: Enable this
    import-require-single-import: true
    import-require-grouping: true
    # var-require-grouping: true # TODO: Conflicts with gofumpt
  loggercheck:
    require-string-key: true
    no-printf-like: true
  misspell:
    locale: US
  nolintlint:
    require-explanation: true
    require-specific: true
  nonamedreturns:
    report-error-in-defer: true
  perfsprint:
    err-error: true
  predeclared:
    q: true
  promlinter:
    strict: true
  # TODO: Enable this
  # reassign:
    # patterns:
      # - '.*'
  revive:
    enable-all-rules: true
    rules:
      # Provided by gomnd linter
      - name: add-constant
        disabled: true
      - name: argument-limit
        disabled: true
      # Provided by bidichk
      - name: banned-characters
        disabled: true
      - name: cognitive-complexity
        disabled: true
      - name: comment-spacings
        arguments:
          - nolint
        disabled: true # TODO: Do not disable
      - name: cyclomatic
        disabled: true
      # TODO: Enable this check. Currently disabled due to upstream bug.
      # - name: enforce-repeated-arg-type-style
      #   arguments:
      #     - short
      - name: enforce-slice-style
        arguments:
          - make
        disabled: true # TODO: Do not disable
      - name: exported
        disabled: true
      - name: file-header
        disabled: true
      - name: function-result-limit
        arguments: [3]
      - name: function-length
        disabled: true
      - name: line-length-limit
        disabled: true
      - name: max-public-structs
        disabled: true
      - name: modifies-parameter
        disabled: true
      - name: nested-structs
        disabled: true # TODO: Do not disable
      - name: package-comments
        disabled: true
      - name: optimize-operands-order
        disabled: true
      - name: unchecked-type-assertion
        disabled: true # TODO: Do not disable
      - name: unhandled-error
        arguments: ['bytes\.Buffer\.Write']
  stylecheck:
    checks:
      - all
      - -ST1000
      - -ST1020
      - -ST1021
      - -ST1022
  tagalign:
    strict: true
  tagliatelle:
    case:
      rules:
        json: snake
  tenv:
    all: true
  testifylint:
    enable-all: true
  testpackage:
    skip-regexp: "^$"
  unparam:
    # NOTE: Set this option to false if other projects rely on this project's code
    check-exported: false
  unused:
    # TODO: Uncomment these two lines
    # parameters-are-used: false
    # local-variables-are-used: false
    # NOTE: Set these options to true if other projects rely on this project's code
    field-writes-are-uses: true
    # exported-is-used: true # TODO: Fix issues with this option (upstream)
    exported-fields-are-used: true
  usestdlibvars:
    http-method: true
    http-status-code: true
    time-weekday: false # TODO: Set to true
    time-month: false # TODO: Set to true
    time-layout: false # TODO: Set to true
    crypto-hash: true
    default-rpc-path: true
    sql-isolation-level: true
    tls-signature-scheme: true
    constant-kind: true
  wrapcheck:
    ignorePackageGlobs:
      - github.com/gofiber/fiber/*
      - github.com/valyala/fasthttp
issues:
  exclude-use-default: false
  exclude-case-sensitive: true
  max-issues-per-linter: 0
  max-same-issues: 0
  exclude-dirs:
    - internal # TODO: Do not ignore interal packages
  exclude-rules:
    - linters:
        - err113
      text: 'do not define dynamic errors, use wrapped static errors instead*'
    - path: log/.*\.go
      linters:
        - depguard
   # Exclude some linters from running on tests files.
    - path: _test\.go
      linters:
        - bodyclose
        - err113
  # fix: true
linters:
  enable:
    - asasalint
    - asciicheck
    - bidichk
    - bodyclose
    - containedctx
    - contextcheck
    # - cyclop
    - decorder
    - depguard
    - dogsled
    # - dupl
    - dupword # TODO: Enable
    - durationcheck
    - errcheck
    - errchkjson
    - errname
    - errorlint
    - exhaustive
    # - exhaustivestruct
    # - exhaustruct
    - copyloopvar
    - forbidigo
    - forcetypeassert
    # - funlen
    # - gci # TODO: Enable
    - ginkgolinter
    # - gocheckcompilerdirectives # TODO: Enable
    # - gochecknoglobals # TODO: Enable
    # - gochecknoinits # TODO: Enable
    - gochecksumtype
    # - gocognit
    - goconst # TODO: Enable
    - gocritic
    # - gocyclo
    # - godot
    # - godox
    - err113
    - gofmt
    - gofumpt
    # - goheader
    - goimports
    # - mnd # TODO: Enable
    - gomoddirectives
    # - gomodguard
    - goprintffuncname
    - gosec
    - gosimple
    # - gosmopolitan # TODO: Enable
    - govet
    - grouper
    # - ifshort # TODO: Enable
    # - importas
    # - inamedparam
    - ineffassign
    # - interfacebloat
    # - interfacer
    # - ireturn
    # - lll
    - loggercheck
    # - maintidx
    - makezero
    # - maligned
    - mirror
    - misspell
    - musttag
    - nakedret
    # - nestif
    - nilerr
    - nilnil
    # - nlreturn
    - noctx
    - nolintlint
    - nonamedreturns
    - nosprintfhostport
    # - paralleltest # TODO: Enable
    - perfsprint
    # - prealloc
    - predeclared
    - promlinter
    - protogetter
    - reassign
    - revive
    - rowserrcheck
    # - scopelint # TODO: Enable
    - sloglint
    - spancheck
    - sqlclosecheck
    - staticcheck
    - stylecheck
    # - tagalign # TODO: Enable
    - tagliatelle
    - tenv
    - testableexamples
    - testifylint
    # - testpackage # TODO: Enable
    - thelper
    - tparallel
    - typecheck
    - unconvert
    - unparam
    - unused
    - usestdlibvars
    # - varnamelen
    # - wastedassign # TODO: Enable
    - whitespace
    - wrapcheck
    # - wsl
    - zerologlintGo version1.23.x Code example or link to a public repositoryn/a | 
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 22 replies
-
| We are stuck unable to run any CI workflows because of this. Running locally returns 0 errors. Running on the workflow returns over +10 errors | 
Beta Was this translation helpful? Give feedback.

I will open a dedicated issue: golangci/golangci-lint#5580