-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlinter.go
48 lines (37 loc) · 958 Bytes
/
linter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package nilnesserr
import (
"golang.org/x/tools/go/analysis"
"golang.org/x/tools/go/analysis/passes/buildssa"
)
const (
linterName = "nilnesserr"
linterDoc = `Reports constructs that checks for err != nil, but returns a different nil value error.
Powered by nilness and nilerr.`
linterMessage = "return a nil value error after check error"
)
type LinterSetting struct{}
func NewAnalyzer(setting LinterSetting) (*analysis.Analyzer, error) {
a, err := newAnalyzer(setting)
if err != nil {
return nil, err
}
return &analysis.Analyzer{
Name: linterName,
Doc: linterDoc,
Run: a.run,
Requires: []*analysis.Analyzer{
buildssa.Analyzer,
},
}, nil
}
type analyzer struct {
setting LinterSetting
}
func newAnalyzer(setting LinterSetting) (*analyzer, error) {
a := &analyzer{setting: setting}
return a, nil
}
func (a *analyzer) run(pass *analysis.Pass) (interface{}, error) {
_, _ = a.checkNilnesserr(pass)
return nil, nil
}