golangci/golangci-lint · error
can't get enabled formatters: %w
Error message
can't get enabled formatters: %w
What it means
The `formatters` command's execute calls c.dbManager.GetEnabledLintersMap(); if no formatters can be resolved as enabled (or the enabled-set conflicts, e.g. a formatter both enabled and disabled via presets/exclusions), the error is wrapped as "can't get enabled formatters".
Source
Thrown at pkg/commands/formatters.go:94
if err != nil {
return fmt.Errorf("can't load config: %w", err)
}
dbManager, err := lintersdb.NewManager(c.log.Child(logutils.DebugKeyLintersDB), c.cfg,
lintersdb.NewLinterBuilder(), lintersdb.NewPluginModuleBuilder(c.log), lintersdb.NewPluginGoBuilder(c.log))
if err != nil {
return err
}
c.dbManager = dbManager
return nil
}
func (c *formattersCommand) execute(_ *cobra.Command, _ []string) error {
enabledLintersMap, err := c.dbManager.GetEnabledLintersMap()
if err != nil {
return fmt.Errorf("can't get enabled formatters: %w", err)
}
var enabledFormatters []*linter.Config
var disabledFormatters []*linter.Config
for _, lc := range c.dbManager.GetAllSupportedLinterConfigs() {
if lc.Internal {
continue
}
if !goformatters.IsFormatter(lc.Name()) {
continue
}
if enabledLintersMap[lc.Name()] == nil {
disabledFormatters = append(disabledFormatters, lc)
} else {
enabledFormatters = append(enabledFormatters, lc)View on GitHub (pinned to ed7a235d2d)
Solutions
- Read the wrapped cause — it usually states which formatters conflict or that none are enabled.
- Enable at least one formatter in the `formatters.enable` list.
- Remove conflicting entries between formatters.enable and formatters.disable.
- Check the `default` setting (e.g. `none`) isn't disabling everything unintentionally.
Example fix
// before (.golangci.yml) formatters: default: none disable: [gofmt] // after formatters: enable: [gofmt, gofumpt]
Defensive patterns
Strategy: validation
Validate before calling
// ensure at least one formatter will be enabled
if len(cfg.Formatters.Enable) == 0 && cfg.Formatters.Default == "none" {
return fmt.Errorf("no formatters enabled: add entries to formatters.enable")
}
// check for enable/disable conflicts
for _, e := range cfg.Formatters.Enable {
for _, d := range cfg.Formatters.Disable {
if e == d { return fmt.Errorf("formatter %q both enabled and disabled", e) }
}
} Try / catch
if err := formattersCmd.Run(); err != nil {
if strings.Contains(err.Error(), "can't get enabled formatters") {
log.Fatalf("enable at least one formatter / resolve conflicts: %v", errors.Unwrap(err))
}
return err
} Prevention
- Always list at least one formatter under formatters.enable.
- Avoid `default: none` without an explicit enable list.
- Keep enable/disable lists disjoint and typo-free (verify names via `golangci-lint formatters`).
When it happens
Trigger: Running `golangci-lint formatters` when GetEnabledLintersMap returns an error — typically no formatters end up enabled after applying enable/disable/default/presets, or conflicting enablement rules.
Common situations: Running the command with all formatters disabled or an empty `formatters:` section combined with `default: none`; contradictory enable/disable lists; typo'd names that resolve to nothing enabled.
Related errors
- error while running %s: %w
- failed to create meta-formatter: %w
- can't combine option --config and --no-config
- failed to create meta-formatter: %w
- build walk options: %w
AI-assisted analysis of golangci/golangci-lint@ed7a235d2d (2026-09-02).
Data as JSON: /api/errors/c0a0489107af5174.
Report an issue: GitHub.