diff --git a/README.md b/README.md index e843908c..3fe563df 100644 --- a/README.md +++ b/README.md @@ -185,16 +185,16 @@ GolangCI-Lint can be used with zero configuration. By default the following lint ```bash $ golangci-lint help linters Enabled by default linters: -govet (vet, vetshadow): Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string [fast: false, auto-fix: false] -errcheck: Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases [fast: true, auto-fix: false] -staticcheck: Staticcheck is a go vet on steroids, applying a ton of static analysis checks [fast: false, auto-fix: false] -unused: Checks Go code for unused constants, variables, functions and types [fast: false, auto-fix: false] -gosimple: Linter for Go source code that specializes in simplifying a code [fast: false, auto-fix: false] -structcheck: Finds an unused struct fields [fast: true, auto-fix: false] -varcheck: Finds unused global variables and constants [fast: true, auto-fix: false] -ineffassign: Detects when assignments to existing variables are not used [fast: true, auto-fix: false] deadcode: Finds unused code [fast: true, auto-fix: false] +errcheck: Errcheck is a program for checking for unchecked errors in go programs. These unchecked errors can be critical bugs in some cases [fast: true, auto-fix: false] +gosimple: Linter for Go source code that specializes in simplifying a code [fast: false, auto-fix: false] +govet (vet, vetshadow): Vet examines Go source code and reports suspicious constructs, such as Printf calls whose arguments do not align with the format string [fast: false, auto-fix: false] +ineffassign: Detects when assignments to existing variables are not used [fast: true, auto-fix: false] +staticcheck: Staticcheck is a go vet on steroids, applying a ton of static analysis checks [fast: false, auto-fix: false] +structcheck: Finds an unused struct fields [fast: true, auto-fix: false] typecheck: Like the front-end of a Go compiler, parses and type-checks Go code [fast: true, auto-fix: false] +unused: Checks Go code for unused constants, variables, functions and types [fast: false, auto-fix: false] +varcheck: Finds unused global variables and constants [fast: true, auto-fix: false] ``` and the following linters are disabled by default: @@ -203,27 +203,27 @@ and the following linters are disabled by default: $ golangci-lint help linters ... Disabled by default linters: -golint: Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes [fast: true, auto-fix: false] -stylecheck: Stylecheck is a replacement for golint [fast: false, auto-fix: false] -gosec (gas): Inspects source code for security problems [fast: true, auto-fix: false] -interfacer: Linter that suggests narrower interface types [fast: false, auto-fix: false] -unconvert: Remove unnecessary type conversions [fast: true, auto-fix: false] +depguard: Go linter that checks if package imports are in a list of acceptable packages [fast: true, auto-fix: false] dupl: Tool for code clone detection [fast: true, auto-fix: false] +gochecknoglobals: Checks that no globals are present in Go code [fast: true, auto-fix: false] +gochecknoinits: Checks that no init functions are present in Go code [fast: true, auto-fix: false] goconst: Finds repeated strings that could be replaced by a constant [fast: true, auto-fix: false] +gocritic: The most opinionated Go source code linter [fast: true, auto-fix: false] gocyclo: Computes and checks the cyclomatic complexity of functions [fast: true, auto-fix: false] gofmt: Gofmt checks whether code was gofmt-ed. By default this tool runs with -s option to check for code simplification [fast: true, auto-fix: true] goimports: Goimports does everything that gofmt does. Additionally it checks unused imports [fast: true, auto-fix: true] -maligned: Tool to detect Go structs that would take less memory if their fields were sorted [fast: true, auto-fix: false] -depguard: Go linter that checks if package imports are in a list of acceptable packages [fast: true, auto-fix: false] -misspell: Finds commonly misspelled English words in comments [fast: true, auto-fix: true] +golint: Golint differs from gofmt. Gofmt reformats Go source code, whereas golint prints out style mistakes [fast: true, auto-fix: false] +gosec (gas): Inspects source code for security problems [fast: true, auto-fix: false] +interfacer: Linter that suggests narrower interface types [fast: false, auto-fix: false] lll: Reports long lines [fast: true, auto-fix: false] -unparam: Reports unused function parameters [fast: false, auto-fix: false] +maligned: Tool to detect Go structs that would take less memory if their fields were sorted [fast: true, auto-fix: false] +misspell: Finds commonly misspelled English words in comments [fast: true, auto-fix: true] nakedret: Finds naked returns in functions greater than a specified function length [fast: true, auto-fix: false] prealloc: Finds slice declarations that could potentially be preallocated [fast: true, auto-fix: false] scopelint: Scopelint checks for unpinned variables in go programs [fast: true, auto-fix: false] -gocritic: The most opinionated Go source code linter [fast: true, auto-fix: false] -gochecknoinits: Checks that no init functions are present in Go code [fast: true, auto-fix: false] -gochecknoglobals: Checks that no globals are present in Go code [fast: true, auto-fix: false] +stylecheck: Stylecheck is a replacement for golint [fast: false, auto-fix: false] +unconvert: Remove unnecessary type conversions [fast: true, auto-fix: false] +unparam: Reports unused function parameters [fast: false, auto-fix: false] ``` Pass `-E/--enable` to enable linter and `-D/--disable` to disable: @@ -457,7 +457,7 @@ Flags: -D, --disable strings Disable specific linter --enable-all Enable all linters --disable-all Disable all linters - -p, --presets strings Enable presets (bugs|unused|format|style|complexity|performance) of linters. Run 'golangci-lint linters' to see them. This option implies option --disable-all + -p, --presets strings Enable presets (bugs|complexity|format|performance|style|unused) of linters. Run 'golangci-lint linters' to see them. This option implies option --disable-all --fast Run only fast linters from enabled linters set (first run won't be fast) -e, --exclude strings Exclude issue by regexp --exclude-use-default Use or not use default excludes: diff --git a/pkg/commands/help.go b/pkg/commands/help.go index 39b2ef81..078e60e8 100644 --- a/pkg/commands/help.go +++ b/pkg/commands/help.go @@ -3,6 +3,7 @@ package commands import ( "fmt" "os" + "sort" "strings" "github.com/fatih/color" @@ -36,6 +37,9 @@ func (e *Executor) initHelp() { } func printLinterConfigs(lcs []*linter.Config) { + sort.Slice(lcs, func(i, j int) bool { + return strings.Compare(lcs[i].Name(), lcs[j].Name()) < 0 + }) for _, lc := range lcs { altNamesStr := "" if len(lc.AlternativeNames) != 0 { @@ -72,6 +76,7 @@ func (e *Executor) executeLintersHelp(_ *cobra.Command, args []string) { for _, lc := range linters { linterNames = append(linterNames, lc.Name()) } + sort.Strings(linterNames) fmt.Fprintf(logutils.StdOut, "%s: %s\n", color.YellowString(p), strings.Join(linterNames, ", ")) } diff --git a/pkg/lint/lintersdb/manager.go b/pkg/lint/lintersdb/manager.go index dda990b2..79185ae3 100644 --- a/pkg/lint/lintersdb/manager.go +++ b/pkg/lint/lintersdb/manager.go @@ -28,8 +28,8 @@ func NewManager(cfg *config.Config) *Manager { } func (Manager) AllPresets() []string { - return []string{linter.PresetBugs, linter.PresetUnused, linter.PresetFormatting, - linter.PresetStyle, linter.PresetComplexity, linter.PresetPerformance} + return []string{linter.PresetBugs, linter.PresetComplexity, linter.PresetFormatting, + linter.PresetPerformance, linter.PresetStyle, linter.PresetUnused} } func (m Manager) allPresetsSet() map[string]bool {