Golangci-lint v2.5.0 adds 8 revive checks
Golangci-lint v2.5.0 adds eight new revive options, plus new linters and broader Go 1.25 support.

Golangci-lint v2.5.0 adds eight new revive options and two new linters.
Golangci-lint keeps moving fast, and the v2.5.0 release is a good example of why teams keep it in their CI pipeline. Released on 2025-09-21, this version adds godoclint, unqueryvet, and a long list of new checks and options across existing linters.
The headline change for many Go teams is revive 1.12.0. It brings eight new options focused on branch logic, package naming, URL schemes, and goroutine coordination. If your codebase uses revive heavily, this release is more than a version bump; it changes what the linter can actually flag.
| Item | Change | Notes |
|---|---|---|
| Release | v2.5.0 | Released on 2025-09-21 |
| New linters | 2 | godoclint, unqueryvet |
| revive | 1.11.0 → 1.12.0 | 8 new options |
| Go support | Go 1.25 | Listed as an enhancement |
| Other linter bump | gofumpt 0.8.0 → 0.9.1 | Clarifies naked-return formatting |
What changed in v2.5.0
Get the latest AI news in your inbox
Weekly picks of model releases, tools, and deep dives — no spam, unsubscribe anytime.
No spam. Unsubscribe at any time.
The release reads like a maintenance-heavy update with a few meaningful additions. The project added two new linters, expanded support for Go 1.25, and pushed several existing tools forward with new rules or configuration knobs.

That mix matters because golangci-lint is most useful when it tracks the ecosystem instead of freezing it. A linter pack that lags behind new Go versions or ignores newer static-analysis tools quickly becomes a stale wrapper around old checks.
- godoclint joins the bundle as a new linter.
- unqueryvet also ships in the release.
- revive gets eight new options in 1.12.0.
- gofumpt moves from 0.8.0 to 0.9.1 with a clearer rule for naked returns.
- gosec advances from 2.22.7 to 2.22.8.
Revive gets the most practical expansion
The most detailed change in the changelog is revive’s jump from 1.11.0 to 1.12.0. The new options target patterns that show up in real code review complaints: repeated if/else branches, repeated switch branches, package-directory mismatches, unsafe URL schemes, and the use of wait groups in goroutines.
That matters because revive is often used as the opinionated style and maintainability layer inside a larger lint stack. The more specific its checks become, the less time reviewers spend catching the same easy mistakes by hand.
“Code should be written to minimize the time it would take for someone else to understand it.” — Robert C. Martin, Goodreads quote
That quote fits this release almost too well. The new revive options are all about making intent clearer and preventing patterns that look harmless in review but create confusion later.
- identical-ifelseif-branches and identical-ifelseif-conditions catch duplicate branch logic.
- identical-switch-branches and identical-switch-conditions do the same for switch statements.
- package-directory-mismatch checks whether package names match folder structure.
- unsecure-url-scheme flags risky URL schemes.
- use-waitgroup-go and useless-fallthrough add more concurrency and control-flow checks.
The new linters point to two different needs
godoclint is about documentation quality. unqueryvet is about safer database query handling. That split is useful because it shows where golangci-lint is spending attention: one tool for API and package docs, another for SQL usage and injection risk.

The release also adds a small but practical improvement to staticcheck-adjacent workflows through broader ecosystem support. For teams that treat linting as part of code health rather than a checkbox, these additions reduce the need to wire separate tools into every repository.
- godoclint targets documentation problems in Go code.
- unqueryvet focuses on query construction and SQL-related mistakes.
- gofumpt changes how naked returns are handled for readability.
- gosec and err113 both pick up smaller updates that tighten security and error handling checks.
How this compares with nearby releases
Compared with v2.4.0, v2.5.0 looks less like a platform announcement and more like a practical expansion. v2.4.0 added Go 1.25 support and a new website with search, while v2.5.0 adds two linters and broadens existing rule sets.
That pattern matters for adoption. Teams usually upgrade linters when the new version gives them either better signal or less maintenance cost. Here, the value comes from both: more checks in the same tool, and more specific rules inside revive, gofumpt, and other linters.
- v2.4.0: Go 1.25 support and a new website.
- v2.5.0: two new linters and eight new revive options.
- v2.6.0: adds a modernize analyzer suite and more linter updates.
- v2.12.0: later releases keep expanding the bundled checks even further.
If you maintain a Go codebase with revive enabled, this release is worth a config review before you merge the upgrade. New rules can surface old code smells fast, and the best time to decide whether to tune them is before they flood your CI logs. The practical question is simple: which of these eight revive checks should be warnings first, and which should fail the build on day one?
For teams already using golangci-lint in CI, v2.5.0 is the kind of update that quietly raises code quality without demanding a migration project. For everyone else, it is a reminder that the tool has moved well beyond a thin wrapper around a few popular linters.
// Related Articles
- [TOOLS]
Golangci-lint’s FAQ turns CI noise into a policy
- [TOOLS]
GORM query helpers turn SQL into guardrails
- [TOOLS]
7 open-source AI projects developers need in 2026
- [TOOLS]
Midjourney Review 2026: Is V8 Still Worth It?
- [TOOLS]
Midjourney V8.1 lands with 4-5x faster renders
- [TOOLS]
MLOps Roadmap 2026 Turns Learning Into Delivery