From 7152c20ca469892da92a29a3bbb6799468e850a3 Mon Sep 17 00:00:00 2001
From: Philippe Scorsolini
Date: Tue, 10 Jun 2025 10:35:19 +0200
Subject: [PATCH] chore(deps): bump golangci-lint to v2
Signed-off-by: Philippe Scorsolini
---
.github/workflows/ci.yml | 6 +-
.golangci.yml | 380 ++++++++++++++++++++-------------------
2 files changed, 197 insertions(+), 189 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index c4cd436..10b3fb4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,8 +14,8 @@ on:
env:
# Common versions
- GO_VERSION: '1.23.1'
- GOLANGCI_VERSION: 'v1.61.0'
+ GO_VERSION: '1.24.3'
+ GOLANGCI_VERSION: 'v2.1.6'
DOCKER_BUILDX_VERSION: 'v0.24.0'
# These environment variables are important to the Crossplane CLI install.sh
@@ -49,7 +49,7 @@ jobs:
run: go mod tidy && git diff --exit-code go.mod go.sum
- name: Lint
- uses: golangci/golangci-lint-action@v6
+ uses: golangci/golangci-lint-action@v7
with:
version: ${{ env.GOLANGCI_VERSION }}
diff --git a/.golangci.yml b/.golangci.yml
index f5a0ef2..ae8b557 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -1,196 +1,186 @@
-run:
- timeout: 10m
+version: "2"
output:
- # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number"
formats:
- - format: colored-line-number
-
-linters-settings:
- errcheck:
- # report about not checking of errors in type assetions: `a := b.(MyStruct)`;
- # default is false: such cases aren't reported by default.
- check-type-assertions: false
-
- # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`;
- # default is false: such cases aren't reported by default.
- check-blank: false
-
- # List of functions to exclude from checking, where each entry is a single function to exclude.
- # See https://github.com/kisielk/errcheck#excluding-functions for details.
- exclude-functions:
- - io/ioutil.ReadFile
-
- govet:
- # report about shadowed variables
- disable:
- - shadow
-
- gofmt:
- # simplify code: gofmt with `-s` option, true by default
- simplify: true
-
- gci:
- custom-order: true
- sections:
- - standard
- - default
- - prefix(github.com/crossplane)
- - prefix(github.com/crossplane-contrib)
- - blank
- - dot
-
- gocyclo:
- # minimal code complexity to report, 30 by default (but we recommend 10-20)
- min-complexity: 10
-
- dupl:
- # tokens count to trigger issue, 150 by default
- threshold: 100
-
- goconst:
- # minimal length of string constant, 3 by default
- min-len: 3
- # minimal occurrences count to trigger, 3 by default
- min-occurrences: 5
-
- lll:
- # tab width in spaces. Default to 1.
- tab-width: 1
-
- unparam:
- # Inspect exported functions, default is false. Set to true if no external program/library imports your code.
- # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors:
- # if it's called for subdir of a project it can't find external interfaces. All text editor integrations
- # with golangci-lint call it on a directory with the changed file.
- check-exported: false
-
- 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
-
- gocritic:
- # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint` run to see all tags and checks.
- # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags".
- enabled-tags:
- - performance
-
- settings: # settings passed to gocritic
- captLocal: # must be valid enabled check name
- paramsOnly: true
- rangeValCopy:
- sizeThreshold: 32
-
- nolintlint:
- require-explanation: true
- require-specific: true
-
+ text:
+ path: stdout
linters:
enable:
- - megacheck
- - govet
- - gocyclo
- - gocritic
+ - asasalint
+ - asciicheck
+ - bidichk
+ - bodyclose
+ - contextcheck
+ - durationcheck
+ - errchkjson
+ - errorlint
+ - exhaustive
+ - gocheckcompilerdirectives
+ - gochecksumtype
- goconst
- - gci
- - gofmt # We enable this as well as goimports for its simplify mode.
- - prealloc
- - revive
- - unconvert
+ - gocritic
+ - gocyclo
+ - gosec
+ - gosmopolitan
+ - loggercheck
+ - makezero
- misspell
+ - musttag
- nakedret
+ - nilerr
+ - nilnesserr
+ - noctx
- nolintlint
-
- disable:
- # These linters are all deprecated as of golangci-lint v1.49.0. We disable
- # them explicitly to avoid the linter logging deprecation warnings.
- - deadcode
- - varcheck
- - scopelint
- - structcheck
- - interfacer
-
- presets:
- - bugs
- - unused
- fast: false
-
+ - prealloc
+ - protogetter
+ - reassign
+ - recvcheck
+ - revive
+ - rowserrcheck
+ - spancheck
+ - sqlclosecheck
+ - testifylint
+ - unconvert
+ - unparam
+ - zerologlint
+
+ settings:
+ dupl:
+ # tokens count to trigger issue, 150 by default
+ threshold: 100
+
+ errcheck:
+ # report about not checking of errors in type assetions: `a := b.(MyStruct)`;
+ # default is false: such cases aren't reported by default.
+ check-type-assertions: false
+ # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`;
+ # default is false: such cases aren't reported by default.
+ check-blank: false
+ # List of functions to exclude from checking, where each entry is a single function to exclude.
+ # See https://github.com/kisielk/errcheck#excluding-functions for details.
+ exclude-functions:
+ - io/ioutil.ReadFile
+
+ goconst:
+ # minimal length of string constant, 3 by default
+ min-len: 3
+ # minimal occurrences count to trigger, 3 by default
+ min-occurrences: 5
+
+ gocritic:
+ # Enable multiple checks by tags, run `GL_DEBUG=gocritic golangci-lint` run to see all tags and checks.
+ # Empty list by default. See https://github.com/go-critic/go-critic#usage -> section "Tags".
+ enabled-tags:
+ - performance
+ settings: # settings passed to gocritic
+ captLocal: # must be valid enabled check name
+ paramsOnly: true
+ rangeValCopy:
+ sizeThreshold: 32
+
+ gocyclo:
+ # minimal code complexity to report, 30 by default (but we recommend 10-20)
+ min-complexity: 10
+
+ govet:
+ # report about shadowed variables
+ disable:
+ - shadow
+
+ lll:
+ # tab width in spaces. Default to 1.
+ tab-width: 1
+
+ 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
+
+ nolintlint:
+ require-explanation: true
+ require-specific: true
+
+ 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
+ for-loops: false
+
+ unparam:
+ # Inspect exported functions, default is false. Set to true if no external program/library imports your code.
+ # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors:
+ # if it's called for subdir of a project it can't find external interfaces. All text editor integrations
+ # with golangci-lint call it on a directory with the changed file.
+ check-exported: false
+
+ exclusions:
+ generated: lax
+ rules:
+
+ # Excluding configuration per-path and per-linter
+ - linters:
+ - all
+ path: zz_generated\..+\.go$
+
+ # Exclude some linters from running on tests files.
+ - linters:
+ - dupl
+ - errcheck
+ - gocyclo
+ - gosec
+ - scopelint
+ - unparam
+ path: _test(ing)?\.go
+
+ # Ease some gocritic warnings on test files.
+ - linters:
+ - gocritic
+ path: _test\.go
+ text: (unnamedResult|exitAfterDefer)
+
+ # These are performance optimisations rather than style issues per se.
+ # They warn when function arguments or range values copy a lot of memory
+ # rather than using a pointer.
+ - linters:
+ - gocritic
+ text: '(hugeParam|rangeValCopy):'
+
+ # This "TestMain should call os.Exit to set exit code" warning is not clever
+ # enough to notice that we call a helper method that calls os.Exit.
+ - linters:
+ - staticcheck
+ text: 'SA3000:'
+
+ # This is a "potential hardcoded credentials" warning. It's triggered by
+ # any variable with 'secret' in the same, and thus hits a lot of false
+ # positives in Kubernetes land where a Secret is an object type.
+ - linters:
+ - gosec
+ text: 'G101:'
+
+ # This is an 'errors unhandled' warning that duplicates errcheck.
+ - linters:
+ - gosec
+ text: 'G104:'
+
+ # Some k8s dependencies do not have JSON tags on all fields in structs.
+ - linters:
+ - musttag
+ path: k8s.io/
+ paths:
+ - third_party$
+ - builtin$
+ - examples$
issues:
- # Excluding configuration per-path and per-linter
- exclude-rules:
- - path: "zz_generated\\..+\\.go$"
- linters: ["all"]
-
- # Exclude some linters from running on tests files.
- - path: _test(ing)?\.go
- linters:
- - gocyclo
- - errcheck
- - dupl
- - gosec
- - scopelint
- - unparam
-
- # Ease some gocritic warnings on test files.
- - path: _test\.go
- text: "(unnamedResult|exitAfterDefer)"
- linters:
- - gocritic
-
- # These are performance optimisations rather than style issues per se.
- # They warn when function arguments or range values copy a lot of memory
- # rather than using a pointer.
- - text: "(hugeParam|rangeValCopy):"
- linters:
- - gocritic
-
- # This "TestMain should call os.Exit to set exit code" warning is not clever
- # enough to notice that we call a helper method that calls os.Exit.
- - text: "SA3000:"
- linters:
- - staticcheck
-
- - text: "k8s.io/api/core/v1"
- linters:
- - goimports
-
- # This is a "potential hardcoded credentials" warning. It's triggered by
- # any variable with 'secret' in the same, and thus hits a lot of false
- # positives in Kubernetes land where a Secret is an object type.
- - text: "G101:"
- linters:
- - gosec
- - gas
-
- # This is an 'errors unhandled' warning that duplicates errcheck.
- - text: "G104:"
- linters:
- - gosec
- - gas
-
- # Some k8s dependencies do not have JSON tags on all fields in structs.
- - path: k8s.io/
- linters:
- - musttag
-
- # Independently from option `exclude` we use default exclude patterns,
- # it can be disabled by this option. To list all
- # excluded by default patterns execute `golangci-lint run --help`.
- # Default value for this option is true.
- exclude-use-default: false
-
+ # maximum issues count per one linter. set to 0 to disable. default is 50.
+ max-issues-per-linter: 0
+ # Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
+ max-same-issues: 0
# Show only new issues: if there are unstaged changes or untracked files,
# only those changes are analyzed, else only changes in HEAD~ are analyzed.
# It's a super-useful option for integration of golangci-lint into existing
@@ -199,8 +189,26 @@ issues:
# Default is false.
new: false
- # Maximum issues count per one linter. Set to 0 to disable. Default is 50.
- max-issues-per-linter: 0
-
- # Maximum count of issues with the same text. Set to 0 to disable. Default is 3.
- max-same-issues: 0
+formatters:
+ enable:
+ - gci
+ - gofmt
+ settings:
+ gci:
+ sections:
+ - standard
+ - default
+ - prefix(github.com/crossplane)
+ - prefix(github.com/crossplane-contrib)
+ - blank
+ - dot
+ custom-order: true
+ gofmt:
+ # simplify code: gofmt with `-s` option, true by default
+ simplify: true
+ exclusions:
+ generated: lax
+ paths:
+ - third_party$
+ - builtin$
+ - examples$