Skip to content

Commit b8d5d41

Browse files
committed
chore: migrate forbidigo
1 parent 66c31e6 commit b8d5d41

File tree

1 file changed

+18
-29
lines changed

1 file changed

+18
-29
lines changed

pkg/golinters/forbidigo/forbidigo.go

Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,27 @@ package forbidigo
22

33
import (
44
"fmt"
5-
"sync"
65

76
"github.com/ashanbrown/forbidigo/forbidigo"
87
"golang.org/x/tools/go/analysis"
98

109
"github.com/golangci/golangci-lint/pkg/config"
1110
"github.com/golangci/golangci-lint/pkg/goanalysis"
12-
"github.com/golangci/golangci-lint/pkg/lint/linter"
1311
"github.com/golangci/golangci-lint/pkg/logutils"
14-
"github.com/golangci/golangci-lint/pkg/result"
1512
)
1613

1714
const linterName = "forbidigo"
1815

1916
func New(settings *config.ForbidigoSettings) *goanalysis.Linter {
20-
var mu sync.Mutex
21-
var resIssues []goanalysis.Issue
22-
2317
analyzer := &analysis.Analyzer{
2418
Name: linterName,
2519
Doc: goanalysis.TheOnlyanalyzerDoc,
2620
Run: func(pass *analysis.Pass) (any, error) {
27-
issues, err := runForbidigo(pass, settings)
21+
err := runForbidigo(pass, settings)
2822
if err != nil {
2923
return nil, err
3024
}
3125

32-
if len(issues) == 0 {
33-
return nil, nil
34-
}
35-
36-
mu.Lock()
37-
resIssues = append(resIssues, issues...)
38-
mu.Unlock()
3926
return nil, nil
4027
},
4128
}
@@ -48,12 +35,10 @@ func New(settings *config.ForbidigoSettings) *goanalysis.Linter {
4835
"Forbids identifiers",
4936
[]*analysis.Analyzer{analyzer},
5037
nil,
51-
).WithIssuesReporter(func(*linter.Context) []goanalysis.Issue {
52-
return resIssues
53-
}).WithLoadMode(goanalysis.LoadModeTypesInfo)
38+
).WithLoadMode(goanalysis.LoadModeTypesInfo)
5439
}
5540

56-
func runForbidigo(pass *analysis.Pass, settings *config.ForbidigoSettings) ([]goanalysis.Issue, error) {
41+
func runForbidigo(pass *analysis.Pass, settings *config.ForbidigoSettings) error {
5742
options := []forbidigo.Option{
5843
forbidigo.OptionExcludeGodocExamples(settings.ExcludeGodocExamples),
5944
// disable "//permit" directives so only "//nolint" directives matters within golangci-lint
@@ -66,38 +51,42 @@ func runForbidigo(pass *analysis.Pass, settings *config.ForbidigoSettings) ([]go
6651
for _, pattern := range settings.Forbid {
6752
buffer, err := pattern.MarshalString()
6853
if err != nil {
69-
return nil, err
54+
return err
7055
}
56+
7157
patterns = append(patterns, string(buffer))
7258
}
7359

7460
forbid, err := forbidigo.NewLinter(patterns, options...)
7561
if err != nil {
76-
return nil, fmt.Errorf("failed to create linter %q: %w", linterName, err)
62+
return fmt.Errorf("failed to create linter %q: %w", linterName, err)
7763
}
7864

79-
var issues []goanalysis.Issue
8065
for _, file := range pass.Files {
8166
runConfig := forbidigo.RunConfig{
8267
Fset: pass.Fset,
8368
DebugLog: logutils.Debug(logutils.DebugKeyForbidigo),
8469
}
85-
if settings != nil && settings.AnalyzeTypes {
70+
71+
if settings.AnalyzeTypes {
8672
runConfig.TypesInfo = pass.TypesInfo
8773
}
74+
8875
hints, err := forbid.RunWithConfig(runConfig, file)
8976
if err != nil {
90-
return nil, fmt.Errorf("forbidigo linter failed on file %q: %w", file.Name.String(), err)
77+
return fmt.Errorf("forbidigo linter failed on file %q: %w", file.Name.String(), err)
9178
}
9279

9380
for _, hint := range hints {
94-
issues = append(issues, goanalysis.NewIssue(&result.Issue{
95-
Pos: hint.Position(),
96-
Text: hint.Details(),
97-
FromLinter: linterName,
98-
}, pass))
81+
pass.Report(analysis.Diagnostic{
82+
Pos: hint.Pos(),
83+
Message: hint.Details(),
84+
URL: "",
85+
SuggestedFixes: nil,
86+
Related: nil,
87+
})
9988
}
10089
}
10190

102-
return issues, nil
91+
return nil
10392
}

0 commit comments

Comments
 (0)