golangci/golangci-lint · error
no linters enabled
Error message
no linters enabled
What it means
Fired in NewRunner after resolving the enabled-linters map: either zero linters matched the config/CLI selection, or the only enabled linter was the internal 'typecheck' pseudo-linter, which cannot run alone. golangci-lint refuses to start a run that would produce no linting.
Source
Thrown at pkg/lint/runner.go:64
if err != nil {
return nil, err
}
enabledLinters, err := dbManager.GetEnabledLintersMap()
if err != nil {
return nil, fmt.Errorf("failed to get enabled linters: %w", err)
}
var enabledFormatters []string
for name := range maps.Keys(enabledLinters) {
if goformatters.IsFormatter(name) {
enabledFormatters = append(enabledFormatters, name)
}
}
switch len(enabledLinters) {
case 0:
return nil, errors.New("no linters enabled")
case 1:
if _, ok := enabledLinters["typecheck"]; ok {
return nil, errors.New("no linters enabled")
}
}
formattersCfg := &config.Formatters{
Enable: enabledFormatters,
Settings: cfg.Linters.Settings.FormatterSettings,
}
metaFormatter, err := goformatters.NewMetaFormatter(log, formattersCfg, &cfg.Run)
if err != nil {
return nil, fmt.Errorf("failed to create meta-formatter: %w", err)
}
return &Runner{
Processors: []processors.Processor{View on GitHub (pinned to ed7a235d2d)
Solutions
- Enable linters via linters.enable in config or the -E flag
- Check that fast-only/presets/filters (e.g. --fast, exclusions) are not filtering out all enabled linters
- Verify linter names are spelled correctly; unknown names may be silently skipped depending on version
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/lint/runner.go:64 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of golangci/golangci-lint@ed7a235d2d (2026-09-02).
Data as JSON: /api/errors/1e8c59ab84953b75.
Report an issue: GitHub.