dev: add GL_DEBUG=govet to see enabled analyzers (#4465)
This commit is contained in:
parent
6628d211b3
commit
4fea092fa2
@ -1100,7 +1100,7 @@ linters-settings:
|
|||||||
# stdmethods, stringintconv, structtag, testinggoroutine, tests, timeformat, unmarshal, unreachable, unsafeptr,
|
# stdmethods, stringintconv, structtag, testinggoroutine, tests, timeformat, unmarshal, unreachable, unsafeptr,
|
||||||
# unusedresult
|
# unusedresult
|
||||||
# ).
|
# ).
|
||||||
# Run `go tool vet help` to see all analyzers.
|
# Run `GL_DEBUG=govet golangci-lint run --enable=govet` to see default, all available analyzers, and enabled analyzers.
|
||||||
# Default: []
|
# Default: []
|
||||||
enable:
|
enable:
|
||||||
- appends
|
- appends
|
||||||
@ -1152,7 +1152,7 @@ linters-settings:
|
|||||||
# atomicalign, deepequalerrors, fieldalignment, findcall, nilness, reflectvaluecompare, shadow, sortslice,
|
# atomicalign, deepequalerrors, fieldalignment, findcall, nilness, reflectvaluecompare, shadow, sortslice,
|
||||||
# timeformat, unusedwrite
|
# timeformat, unusedwrite
|
||||||
# ).
|
# ).
|
||||||
# Run `go tool vet help` to see all analyzers.
|
# Run `GL_DEBUG=govet golangci-lint run --enable=govet` to see default, all available analyzers, and enabled analyzers.
|
||||||
# Default: []
|
# Default: []
|
||||||
disable:
|
disable:
|
||||||
- appends
|
- appends
|
||||||
|
@ -2,6 +2,7 @@ package golinters
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"slices"
|
"slices"
|
||||||
|
"sort"
|
||||||
|
|
||||||
"golang.org/x/tools/go/analysis"
|
"golang.org/x/tools/go/analysis"
|
||||||
"golang.org/x/tools/go/analysis/passes/appends"
|
"golang.org/x/tools/go/analysis/passes/appends"
|
||||||
@ -52,6 +53,7 @@ import (
|
|||||||
|
|
||||||
"github.com/golangci/golangci-lint/pkg/config"
|
"github.com/golangci/golangci-lint/pkg/config"
|
||||||
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis"
|
"github.com/golangci/golangci-lint/pkg/golinters/goanalysis"
|
||||||
|
"github.com/golangci/golangci-lint/pkg/logutils"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -136,6 +138,11 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
govetDebugf = logutils.Debug(logutils.DebugKeyGovet)
|
||||||
|
isGovetDebug = logutils.HaveDebugTag(logutils.DebugKeyGovet)
|
||||||
|
)
|
||||||
|
|
||||||
func NewGovet(settings *config.GovetSettings) *goanalysis.Linter {
|
func NewGovet(settings *config.GovetSettings) *goanalysis.Linter {
|
||||||
var conf map[string]map[string]any
|
var conf map[string]map[string]any
|
||||||
if settings != nil {
|
if settings != nil {
|
||||||
@ -152,6 +159,9 @@ func NewGovet(settings *config.GovetSettings) *goanalysis.Linter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func analyzersFromConfig(settings *config.GovetSettings) []*analysis.Analyzer {
|
func analyzersFromConfig(settings *config.GovetSettings) []*analysis.Analyzer {
|
||||||
|
debugAnalyzersListf(allAnalyzers, "All available analyzers")
|
||||||
|
debugAnalyzersListf(defaultAnalyzers, "Default analyzers")
|
||||||
|
|
||||||
if settings == nil {
|
if settings == nil {
|
||||||
return defaultAnalyzers
|
return defaultAnalyzers
|
||||||
}
|
}
|
||||||
@ -168,6 +178,8 @@ func analyzersFromConfig(settings *config.GovetSettings) []*analysis.Analyzer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debugAnalyzersListf(enabledAnalyzers, "Enabled by config analyzers")
|
||||||
|
|
||||||
return enabledAnalyzers
|
return enabledAnalyzers
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,3 +206,18 @@ func isAnalyzerEnabled(name string, cfg *config.GovetSettings, defaultAnalyzers
|
|||||||
return slices.ContainsFunc(defaultAnalyzers, func(a *analysis.Analyzer) bool { return a.Name == name })
|
return slices.ContainsFunc(defaultAnalyzers, func(a *analysis.Analyzer) bool { return a.Name == name })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func debugAnalyzersListf(analyzers []*analysis.Analyzer, message string) {
|
||||||
|
if !isGovetDebug {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
analyzerNames := make([]string, 0, len(analyzers))
|
||||||
|
for _, a := range analyzers {
|
||||||
|
analyzerNames = append(analyzerNames, a.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Strings(analyzerNames)
|
||||||
|
|
||||||
|
govetDebugf("%s (%d): %s", message, len(analyzerNames), analyzerNames)
|
||||||
|
}
|
||||||
|
@ -57,6 +57,7 @@ const (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
DebugKeyGoCritic = "gocritic" // Debugs `go-critic` linter.
|
DebugKeyGoCritic = "gocritic" // Debugs `go-critic` linter.
|
||||||
|
DebugKeyGovet = "govet" // Debugs `govet` linter.
|
||||||
DebugKeyMegacheck = "megacheck" // Debugs `staticcheck` related linters.
|
DebugKeyMegacheck = "megacheck" // Debugs `staticcheck` related linters.
|
||||||
DebugKeyNolint = "nolint" // Debugs a filter excluding issues by `//nolint` comments.
|
DebugKeyNolint = "nolint" // Debugs a filter excluding issues by `//nolint` comments.
|
||||||
DebugKeyRevive = "revive" // Debugs `revive` linter.
|
DebugKeyRevive = "revive" // Debugs `revive` linter.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user