github.com/chenfeining/golangci-lint@v1.0.2-0.20230730162517-14c6c67868df/pkg/commands/linters.go (about)

     1  package commands
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/fatih/color"
     7  	"github.com/spf13/cobra"
     8  
     9  	"github.com/chenfeining/golangci-lint/pkg/lint/linter"
    10  )
    11  
    12  func (e *Executor) initLinters() {
    13  	e.lintersCmd = &cobra.Command{
    14  		Use:               "linters",
    15  		Short:             "List current linters configuration",
    16  		Args:              cobra.NoArgs,
    17  		ValidArgsFunction: cobra.NoFileCompletions,
    18  		RunE:              e.executeLinters,
    19  	}
    20  	e.rootCmd.AddCommand(e.lintersCmd)
    21  	e.initRunConfiguration(e.lintersCmd)
    22  }
    23  
    24  // executeLinters runs the 'linters' CLI command, which displays the supported linters.
    25  func (e *Executor) executeLinters(_ *cobra.Command, _ []string) error {
    26  	enabledLintersMap, err := e.EnabledLintersSet.GetEnabledLintersMap()
    27  	if err != nil {
    28  		return fmt.Errorf("can't get enabled linters: %w", err)
    29  	}
    30  
    31  	color.Green("Enabled by your configuration linters:\n")
    32  	var enabledLinters []*linter.Config
    33  	for _, lc := range enabledLintersMap {
    34  		if lc.Internal {
    35  			continue
    36  		}
    37  
    38  		enabledLinters = append(enabledLinters, lc)
    39  	}
    40  	printLinterConfigs(enabledLinters)
    41  
    42  	var disabledLCs []*linter.Config
    43  	for _, lc := range e.DBManager.GetAllSupportedLinterConfigs() {
    44  		if lc.Internal {
    45  			continue
    46  		}
    47  
    48  		if enabledLintersMap[lc.Name()] == nil {
    49  			disabledLCs = append(disabledLCs, lc)
    50  		}
    51  	}
    52  
    53  	color.Red("\nDisabled by your configuration linters:\n")
    54  	printLinterConfigs(disabledLCs)
    55  
    56  	return nil
    57  }