@@ -2,40 +2,26 @@ package makezero
2
2
3
3
import (
4
4
"fmt"
5
- "sync"
6
5
7
6
"github.com/ashanbrown/makezero/makezero"
8
7
"golang.org/x/tools/go/analysis"
9
8
10
9
"github.com/golangci/golangci-lint/pkg/config"
11
10
"github.com/golangci/golangci-lint/pkg/goanalysis"
12
- "github.com/golangci/golangci-lint/pkg/lint/linter"
13
- "github.com/golangci/golangci-lint/pkg/result"
14
11
)
15
12
16
13
const linterName = "makezero"
17
14
18
15
func New (settings * config.MakezeroSettings ) * goanalysis.Linter {
19
- var mu sync.Mutex
20
- var resIssues []goanalysis.Issue
21
-
22
16
analyzer := & analysis.Analyzer {
23
17
Name : linterName ,
24
18
Doc : goanalysis .TheOnlyanalyzerDoc ,
25
19
Run : func (pass * analysis.Pass ) (any , error ) {
26
- issues , err := runMakeZero (pass , settings )
20
+ err := runMakeZero (pass , settings )
27
21
if err != nil {
28
22
return nil , err
29
23
}
30
24
31
- if len (issues ) == 0 {
32
- return nil , nil
33
- }
34
-
35
- mu .Lock ()
36
- resIssues = append (resIssues , issues ... )
37
- mu .Unlock ()
38
-
39
25
return nil , nil
40
26
},
41
27
}
@@ -45,30 +31,25 @@ func New(settings *config.MakezeroSettings) *goanalysis.Linter {
45
31
"Finds slice declarations with non-zero initial length" ,
46
32
[]* analysis.Analyzer {analyzer },
47
33
nil ,
48
- ).WithIssuesReporter (func (* linter.Context ) []goanalysis.Issue {
49
- return resIssues
50
- }).WithLoadMode (goanalysis .LoadModeTypesInfo )
34
+ ).WithLoadMode (goanalysis .LoadModeTypesInfo )
51
35
}
52
36
53
- func runMakeZero (pass * analysis.Pass , settings * config.MakezeroSettings ) ([]goanalysis. Issue , error ) {
37
+ func runMakeZero (pass * analysis.Pass , settings * config.MakezeroSettings ) error {
54
38
zero := makezero .NewLinter (settings .Always )
55
39
56
- var issues []goanalysis.Issue
57
-
58
40
for _ , file := range pass .Files {
59
41
hints , err := zero .Run (pass .Fset , pass .TypesInfo , file )
60
42
if err != nil {
61
- return nil , fmt .Errorf ("makezero linter failed on file %q: %w" , file .Name .String (), err )
43
+ return fmt .Errorf ("makezero linter failed on file %q: %w" , file .Name .String (), err )
62
44
}
63
45
64
46
for _ , hint := range hints {
65
- issues = append (issues , goanalysis .NewIssue (& result.Issue {
66
- Pos : hint .Position (),
67
- Text : hint .Details (),
68
- FromLinter : linterName ,
69
- }, pass ))
47
+ pass .Report (analysis.Diagnostic {
48
+ Pos : hint .Pos (),
49
+ Message : hint .Details (),
50
+ })
70
51
}
71
52
}
72
53
73
- return issues , nil
54
+ return nil
74
55
}
0 commit comments