golangci-lint

Fast Go linters aggregator — runs multiple Go linters (50+) in parallel with caching. Integrates staticcheck, revive, errcheck, govet, gosimple, and many others. Single configuration file (.golangci.yml) controls all linters. Standard Go code quality tool used in open source and enterprise Go projects. Significantly faster than running linters individually.

Evaluated Mar 06, 2026 (0d ago) v1.55+
Homepage ↗ Repo ↗ Developer Tools go linting static-analysis code-quality ci vet errcheck staticcheck revive
⚙ Agent Friendliness
68
/ 100
Can an agent use this?
🔒 Security
96
/ 100
Is it safe for agents?
⚡ Reliability
84
/ 100
Does it work consistently?

Score Breakdown

⚙ Agent Friendliness

MCP Quality
--
Documentation
85
Error Messages
85
Auth Simplicity
100
Rate Limits
100

🔒 Security

TLS Enforcement
100
Auth Strength
100
Scope Granularity
100
Dep. Hygiene
88
Secret Handling
90

Static analysis tool — includes gosec for security checks. No network access during analysis.

⚡ Reliability

Uptime/SLA
90
Version Stability
82
Breaking Changes
78
Error Recovery
88
AF Security Reliability

Best When

Go projects that need comprehensive code quality checking with a single tool and shared team configuration.

Avoid When

You only need formatting (use gofmt) or type checking (use go vet) — golangci-lint is overkill for single-linter needs.

Use Cases

  • Run all Go linters in CI pipelines with a single golangci-lint run command and structured output
  • Catch common bugs with errcheck (unchecked errors), govet (suspicious constructs), and staticcheck
  • Enforce code style with revive, gofmt, goimports across teams via shared .golangci.yml config
  • Identify security issues with gosec linter integrated into the golangci-lint pipeline
  • Configure per-project linter sets with different severity levels for errors vs warnings

Not For

  • Python, JavaScript, or other language linting — golangci-lint is Go-only
  • Deep semantic analysis — use go/analysis-based tools for language server integration
  • Automated code fixing — golangci-lint identifies issues but limited auto-fix; use gofmt/goimports for formatting

Interface

REST API
No
GraphQL
No
gRPC
No
MCP Server
No
SDK
No
Webhooks
No

Authentication

Methods: none
OAuth: No Scopes: No

CLI tool — no auth needed.

Pricing

Model: open_source
Free tier: Yes
Requires CC: No

GPL-3.0 licensed open source tool.

Agent Metadata

Pagination
none
Idempotent
Full
Retry Guidance
Not documented

Known Gotchas

  • golangci-lint version must match .golangci.yml config schema version — upgrading the binary requires checking for config format changes
  • Linters enabled by default change between versions — always pin golangci-lint version in CI to avoid unexpected new lint failures on upgrades
  • Some linters (staticcheck, revive) have their own configuration sections in .golangci.yml — linter-specific config is nested under linters-settings
  • golangci-lint run runs on the current directory by default — pass ./... to lint all packages: golangci-lint run ./...
  • Cache directory may cause stale results — use golangci-lint cache clean if results seem incorrect after code changes
  • timeout default is 1 minute — large codebases need --timeout=5m or configured in .golangci.yml under run.timeout

Alternatives

Full Evaluation Report

Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for golangci-lint.

$99

Scores are editorial opinions as of 2026-03-06.

5220
Packages Evaluated
26151
Need Evaluation
173
Need Re-evaluation
Community Powered