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

  1. Enable linters via linters.enable in config or the -E flag
  2. Check that fast-only/presets/filters (e.g. --fast, exclusions) are not filtering out all enabled linters
  3. 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.