Changelog
Follow the news and releases on Mastodon and on Bluesky.
golangci-lint is a free and open-source project built by volunteers.
If you value it, consider supporting us, we appreciate it!
v2.7.2
Released on 2025-12-07
- Linter bug fixes
gosec: from 2.22.10 to daccba6b93d7
v2.7.1
Released on 2025-12-04
- Linter bug fixes
modernize: disablestringscutanalyzer
v2.7.0
Released on 2025-12-03
- Bug fixes
- fix: clone args used by
customcommand
- fix: clone args used by
- Linters new features or changes
no-sprintf-host-port: from 0.2.0 to 0.3.1 (ignore string literals without a colon)unqueryvet: from 1.2.1 to 1.3.0 (handlesconstandvardeclarations)revive: from 1.12.0 to 1.13.0 (new option:enable-default-rules, new rules:forbidden-call-in-wg-go,unnecessary-if,inefficient-map-lookup)modernize: from 0.38.0 to 0.39.0 (new analyzers:plusbuild,stringscut)
- Linters bug fixes
perfsprint: from 0.10.0 to 0.10.1wrapcheck: from 2.11.0 to 2.12.0godoc-lint: from 0.10.1 to 0.10.2
- Misc.
- Add some flags to the
customcommand
- Add some flags to the
- Documentation
- docs: split changelog v1 and v2
v2.6.2
Released on 2025-11-14
- Bug fixes
fmtcommand with symlinks- use file depending on build configuration to invalidate cache
- Linters bug fixes
testableexamples: from 1.0.0 to 1.0.1testpackage: from 1.1.1 to 1.1.2
v2.6.1
Released on 2025-11-04
- Linters bug fixes
copyloopvar: from 1.2.1 to 1.2.2go-critic: from 0.14.0 to 0.14.2
v2.6.0
Released on 2025-10-29
- New linters
- Add
modernizeanalyzer suite
- Add
- Linters new features or changes
arangolint: from 0.2.0 to 0.3.1dupword: from 0.1.6 to 0.1.7 (new optioncomments-only)go-critic: from 0.13.0 to 0.14.0 (new rules/checkers:zeroByteRepeat,dupOption)gofumpt: from 0.9.1 to 0.9.2 (“clothe” naked returns is now controlled by theextra-rulesoption)perfsprint: from 0.9.1 to 0.10.0 (new options:concat-loop,loop-other-ops)wsl: from 5.2.0 to 5.3.0
- Linters bug fixes
dupword: from 0.1.6 to 0.1.7durationcheck: from 0.0.10 to 0.0.11exptostd: from 0.4.4 to 0.4.5fatcontext: from 0.8.1 to 0.9.0forbidigo: from 2.1.0 to 2.3.0ginkgolinter: from 0.21.0 to 0.21.2godoc-lint: from 0.10.0 to 0.10.1gomoddirectives: from 0.7.0 to 0.7.1gosec: from 2.22.8 to 2.22.10makezero: from 2.0.1 to 2.1.0nilerr: from 0.1.1 to 0.1.2paralleltest: from 1.0.14 to 1.0.15protogetter: from 0.3.16 to 0.3.17unparam: from 0df0534333a4 to 5beb8c8f8f15
- Misc.
- fix: ignore some files to hash the version for custom build
v2.5.0
Released on 2025-09-21
- New linters
- Add
godoclintlinter https://github.com/godoc-lint/godoc-lint - Add
unqueryvetlinter https://github.com/MirrexOne/unqueryvet - Add
iotamixinglinter https://github.com/AdminBenni/iota-mixing
- Add
- Linters new features or changes
embeddedstructfieldcheck: from 0.3.0 to 0.4.0 (new option:empty-line)err113: from aea10b59be24 to 0.1.1 (skip internals ofIsmethods forerrortype)ginkgolinter: from 0.20.0 to 0.21.0 (new option:force-tonot)gofumpt: from 0.8.0 to 0.9.1 (new rule is to “clothe” naked returns for the sake of clarity)ineffassign: from 0.1.0 to 0.2.0 (new option:check-escaping-errors)musttag: from 0.13.1 to 0.14.0 (support interface methods)revive: from 1.11.0 to 1.12.0 (new options:identical-ifelseif-branches,identical-ifelseif-conditions,identical-switch-branches,identical-switch-conditions,package-directory-mismatch,unsecure-url-scheme,use-waitgroup-go,useless-fallthrough)thelper: from 0.6.3 to 0.7.1 (skipt.Helperin functions passed tosynctest.Test)wsl: from 5.1.1 to 5.2.0 (improvements related to subexpressions)
- Linters bug fixes
asciicheck: from 0.4.1 to 0.5.0errname: from 1.1.0 to 1.1.1fatcontext: from 0.8.0 to 0.8.1go-printf-func-name: from 0.1.0 to 0.1.1godot: from 1.5.1 to 1.5.4gosec: from 2.22.7 to 2.22.8nilerr: from 0.1.1 to a temporary forknilnil: from 1.1.0 to 1.1.1protogetter: from 0.3.15 to 0.3.16tagliatelle: from 0.7.1 to 0.7.2testifylint: from 1.6.1 to 1.6.4
- Misc.
- fix: “no export data” errors are now handled as a standard typecheck error
- Documentation
- Improve nolint section about syntax
v2.4.0
Released on 2025-08-14
- Enhancements
- 🎉 go1.25 support
- Linters new features or changes
exhaustruct: from v3.3.1 to 4.0.0 (new options:allow-empty,allow-empty-rx,allow-empty-returns,allow-empty-declarations)
- Linters bug fixes
godox: trim filepath from report messagesstaticcheck: allow empty optionstagalign: from 1.4.2 to 1.4.3
- Documentation
- 🌟 New website (with a search engine)
v2.3.1
Released on 2025-08-02
- Linters bug fixes
gci: from 0.13.6 to 0.13.7gosec: from 2.22.6 to 2.22.7noctx: from 0.3.5 to 0.4.0wsl: from 5.1.0 to 5.1.1- tagliatelle: force upper case for custom initialisms
v2.3.0
Released on 2025-07-21
- Linters new features or changes
ginkgolinter: from 0.19.1 to 0.20.0 (new option:force-assertion-description)iface: from 1.4.0 to 1.4.1 (report message improvements)noctx: from 0.3.4 to 0.3.5 (new detections:log/slog,exec,crypto/tls)revive: from 1.10.0 to 1.11.0 (new rule:enforce-switch-style)wsl: from 5.0.0 to 5.1.0
- Linters bug fixes
gosec: from 2.22.5 to 2.22.6noinlineerr: from 1.0.4 to 1.0.5sloglint: from 0.11.0 to 0.11.1
- Misc.
- fix: panic close of closed channel
v2.2.2
Released on 2025-07-11
- Linters bug fixes
noinlineerr: from 1.0.3 to 1.0.4
- Documentation
- Improve debug keys documentation
- Misc.
- fix: panic close of closed channel
- godot: add noinline value into the JSONSchema
v2.2.1
Released on 2025-06-28
- Linters bug fixes
varnamelen: fix configuration
v2.2.0
Released on 2025-06-28
- New linters
- Add
arangolintlinter https://github.com/Crocmagnon/arangolint - Add
embeddedstructfieldchecklinter https://github.com/manuelarte/embeddedstructfieldcheck - Add
noinlineerrlinter https://github.com/AlwxSin/noinlineerr - Add
swaggoformatter https://github.com/golangci/swaggoswag
- Add
- Linters new features or changes
errcheck: addverboseoptionfuncorder: from 0.2.1 to 0.5.0 (new optionalphabetical)gomoddirectives: from 0.6.1 to 0.7.0 (new optionignore-forbidden)iface: from 1.3.1 to 1.4.0 (new optionunexported)noctx: from 0.1.0 to 0.3.3 (new report messages, and new rules related todatabase/sql)noctx: from 0.3.3 to 0.3.4 (new SQL functions detection)revive: from 1.9.0 to 1.10.0 (new rules:time-date,unnecessary-format,use-fmt-print)usestdlibvars: from 1.28.0 to 1.29.0 (new optiontime-date-month)wsl: deprecationwsl_v5: from 4.7.0 to 5.0.0 (major version with new configuration)
- Linters bug fixes
dupword: from 0.1.3 to 0.1.6exptostd: from 0.4.3 to 0.4.4forbidigo: from 1.6.0 to 2.1.0gci: consistently format the codego-spancheck: from 0.6.4 to 0.6.5goconst: from 1.8.1 to 1.8.2gosec: from 2.22.3 to 2.22.4gosec: from 2.22.4 to 2.22.5makezero: from 1.2.0 to 2.0.1misspell: from 0.6.0 to 0.7.0usetesting: from 0.4.3 to 0.5.0
- Misc.
- exclusions: fix
path-expect - formatters: write the input to
stdoutwhen usingstdinand there are no changes - migration: improve the error message when trying to migrate a migrated config
typecheck: deduplicate errorstypecheck: stops the analysis after the first error- Deprecate
print-resources-usageflag - Unique version per custom build
- exclusions: fix
- Documentation
- Improves typecheck FAQ
- Adds plugin systems recommendations
- Add description for
linters.defaultsets
v2.1.6
Released on 2025-05-04
- Linters bug fixes
godot: from 1.5.0 to 1.5.1musttag: from 0.13.0 to 0.13.1
- Documentation
- Add note about golangci-lint v2 integration in VS Code
v2.1.5
Released on 2025-04-24
Due to an error related to Snapcraft, some artifacts of the v2.1.4 release have not been published.
This release contains the same things as v2.1.3.
v2.1.4
Released on 2025-04-24
Due to an error related to Snapcraft, some artifacts of the v2.1.3 release have not been published.
This release contains the same things as v2.1.3.
v2.1.3
Released on 2025-04-24
- Linters bug fixes
fatcontext: from 0.7.2 to 0.8.0
- Misc.
- migration: fix
nakedret.max-func-lines: 0 - migration: fix order of
staticchecksettings - fix: add
go.modhash to the cache salt - fix: use diagnostic position for related information position
- migration: fix
v2.1.2
Released on 2025-04-15
- Linters bug fixes
exptostd: from 0.4.2 to 0.4.3gofumpt: from 0.7.0 to 0.8.0protogetter: from 0.3.13 to 0.3.15usetesting: from 0.4.2 to 0.4.3
v2.1.1
Released on 2025-04-12
The release process of v2.1.0 failed due to a regression inside goreleaser.
The binaries of v2.1.0 have been published, but not the other artifacts (AUR, Docker, etc.).
v2.1.0
Released on 2025-04-12
- Enhancements
- Add an option to display absolute paths (
--path-mode=abs) - Add configuration path placeholder (
${config-path}) - Add
warn-unusedoption forfmtcommand - Colored diff for
fmtcommand (golangci-lint fmt --diff-colored)
- Add an option to display absolute paths (
- New linters
- Add
funcorderlinter https://github.com/manuelarte/funcorder
- Add
- Linters new features or changes
go-errorlint: from 1.7.1 to 1.8.0 (automatic error comparison and type assertion fixes)- ⚠️
goconst:ignore-stringsis deprecated and replaced byignore-string-values goconst: from 1.7.1 to 1.8.1 (new options:find-duplicates,eval-const-expressions)govet: addhttpmuxanalyzernilnesserr: from 0.1.2 to 0.2.0 (detect more cases)paralleltest: from 1.0.10 to 1.0.14 (checks only_test.gofiles)revive: from 1.7.0 to 1.9.0 (support kebab case for setting names)sloglint: from 0.9.0 to 0.11.0 (autofix, new optionmsg-style, suggestslog.DiscardHandler)wrapcheck: from 2.10.0 to 2.11.0 (new optionreport-internal-errors)wsl: from 4.6.0 to 4.7.0 (cgo files are always excluded)
- Linters bug fixes
fatcontext: from 0.7.1 to 0.7.2gocritic: fiximportshadowcheckergosec: from 2.22.2 to 2.22.3ireturn: from 0.3.1 to 0.4.0loggercheck: from 0.10.1 to 0.11.0nakedret: from 2.0.5 to 2.0.6nonamedreturns: from 1.0.5 to 1.0.6protogetter: from 0.3.12 to 0.3.13testifylint: from 1.6.0 to 1.6.1unconvert: update to HEAD
- Misc.
- Fixes memory leaks when using go1.(N) with golangci-lint built with go1.(N-X)
- Adds
golangci-lint-fmtpre-commit hook
- Documentation
- Improvements
- Updates section about vscode integration
v2.0.2
Released on 2025-03-25
- Misc.
- Fixes flags parsing for formatters
- Fixes the filepath used by the exclusion
sourceoption
- Documentation
- Adds a section about flags migration
- Cleaning pages with v1 options
v2.0.1
Released on 2025-03-24
- Linters/formatters bug fixes
golines: fix settings during linter load
- Misc.
- Validates the
versionfield before the configuration forbidigo: fix migration
- Validates the
v2.0.0
Released on 2025-03-24
- Enhancements
- 🌟 New
golangci-lint fmtcommand with dedicated formatter configuration - ♻️ New
golangci-lint migratecommand to help migration from v1 to v2 (cf. Migration guide) - ⚠️ New default values (cf. Migration guide)
- ⚠️ No exclusions by default (cf. Migration guide)
- ⚠️ New default sort order (cf. Migration guide)
- 🌟 New option
run.relative-path-mode(cf. Migration guide) - 🌟 New linters configuration (cf. Migration guide)
- 🌟 New output format configuration (cf. Migration guide)
- 🌟 New
--fast-onlyflag (cf. Migration guide) - 🌟 New option
linters.exclusions.warn-unusedto log a warning if an exclusion rule is unused.
- 🌟 New
- New linters/formatters
- Add
golinesformatter https://github.com/segmentio/golines
- Add
- Linters new features
- ⚠️ Merge
staticcheck,stylecheck,gosimpleinto one linter (staticcheck) (cf. Migration guide) go-critic: from 0.12.0 to 0.13.0gomodguard: from 1.3.5 to 1.4.1 (block explicit indirect dependencies)nilnil: from 1.0.1 to 1.1.0 (new option:only-two)perfsprint: from 0.8.2 to 0.9.1 (checker name in the diagnostic message)staticcheck: newquickfixset of rulestestifylint: from 1.5.2 to 1.6.0 (new options:equal-values,suite-method-signature,require-string-msg)wsl: from 4.5.0 to 4.6.0 (new option:allow-cuddle-used-in-block)
- ⚠️ Merge
- Linters bug fixes
bidichk: from 0.3.2 to 0.3.3errchkjson: from 0.4.0 to 0.4.1errname: from 1.0.0 to 1.1.0funlen: fixignore-commentsoptiongci: from 0.13.5 to 0.13.6gosmopolitan: from 1.2.2 to 1.3.0inamedparam: from 0.1.3 to 0.2.0intrange: from 0.3.0 to 0.3.1protogetter: from 0.3.9 to 0.3.12unparam: from 8a5130ca722f to 0df0534333a4
- Misc.
- 🧹 Configuration options renaming (cf. Migration guide)
- 🧹 Remove options (cf. Migration guide)
- 🧹 Remove flags (cf. Migration guide)
- 🧹 Remove alternative names (cf. Migration guide)
- 🧹 Remove or replace deprecated elements (cf. Migration guide)
- Adds an option to display some commands as JSON:
golangci-lint config path --jsongolangci-lint help linters --jsongolangci-lint help formatters --jsongolangci-lint linters --jsongolangci-lint formatters --jsongolangci-lint version --json
- Documentation