fix: gochecknoinits shadow name (#4698)

This commit is contained in:
Ludovic Fernandez 2024-05-05 21:43:24 +02:00 committed by GitHub
parent 4bf574a12b
commit 4532eb98ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
34 changed files with 144 additions and 144 deletions

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "dogsled" const linterName = "dogsled"
func New(settings *config.DogsledSettings) *goanalysis.Linter { func New(settings *config.DogsledSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues := runDogsled(pass, settings) issues := runDogsled(pass, settings)
@ -39,7 +39,7 @@ func New(settings *config.DogsledSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f())", "Checks assignments with too many blank identifiers (e.g. x, _, _, _, := f())",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -100,7 +100,7 @@ func (v *returnsVisitor) Visit(node ast.Node) ast.Visitor {
if numBlank > v.maxBlanks { if numBlank > v.maxBlanks {
v.issues = append(v.issues, result.Issue{ v.issues = append(v.issues, result.Issue{
FromLinter: name, FromLinter: linterName,
Text: fmt.Sprintf("declaration has %v blank identifiers", numBlank), Text: fmt.Sprintf("declaration has %v blank identifiers", numBlank),
Pos: v.f.Position(assgnStmt.Pos()), Pos: v.f.Position(assgnStmt.Pos()),
}) })

View File

@ -16,14 +16,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "dupl" const linterName = "dupl"
func New(settings *config.DuplSettings) *goanalysis.Linter { func New(settings *config.DuplSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runDupl(pass, settings) issues, err := runDupl(pass, settings)
@ -44,7 +44,7 @@ func New(settings *config.DuplSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Tool for code clone detection", "Tool for code clone detection",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -88,7 +88,7 @@ func runDupl(pass *analysis.Pass, settings *config.DuplSettings) ([]goanalysis.I
To: i.From.LineEnd(), To: i.From.LineEnd(),
}, },
Text: text, Text: text,
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -22,20 +22,20 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "errcheck" const linterName = "errcheck"
func New(settings *config.ErrcheckSettings) *goanalysis.Linter { func New(settings *config.ErrcheckSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: goanalysis.DummyRun, Run: goanalysis.DummyRun,
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"errcheck is a program for checking for unchecked errors in Go code. "+ "errcheck is a program for checking for unchecked errors in Go code. "+
"These unchecked errors can be critical bugs in some cases", "These unchecked errors can be critical bugs in some cases",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
@ -100,7 +100,7 @@ func runErrCheck(lintCtx *linter.Context, pass *analysis.Pass, checker *errcheck
issues[i] = goanalysis.NewIssue( issues[i] = goanalysis.NewIssue(
&result.Issue{ &result.Issue{
FromLinter: name, FromLinter: linterName,
Text: text, Text: text,
Pos: err.Pos, Pos: err.Pos,
}, },

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "forbidigo" const linterName = "forbidigo"
func New(settings *config.ForbidigoSettings) *goanalysis.Linter { func New(settings *config.ForbidigoSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runForbidigo(pass, settings) issues, err := runForbidigo(pass, settings)
@ -44,7 +44,7 @@ func New(settings *config.ForbidigoSettings) *goanalysis.Linter {
// But we cannot make this depend on the settings and have to mirror the mode chosen in GetAllSupportedLinterConfigs, // But we cannot make this depend on the settings and have to mirror the mode chosen in GetAllSupportedLinterConfigs,
// therefore we have to use LoadModeTypesInfo in all cases. // therefore we have to use LoadModeTypesInfo in all cases.
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Forbids identifiers", "Forbids identifiers",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -73,7 +73,7 @@ func runForbidigo(pass *analysis.Pass, settings *config.ForbidigoSettings) ([]go
forbid, err := forbidigo.NewLinter(patterns, options...) forbid, err := forbidigo.NewLinter(patterns, options...)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to create linter %q: %w", name, err) return nil, fmt.Errorf("failed to create linter %q: %w", linterName, err)
} }
var issues []goanalysis.Issue var issues []goanalysis.Issue
@ -94,7 +94,7 @@ func runForbidigo(pass *analysis.Pass, settings *config.ForbidigoSettings) ([]go
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
Pos: hint.Position(), Pos: hint.Position(),
Text: hint.Details(), Text: hint.Details(),
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }
} }

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "funlen" const linterName = "funlen"
func New(settings *config.FunlenSettings) *goanalysis.Linter { func New(settings *config.FunlenSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues := runFunlen(pass, settings) issues := runFunlen(pass, settings)
@ -39,7 +39,7 @@ func New(settings *config.FunlenSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Tool for detection of long functions", "Tool for detection of long functions",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -67,7 +67,7 @@ func runFunlen(pass *analysis.Pass, settings *config.FunlenSettings) []goanalysi
Line: i.Pos.Line, Line: i.Pos.Line,
}, },
Text: strings.TrimRight(i.Message, "\n"), Text: strings.TrimRight(i.Message, "\n"),
FromLinter: name, FromLinter: linterName,
}, pass) }, pass)
} }

View File

@ -23,14 +23,14 @@ import (
"github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/lint/linter"
) )
const name = "gci" const linterName = "gci"
func New(settings *config.GciSettings) *goanalysis.Linter { func New(settings *config.GciSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: goanalysis.DummyRun, Run: goanalysis.DummyRun,
Requires: []*analysis.Analyzer{ Requires: []*analysis.Analyzer{
@ -63,7 +63,7 @@ func New(settings *config.GciSettings) *goanalysis.Linter {
var lock sync.Mutex var lock sync.Mutex
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Gci controls Go package import order and makes it always deterministic.", "Gci controls Go package import order and makes it always deterministic.",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -111,7 +111,7 @@ func runGci(pass *analysis.Pass, lintCtx *linter.Context, cfg *gcicfg.Config, lo
continue continue
} }
is, err := internal.ExtractIssuesFromPatch(diff, lintCtx, name, getIssuedTextGci) is, err := internal.ExtractIssuesFromPatch(diff, lintCtx, linterName, getIssuedTextGci)
if err != nil { if err != nil {
return nil, fmt.Errorf("can't extract issues from gci diff output %s: %w", diff, err) return nil, fmt.Errorf("can't extract issues from gci diff output %s: %w", diff, err)
} }

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "gochecknoinits" const linterName = "gochecknoinits"
func New() *goanalysis.Linter { func New() *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
var res []goanalysis.Issue var res []goanalysis.Issue
@ -44,7 +44,7 @@ func New() *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Checks that no init functions are present in Go code", "Checks that no init functions are present in Go code",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -61,12 +61,12 @@ func checkFileForInits(f *ast.File, fset *token.FileSet) []result.Issue {
continue continue
} }
name := funcDecl.Name.Name fnName := funcDecl.Name.Name
if name == "init" && funcDecl.Recv.NumFields() == 0 { if fnName == "init" && funcDecl.Recv.NumFields() == 0 {
res = append(res, result.Issue{ res = append(res, result.Issue{
Pos: fset.Position(funcDecl.Pos()), Pos: fset.Position(funcDecl.Pos()),
Text: fmt.Sprintf("don't use %s function", internal.FormatCode(name, nil)), Text: fmt.Sprintf("don't use %s function", internal.FormatCode(fnName, nil)),
FromLinter: name, FromLinter: linterName,
}) })
} }
} }

View File

@ -13,14 +13,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "gochecksumtype" const linterName = "gochecksumtype"
func New() *goanalysis.Linter { func New() *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runGoCheckSumType(pass) issues, err := runGoCheckSumType(pass)
@ -41,7 +41,7 @@ func New() *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
`Run exhaustiveness checks on Go "sum types"`, `Run exhaustiveness checks on Go "sum types"`,
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -70,7 +70,7 @@ func runGoCheckSumType(pass *analysis.Pass) ([]goanalysis.Issue, error) {
} }
resIssues = append(resIssues, goanalysis.NewIssue(&result.Issue{ resIssues = append(resIssues, goanalysis.NewIssue(&result.Issue{
FromLinter: name, FromLinter: linterName,
Text: strings.TrimPrefix(err.Error(), err.Pos().String()+": "), Text: strings.TrimPrefix(err.Error(), err.Pos().String()+": "),
Pos: err.Pos(), Pos: err.Pos(),
}, pass)) }, pass))

View File

@ -15,7 +15,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "gocognit" const linterName = "gocognit"
func New(settings *config.GocognitSettings) *goanalysis.Linter { func New(settings *config.GocognitSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
@ -40,7 +40,7 @@ func New(settings *config.GocognitSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Computes and checks the cognitive complexity of functions", "Computes and checks the cognitive complexity of functions",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -72,7 +72,7 @@ func runGocognit(pass *analysis.Pass, settings *config.GocognitSettings) []goana
Pos: s.Pos, Pos: s.Pos,
Text: fmt.Sprintf("cognitive complexity %d of func %s is high (> %d)", Text: fmt.Sprintf("cognitive complexity %d of func %s is high (> %d)",
s.Complexity, internal.FormatCode(s.FuncName, nil), settings.MinComplexity), s.Complexity, internal.FormatCode(s.FuncName, nil), settings.MinComplexity),
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "goconst" const linterName = "goconst"
func New(settings *config.GoConstSettings) *goanalysis.Linter { func New(settings *config.GoConstSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runGoconst(pass, settings) issues, err := runGoconst(pass, settings)
@ -42,7 +42,7 @@ func New(settings *config.GoConstSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Finds repeated strings that could be replaced by a constant", "Finds repeated strings that could be replaced by a constant",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -90,7 +90,7 @@ func runGoconst(pass *analysis.Pass, settings *config.GoConstSettings) ([]goanal
res = append(res, goanalysis.NewIssue(&result.Issue{ res = append(res, goanalysis.NewIssue(&result.Issue{
Pos: i.Pos, Pos: i.Pos,
Text: text, Text: text,
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -26,7 +26,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "gocritic" const linterName = "gocritic"
var ( var (
debugf = logutils.Debug(logutils.DebugKeyGoCritic) debugf = logutils.Debug(logutils.DebugKeyGoCritic)
@ -42,7 +42,7 @@ func New(settings *config.GoCriticSettings) *goanalysis.Linter {
} }
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := wrapper.run(pass) issues, err := wrapper.run(pass)
@ -63,7 +63,7 @@ func New(settings *config.GoCriticSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
`Provides diagnostics that check for bugs, performance and style issues. `Provides diagnostics that check for bugs, performance and style issues.
Extensible without recompilation through dynamic rules. Extensible without recompilation through dynamic rules.
Dynamic rules are written declaratively with AST patterns, filters, report message and optional suggestion.`, Dynamic rules are written declaratively with AST patterns, filters, report message and optional suggestion.`,
@ -96,7 +96,7 @@ func (w *goCriticWrapper) init(logger logutils.Log, settings *config.GoCriticSet
w.once.Do(func() { w.once.Do(func() {
err := checkers.InitEmbeddedRules() err := checkers.InitEmbeddedRules()
if err != nil { if err != nil {
logger.Fatalf("%s: %v: setting an explicit GOROOT can fix this problem", name, err) logger.Fatalf("%s: %v: setting an explicit GOROOT can fix this problem", linterName, err)
} }
}) })
@ -105,7 +105,7 @@ func (w *goCriticWrapper) init(logger logutils.Log, settings *config.GoCriticSet
// Validate must be after InferEnabledChecks, not before. // Validate must be after InferEnabledChecks, not before.
// Because it uses gathered information about tags set and finally enabled checks. // Because it uses gathered information about tags set and finally enabled checks.
if err := settingsWrapper.Validate(); err != nil { if err := settingsWrapper.Validate(); err != nil {
logger.Fatalf("%s: invalid settings: %s", name, err) logger.Fatalf("%s: invalid settings: %s", linterName, err)
} }
w.settingsWrapper = settingsWrapper w.settingsWrapper = settingsWrapper
@ -237,7 +237,7 @@ func runOnFile(linterCtx *gocriticlinter.Context, f *ast.File, checks []*gocriti
issue := result.Issue{ issue := result.Issue{
Pos: pos, Pos: pos,
Text: fmt.Sprintf("%s: %s", c.Info.Name, warn.Text), Text: fmt.Sprintf("%s: %s", c.Info.Name, warn.Text),
FromLinter: name, FromLinter: linterName,
} }
if warn.HasQuickFix() { if warn.HasQuickFix() {
@ -358,7 +358,7 @@ func (s *settingsWrapper) InferEnabledChecks() {
for _, check := range s.EnabledChecks { for _, check := range s.EnabledChecks {
if enabledChecks.has(check) { if enabledChecks.has(check) {
s.logger.Warnf("%s: no need to enable check %q: it's already enabled", name, check) s.logger.Warnf("%s: no need to enable check %q: it's already enabled", linterName, check)
continue continue
} }
enabledChecks[check] = struct{}{} enabledChecks[check] = struct{}{}
@ -379,7 +379,7 @@ func (s *settingsWrapper) InferEnabledChecks() {
for _, check := range s.DisabledChecks { for _, check := range s.DisabledChecks {
if !enabledChecks.has(check) { if !enabledChecks.has(check) {
s.logger.Warnf("%s: no need to disable check %q: it's already disabled", name, check) s.logger.Warnf("%s: no need to disable check %q: it's already disabled", linterName, check)
continue continue
} }
delete(enabledChecks, check) delete(enabledChecks, check)
@ -498,13 +498,13 @@ func (s *settingsWrapper) validateOptionsCombinations() error {
func (s *settingsWrapper) validateCheckerTags() error { func (s *settingsWrapper) validateCheckerTags() error {
for _, tag := range s.EnabledTags { for _, tag := range s.EnabledTags {
if !s.allChecksByTag.has(tag) { if !s.allChecksByTag.has(tag) {
return fmt.Errorf("enabled tag %q doesn't exist, see %s's documentation", tag, name) return fmt.Errorf("enabled tag %q doesn't exist, see %s's documentation", tag, linterName)
} }
} }
for _, tag := range s.DisabledTags { for _, tag := range s.DisabledTags {
if !s.allChecksByTag.has(tag) { if !s.allChecksByTag.has(tag) {
return fmt.Errorf("disabled tag %q doesn't exist, see %s's documentation", tag, name) return fmt.Errorf("disabled tag %q doesn't exist, see %s's documentation", tag, linterName)
} }
} }
@ -514,23 +514,23 @@ func (s *settingsWrapper) validateCheckerTags() error {
func (s *settingsWrapper) validateCheckerNames() error { func (s *settingsWrapper) validateCheckerNames() error {
for _, check := range s.EnabledChecks { for _, check := range s.EnabledChecks {
if !s.allChecks.has(check) { if !s.allChecks.has(check) {
return fmt.Errorf("enabled check %q doesn't exist, see %s's documentation", check, name) return fmt.Errorf("enabled check %q doesn't exist, see %s's documentation", check, linterName)
} }
} }
for _, check := range s.DisabledChecks { for _, check := range s.DisabledChecks {
if !s.allChecks.has(check) { if !s.allChecks.has(check) {
return fmt.Errorf("disabled check %q doesn't exist, see %s documentation", check, name) return fmt.Errorf("disabled check %q doesn't exist, see %s documentation", check, linterName)
} }
} }
for check := range s.SettingsPerCheck { for check := range s.SettingsPerCheck {
lcName := strings.ToLower(check) lcName := strings.ToLower(check)
if !s.allChecksLowerCased.has(lcName) { if !s.allChecksLowerCased.has(lcName) {
return fmt.Errorf("invalid check settings: check %q doesn't exist, see %s documentation", check, name) return fmt.Errorf("invalid check settings: check %q doesn't exist, see %s documentation", check, linterName)
} }
if !s.inferredEnabledChecksLowerCased.has(lcName) { if !s.inferredEnabledChecksLowerCased.has(lcName) {
s.logger.Warnf("%s: settings were provided for disabled check %q", check, name) s.logger.Warnf("%s: settings were provided for disabled check %q", check, linterName)
} }
} }

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "gocyclo" const linterName = "gocyclo"
func New(settings *config.GoCycloSettings) *goanalysis.Linter { func New(settings *config.GoCycloSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues := runGoCyclo(pass, settings) issues := runGoCyclo(pass, settings)
@ -39,7 +39,7 @@ func New(settings *config.GoCycloSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Computes and checks the cyclomatic complexity of functions", "Computes and checks the cyclomatic complexity of functions",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -68,7 +68,7 @@ func runGoCyclo(pass *analysis.Pass, settings *config.GoCycloSettings) []goanaly
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
Pos: s.Pos, Pos: s.Pos,
Text: text, Text: text,
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -12,7 +12,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "godot" const linterName = "godot"
func New(settings *config.GodotSettings) *goanalysis.Linter { func New(settings *config.GodotSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
@ -39,7 +39,7 @@ func New(settings *config.GodotSettings) *goanalysis.Linter {
} }
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runGodot(pass, dotSettings) issues, err := runGodot(pass, dotSettings)
@ -60,7 +60,7 @@ func New(settings *config.GodotSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Check if comments end in a period", "Check if comments end in a period",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -88,7 +88,7 @@ func runGodot(pass *analysis.Pass, settings godot.Settings) ([]goanalysis.Issue,
issue := result.Issue{ issue := result.Issue{
Pos: i.Pos, Pos: i.Pos,
Text: i.Message, Text: i.Message,
FromLinter: name, FromLinter: linterName,
Replacement: &result.Replacement{ Replacement: &result.Replacement{
NewLines: []string{i.Replacement}, NewLines: []string{i.Replacement},
}, },

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "godox" const linterName = "godox"
func New(settings *config.GodoxSettings) *goanalysis.Linter { func New(settings *config.GodoxSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues := runGodox(pass, settings) issues := runGodox(pass, settings)
@ -39,7 +39,7 @@ func New(settings *config.GodoxSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Tool for detection of FIXME, TODO and other comment keywords", "Tool for detection of FIXME, TODO and other comment keywords",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -67,7 +67,7 @@ func runGodox(pass *analysis.Pass, settings *config.GodoxSettings) []goanalysis.
Line: i.Pos.Line, Line: i.Pos.Line,
}, },
Text: strings.TrimRight(i.Message, "\n"), Text: strings.TrimRight(i.Message, "\n"),
FromLinter: name, FromLinter: linterName,
}, pass) }, pass)
} }

View File

@ -13,20 +13,20 @@ import (
"github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/lint/linter"
) )
const name = "gofmt" const linterName = "gofmt"
func New(settings *config.GoFmtSettings) *goanalysis.Linter { func New(settings *config.GoFmtSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: goanalysis.DummyRun, Run: goanalysis.DummyRun,
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Gofmt checks whether code was gofmt-ed. By default "+ "Gofmt checks whether code was gofmt-ed. By default "+
"this tool runs with -s option to check for code simplification", "this tool runs with -s option to check for code simplification",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
@ -72,7 +72,7 @@ func runGofmt(lintCtx *linter.Context, pass *analysis.Pass, settings *config.GoF
continue continue
} }
is, err := internal.ExtractIssuesFromPatch(string(diff), lintCtx, name, getIssuedTextGoFmt) is, err := internal.ExtractIssuesFromPatch(string(diff), lintCtx, linterName, getIssuedTextGoFmt)
if err != nil { if err != nil {
return nil, fmt.Errorf("can't extract issues from gofmt diff output %q: %w", string(diff), err) return nil, fmt.Errorf("can't extract issues from gofmt diff output %q: %w", string(diff), err)
} }

View File

@ -17,7 +17,7 @@ import (
"github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/lint/linter"
) )
const name = "gofumpt" const linterName = "gofumpt"
type differ interface { type differ interface {
Diff(out io.Writer, a io.ReadSeeker, b io.ReadSeeker) error Diff(out io.Writer, a io.ReadSeeker, b io.ReadSeeker) error
@ -40,13 +40,13 @@ func New(settings *config.GofumptSettings) *goanalysis.Linter {
} }
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: goanalysis.DummyRun, Run: goanalysis.DummyRun,
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Gofumpt checks whether code was gofumpt-ed.", "Gofumpt checks whether code was gofumpt-ed.",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -97,7 +97,7 @@ func runGofumpt(lintCtx *linter.Context, pass *analysis.Pass, diff differ, optio
} }
diff := out.String() diff := out.String()
is, err := internal.ExtractIssuesFromPatch(diff, lintCtx, name, getIssuedTextGoFumpt) is, err := internal.ExtractIssuesFromPatch(diff, lintCtx, linterName, getIssuedTextGoFumpt)
if err != nil { if err != nil {
return nil, fmt.Errorf("can't extract issues from gofumpt diff output %q: %w", diff, err) return nil, fmt.Errorf("can't extract issues from gofumpt diff output %q: %w", diff, err)
} }

View File

@ -13,7 +13,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "goheader" const linterName = "goheader"
func New(settings *config.GoHeaderSettings) *goanalysis.Linter { func New(settings *config.GoHeaderSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
@ -29,7 +29,7 @@ func New(settings *config.GoHeaderSettings) *goanalysis.Linter {
} }
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runGoHeader(pass, conf) issues, err := runGoHeader(pass, conf)
@ -50,7 +50,7 @@ func New(settings *config.GoHeaderSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Checks is file header matches to pattern", "Checks is file header matches to pattern",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -94,7 +94,7 @@ func runGoHeader(pass *analysis.Pass, conf *goheader.Configuration) ([]goanalysi
Filename: path, Filename: path,
}, },
Text: i.Message(), Text: i.Message(),
FromLinter: name, FromLinter: linterName,
} }
if fix := i.Fix(); fix != nil { if fix := i.Fix(); fix != nil {

View File

@ -14,20 +14,20 @@ import (
"github.com/golangci/golangci-lint/pkg/lint/linter" "github.com/golangci/golangci-lint/pkg/lint/linter"
) )
const name = "goimports" const linterName = "goimports"
func New(settings *config.GoImportsSettings) *goanalysis.Linter { func New(settings *config.GoImportsSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: goanalysis.DummyRun, Run: goanalysis.DummyRun,
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Check import statements are formatted according to the 'goimport' command. "+ "Check import statements are formatted according to the 'goimport' command. "+
"Reformat imports in autofix mode.", "Reformat imports in autofix mode.",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
@ -70,7 +70,7 @@ func runGoImports(lintCtx *linter.Context, pass *analysis.Pass) ([]goanalysis.Is
continue continue
} }
is, err := internal.ExtractIssuesFromPatch(string(diff), lintCtx, name, getIssuedTextGoImports) is, err := internal.ExtractIssuesFromPatch(string(diff), lintCtx, linterName, getIssuedTextGoImports)
if err != nil { if err != nil {
return nil, fmt.Errorf("can't extract issues from gofmt diff output %q: %w", string(diff), err) return nil, fmt.Errorf("can't extract issues from gofmt diff output %q: %w", string(diff), err)
} }

View File

@ -12,7 +12,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "gomoddirectives" const linterName = "gomoddirectives"
func New(settings *config.GoModDirectivesSettings) *goanalysis.Linter { func New(settings *config.GoModDirectivesSettings) *goanalysis.Linter {
var issues []goanalysis.Issue var issues []goanalysis.Issue
@ -33,7 +33,7 @@ func New(settings *config.GoModDirectivesSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod.", "Manage the use of 'replace', 'retract', and 'excludes' directives in go.mod.",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -43,13 +43,13 @@ func New(settings *config.GoModDirectivesSettings) *goanalysis.Linter {
results, err := gomoddirectives.Analyze(opts) results, err := gomoddirectives.Analyze(opts)
if err != nil { if err != nil {
lintCtx.Log.Warnf("running %s failed: %s: "+ lintCtx.Log.Warnf("running %s failed: %s: "+
"if you are not using go modules it is suggested to disable this linter", name, err) "if you are not using go modules it is suggested to disable this linter", linterName, err)
return return
} }
for _, p := range results { for _, p := range results {
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
FromLinter: name, FromLinter: linterName,
Pos: p.Start, Pos: p.Start,
Text: p.Reason, Text: p.Reason,
}, pass)) }, pass))

View File

@ -21,7 +21,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "gosec" const linterName = "gosec"
func New(settings *config.GoSecSettings) *goanalysis.Linter { func New(settings *config.GoSecSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
@ -39,13 +39,13 @@ func New(settings *config.GoSecSettings) *goanalysis.Linter {
ruleDefinitions := rules.Generate(false, filters...) ruleDefinitions := rules.Generate(false, filters...)
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: goanalysis.DummyRun, Run: goanalysis.DummyRun,
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Inspects source code for security problems", "Inspects source code for security problems",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -126,7 +126,7 @@ func runGoSec(lintCtx *linter.Context, pass *analysis.Pass, settings *config.GoS
}, },
Text: text, Text: text,
LineRange: r, LineRange: r,
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -19,7 +19,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "lll" const linterName = "lll"
const goCommentDirectivePrefix = "//go:" const goCommentDirectivePrefix = "//go:"
@ -28,7 +28,7 @@ func New(settings *config.LllSettings) *goanalysis.Linter {
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runLll(pass, settings) issues, err := runLll(pass, settings)
@ -49,7 +49,7 @@ func New(settings *config.LllSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Reports long lines", "Reports long lines",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -122,7 +122,7 @@ func getLLLIssuesForFile(filename string, maxLineLen int, tabSpaces string) ([]r
Line: lineNumber, Line: lineNumber,
}, },
Text: fmt.Sprintf("line is %d characters", lineLen), Text: fmt.Sprintf("line is %d characters", lineLen),
FromLinter: name, FromLinter: linterName,
}) })
} }
} }
@ -146,7 +146,7 @@ func getLLLIssuesForFile(filename string, maxLineLen int, tabSpaces string) ([]r
Column: 1, Column: 1,
}, },
Text: fmt.Sprintf("line is more than %d characters", bufio.MaxScanTokenSize), Text: fmt.Sprintf("line is more than %d characters", bufio.MaxScanTokenSize),
FromLinter: name, FromLinter: linterName,
}) })
} else { } else {
return nil, fmt.Errorf("can't scan file %s: %w", filename, err) return nil, fmt.Errorf("can't scan file %s: %w", filename, err)

View File

@ -13,14 +13,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "makezero" const linterName = "makezero"
func New(settings *config.MakezeroSettings) *goanalysis.Linter { func New(settings *config.MakezeroSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runMakeZero(pass, settings) issues, err := runMakeZero(pass, settings)
@ -41,7 +41,7 @@ func New(settings *config.MakezeroSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Finds slice declarations with non-zero initial length", "Finds slice declarations with non-zero initial length",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -65,7 +65,7 @@ func runMakeZero(pass *analysis.Pass, settings *config.MakezeroSettings) ([]goan
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
Pos: hint.Position(), Pos: hint.Position(),
Text: hint.Details(), Text: hint.Details(),
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }
} }

View File

@ -17,20 +17,20 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "misspell" const linterName = "misspell"
func New(settings *config.MisspellSettings) *goanalysis.Linter { func New(settings *config.MisspellSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: goanalysis.DummyRun, Run: goanalysis.DummyRun,
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Finds commonly misspelled English words", "Finds commonly misspelled English words",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -153,7 +153,7 @@ func runMisspellOnFile(lintCtx *linter.Context, filename string, replacer *missp
res = append(res, result.Issue{ res = append(res, result.Issue{
Pos: pos, Pos: pos,
Text: text, Text: text,
FromLinter: name, FromLinter: linterName,
Replacement: replacement, Replacement: replacement,
}) })
} }

View File

@ -13,7 +13,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "nestif" const linterName = "nestif"
func New(settings *config.NestifSettings) *goanalysis.Linter { func New(settings *config.NestifSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
@ -38,7 +38,7 @@ func New(settings *config.NestifSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Reports deeply nested if statements", "Reports deeply nested if statements",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -70,7 +70,7 @@ func runNestIf(pass *analysis.Pass, settings *config.NestifSettings) []goanalysi
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
Pos: i.Pos, Pos: i.Pos,
Text: i.Message, Text: i.Message,
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const Name = "nolintlint" const LinterName = "nolintlint"
func New(settings *config.NoLintLintSettings) *goanalysis.Linter { func New(settings *config.NoLintLintSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: Name, Name: LinterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues, err := runNoLintLint(pass, settings) issues, err := runNoLintLint(pass, settings)
@ -42,7 +42,7 @@ func New(settings *config.NoLintLintSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
Name, LinterName,
"Reports ill-formed or insufficient nolint directives", "Reports ill-formed or insufficient nolint directives",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -89,7 +89,7 @@ func runNoLintLint(pass *analysis.Pass, settings *config.NoLintLintSettings) ([]
} }
issue := &result.Issue{ issue := &result.Issue{
FromLinter: Name, FromLinter: LinterName,
Text: i.Details(), Text: i.Details(),
Pos: i.Position(), Pos: i.Position(),
ExpectNoLint: expectNoLint, ExpectNoLint: expectNoLint,

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "prealloc" const linterName = "prealloc"
func New(settings *config.PreallocSettings) *goanalysis.Linter { func New(settings *config.PreallocSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues := runPreAlloc(pass, settings) issues := runPreAlloc(pass, settings)
@ -39,7 +39,7 @@ func New(settings *config.PreallocSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Finds slice declarations that could potentially be pre-allocated", "Finds slice declarations that could potentially be pre-allocated",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -57,7 +57,7 @@ func runPreAlloc(pass *analysis.Pass, settings *config.PreallocSettings) []goana
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
Pos: pass.Fset.Position(hint.Pos), Pos: pass.Fset.Position(hint.Pos),
Text: fmt.Sprintf("Consider pre-allocating %s", internal.FormatCode(hint.DeclaredSliceName, nil)), Text: fmt.Sprintf("Consider pre-allocating %s", internal.FormatCode(hint.DeclaredSliceName, nil)),
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -13,7 +13,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "promlinter" const linterName = "promlinter"
func New(settings *config.PromlinterSettings) *goanalysis.Linter { func New(settings *config.PromlinterSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
@ -28,7 +28,7 @@ func New(settings *config.PromlinterSettings) *goanalysis.Linter {
} }
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues := runPromLinter(pass, promSettings) issues := runPromLinter(pass, promSettings)
@ -46,7 +46,7 @@ func New(settings *config.PromlinterSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Check Prometheus metrics naming via promlint", "Check Prometheus metrics naming via promlint",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -67,7 +67,7 @@ func runPromLinter(pass *analysis.Pass, promSettings promlinter.Setting) []goana
issue := result.Issue{ issue := result.Issue{
Pos: i.Pos, Pos: i.Pos,
Text: fmt.Sprintf("Metric: %s Error: %s", i.Metric, i.Text), Text: fmt.Sprintf("Metric: %s Error: %s", i.Metric, i.Text),
FromLinter: name, FromLinter: linterName,
} }
issues[k] = goanalysis.NewIssue(&issue, pass) issues[k] = goanalysis.NewIssue(&issue, pass)

View File

@ -23,7 +23,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "revive" const linterName = "revive"
var debugf = logutils.Debug(logutils.DebugKeyRevive) var debugf = logutils.Debug(logutils.DebugKeyRevive)
@ -44,7 +44,7 @@ func New(settings *config.ReviveSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint.", "Fast, configurable, extensible, flexible, and beautiful linter for Go. Drop-in replacement of golint.",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -151,7 +151,7 @@ func reviveToIssue(pass *analysis.Pass, object *jsonObject) goanalysis.Issue {
From: object.Position.Start.Line, From: object.Position.Start.Line,
To: lineRangeTo, To: lineRangeTo,
}, },
FromLinter: name, FromLinter: linterName,
}, pass) }, pass)
} }

View File

@ -12,14 +12,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "unconvert" const linterName = "unconvert"
func New(settings *config.UnconvertSettings) *goanalysis.Linter { func New(settings *config.UnconvertSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
issues := runUnconvert(pass, settings) issues := runUnconvert(pass, settings)
@ -37,7 +37,7 @@ func New(settings *config.UnconvertSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Remove unnecessary type conversions", "Remove unnecessary type conversions",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -54,7 +54,7 @@ func runUnconvert(pass *analysis.Pass, settings *config.UnconvertSettings) []goa
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
Pos: position, Pos: position,
Text: "unnecessary conversion", Text: "unnecessary conversion",
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -14,14 +14,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "unparam" const linterName = "unparam"
func New(settings *config.UnparamSettings) *goanalysis.Linter { func New(settings *config.UnparamSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: goanalysis.TheOnlyanalyzerDoc, Doc: goanalysis.TheOnlyanalyzerDoc,
Requires: []*analysis.Analyzer{buildssa.Analyzer}, Requires: []*analysis.Analyzer{buildssa.Analyzer},
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
@ -43,7 +43,7 @@ func New(settings *config.UnparamSettings) *goanalysis.Linter {
} }
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Reports unused function parameters", "Reports unused function parameters",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -82,7 +82,7 @@ func runUnparam(pass *analysis.Pass, settings *config.UnparamSettings) ([]goanal
issues = append(issues, goanalysis.NewIssue(&result.Issue{ issues = append(issues, goanalysis.NewIssue(&result.Issue{
Pos: pass.Fset.Position(i.Pos()), Pos: pass.Fset.Position(i.Pos()),
Text: i.Message(), Text: i.Message(),
FromLinter: name, FromLinter: linterName,
}, pass)) }, pass))
} }

View File

@ -17,14 +17,14 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "unused" const linterName = "unused"
func New(settings *config.UnusedSettings, scSettings *config.StaticCheckSettings) *goanalysis.Linter { func New(settings *config.UnusedSettings, scSettings *config.StaticCheckSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
var resIssues []goanalysis.Issue var resIssues []goanalysis.Issue
analyzer := &analysis.Analyzer{ analyzer := &analysis.Analyzer{
Name: name, Name: linterName,
Doc: unused.Analyzer.Analyzer.Doc, Doc: unused.Analyzer.Analyzer.Doc,
Requires: unused.Analyzer.Analyzer.Requires, Requires: unused.Analyzer.Analyzer.Requires,
Run: func(pass *analysis.Pass) (any, error) { Run: func(pass *analysis.Pass) (any, error) {
@ -44,7 +44,7 @@ func New(settings *config.UnusedSettings, scSettings *config.StaticCheckSettings
internal.SetAnalyzerGoVersion(analyzer, internal.GetGoVersion(scSettings)) internal.SetAnalyzerGoVersion(analyzer, internal.GetGoVersion(scSettings))
return goanalysis.NewLinter( return goanalysis.NewLinter(
name, linterName,
"Checks Go code for unused constants, variables, functions and types", "Checks Go code for unused constants, variables, functions and types",
[]*analysis.Analyzer{analyzer}, []*analysis.Analyzer{analyzer},
nil, nil,
@ -75,7 +75,7 @@ func runUnused(pass *analysis.Pass, cfg *config.UnusedSettings) []goanalysis.Iss
} }
issue := goanalysis.NewIssue(&result.Issue{ issue := goanalysis.NewIssue(&result.Issue{
FromLinter: name, FromLinter: linterName,
Text: fmt.Sprintf("%s %s is unused", object.Kind, object.Name), Text: fmt.Sprintf("%s %s is unused", object.Kind, object.Name),
Pos: object.Position, Pos: object.Position,
}, pass) }, pass)

View File

@ -13,7 +13,7 @@ import (
"github.com/golangci/golangci-lint/pkg/result" "github.com/golangci/golangci-lint/pkg/result"
) )
const name = "whitespace" const linterName = "whitespace"
func New(settings *config.WhitespaceSettings) *goanalysis.Linter { func New(settings *config.WhitespaceSettings) *goanalysis.Linter {
var mu sync.Mutex var mu sync.Mutex
@ -63,7 +63,7 @@ func runWhitespace(pass *analysis.Pass, wsSettings whitespace.Settings) ([]goana
issues := make([]goanalysis.Issue, len(lintIssues)) issues := make([]goanalysis.Issue, len(lintIssues))
for i, issue := range lintIssues { for i, issue := range lintIssues {
report := &result.Issue{ report := &result.Issue{
FromLinter: name, FromLinter: linterName,
Pos: pass.Fset.PositionFor(issue.Diagnostic, false), Pos: pass.Fset.PositionFor(issue.Diagnostic, false),
Text: issue.Message, Text: issue.Message,
} }

View File

@ -35,7 +35,7 @@ func (i *ignoredRange) doesMatch(issue *result.Issue) bool {
} }
// only allow selective nolinting of nolintlint // only allow selective nolinting of nolintlint
nolintFoundForLinter := len(i.linters) == 0 && issue.FromLinter != nolintlint.Name nolintFoundForLinter := len(i.linters) == 0 && issue.FromLinter != nolintlint.LinterName
for _, linterName := range i.linters { for _, linterName := range i.linters {
if linterName == issue.FromLinter { if linterName == issue.FromLinter {
@ -50,7 +50,7 @@ func (i *ignoredRange) doesMatch(issue *result.Issue) bool {
// handle possible unused nolint directives // handle possible unused nolint directives
// nolintlint generates potential issues for every nolint directive, and they are filtered out here // nolintlint generates potential issues for every nolint directive, and they are filtered out here
if issue.FromLinter == nolintlint.Name && issue.ExpectNoLint { if issue.FromLinter == nolintlint.LinterName && issue.ExpectNoLint {
if issue.ExpectedNoLintLinter != "" { if issue.ExpectedNoLintLinter != "" {
return i.matchedIssueFromLinter[issue.ExpectedNoLintLinter] return i.matchedIssueFromLinter[issue.ExpectedNoLintLinter]
} }
@ -111,7 +111,7 @@ func (p *Nolint) shouldPassIssue(issue *result.Issue) (bool, error) {
nolintDebugf("got issue: %v", *issue) nolintDebugf("got issue: %v", *issue)
// don't expect disabled linters to cover their nolint statements // don't expect disabled linters to cover their nolint statements
if issue.FromLinter == nolintlint.Name && issue.ExpectNoLint && issue.ExpectedNoLintLinter != "" { if issue.FromLinter == nolintlint.LinterName && issue.ExpectNoLint && issue.ExpectedNoLintLinter != "" {
nolintDebugf("enabled linters: %v", p.enabledLinters) nolintDebugf("enabled linters: %v", p.enabledLinters)
if p.enabledLinters[issue.ExpectedNoLintLinter] == nil { if p.enabledLinters[issue.ExpectedNoLintLinter] == nil {
@ -307,7 +307,7 @@ func (issues sortWithNolintlintLast) Len() int {
} }
func (issues sortWithNolintlintLast) Less(i, j int) bool { func (issues sortWithNolintlintLast) Less(i, j int) bool {
return issues[i].FromLinter != nolintlint.Name && issues[j].FromLinter == nolintlint.Name return issues[i].FromLinter != nolintlint.LinterName && issues[j].FromLinter == nolintlint.LinterName
} }
func (issues sortWithNolintlintLast) Swap(i, j int) { func (issues sortWithNolintlintLast) Swap(i, j int) {

View File

@ -301,7 +301,7 @@ func TestNolintUnused(t *testing.T) {
Filename: fileName, Filename: fileName,
Line: 3, Line: 3,
}, },
FromLinter: nolintlint.Name, FromLinter: nolintlint.LinterName,
ExpectNoLint: true, ExpectNoLint: true,
ExpectedNoLintLinter: "varcheck", ExpectedNoLintLinter: "varcheck",
} }
@ -312,7 +312,7 @@ func TestNolintUnused(t *testing.T) {
Filename: fileName, Filename: fileName,
Line: 5, Line: 5,
}, },
FromLinter: nolintlint.Name, FromLinter: nolintlint.LinterName,
ExpectNoLint: true, ExpectNoLint: true,
ExpectedNoLintLinter: "varcheck", ExpectedNoLintLinter: "varcheck",
} }