Skip to content

Commit 2f11046

Browse files
author
Sergey Vilgelm
committed
Use errcheck from main repo instead of golangci-lint
1 parent 6ac41d9 commit 2f11046

File tree

12 files changed

+89
-30
lines changed

12 files changed

+89
-30
lines changed

.github/workflows/pr.yml

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ jobs:
1818
uses: golangci/golangci-lint-action@v2
1919
with:
2020
version: latest
21+
args: --verbose
2122
tests-on-windows:
2223
needs: golangci-lint # run after golangci-lint action to not produce duplicated errors
2324
runs-on: windows-latest

go.mod

+4-1
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ require (
1010
github.com/denis-tingajkin/go-header v0.3.1
1111
github.com/fatih/color v1.9.0
1212
github.com/go-critic/go-critic v0.5.2
13+
github.com/go-sql-driver/mysql v1.4.0
1314
github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b
1415
github.com/gofrs/flock v0.7.1
1516
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2
1617
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a
17-
github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6
1818
github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613
1919
github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3
2020
github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d
@@ -28,6 +28,8 @@ require (
2828
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4
2929
github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a
3030
github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3
31+
github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5
32+
github.com/kisielk/errcheck v1.4.1-0.20200802052755-ea6ea2fa7078
3133
github.com/kyoh86/exportloopref v0.1.7
3234
github.com/maratori/testpackage v1.0.1
3335
github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb // v1.0
@@ -58,6 +60,7 @@ require (
5860
github.com/ultraware/whitespace v0.0.4
5961
github.com/uudashr/gocognit v1.0.1
6062
github.com/valyala/quicktemplate v1.6.2
63+
golang.org/x/mod v0.3.0
6164
golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0
6265
gopkg.in/yaml.v2 v2.3.0
6366
honnef.co/go/tools v0.0.1-2020.1.5

go.sum

+7-2
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9
7171
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
7272
github.com/go-ole/go-ole v1.2.1 h1:2lOsA72HgjxAuMlKpFiCbHTvu44PIVkZ5hqm3RSdI/E=
7373
github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8=
74+
github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk=
7475
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
7576
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
7677
github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g=
@@ -119,8 +120,6 @@ github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5
119120
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4=
120121
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM=
121122
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk=
122-
github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6 h1:YYWNAGTKWhKpcLLt7aSj/odlKrSrelQwlovBpDuf19w=
123-
github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0=
124123
github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw=
125124
github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8=
126125
github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3 h1:pe9JHs3cHHDQgOFXJJdYkK6fLz2PWyYtP4hthoCMvs8=
@@ -198,6 +197,7 @@ github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:x
198197
github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3 h1:jNYPNLe3d8smommaoQlK7LOA5ESyUJJ+Wf79ZtA7Vp4=
199198
github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
200199
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
200+
github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5 h1:lrdPtrORjGv1HbbEvKWDUAy97mPpFm4B8hp77tcCUJY=
201201
github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
202202
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
203203
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -206,6 +206,8 @@ github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7
206206
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
207207
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
208208
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
209+
github.com/kisielk/errcheck v1.4.1-0.20200802052755-ea6ea2fa7078 h1:BTfWvMKY1WnExyxzpllp0m1exETxcmySFIvqQxkXqjM=
210+
github.com/kisielk/errcheck v1.4.1-0.20200802052755-ea6ea2fa7078/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
209211
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
210212
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
211213
github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
@@ -221,6 +223,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
221223
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
222224
github.com/kyoh86/exportloopref v0.1.7 h1:u+iHuTbkbTS2D/JP7fCuZDo/t3rBVGo3Hf58Rc+lQVY=
223225
github.com/kyoh86/exportloopref v0.1.7/go.mod h1:h1rDl2Kdj97+Kwh4gdz3ujE7XHmH51Q0lUiZ1z4NLj8=
226+
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
224227
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
225228
github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
226229
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -239,6 +242,7 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
239242
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
240243
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
241244
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
245+
github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4=
242246
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
243247
github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
244248
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
@@ -526,6 +530,7 @@ golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWc
526530
golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
527531
golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
528532
golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
533+
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
529534
golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
530535
golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
531536
golang.org/x/tools v0.0.0-20200701041122-1837592efa10/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=

pkg/commands/executor.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,9 @@ func computeConfigSalt(cfg *config.Config) ([]byte, error) {
205205
configData.WriteString("\nbuild-tags=%s" + strings.Join(cfg.Run.BuildTags, ","))
206206

207207
h := sha256.New()
208-
h.Write(configData.Bytes()) //nolint:errcheck
208+
if _, err := h.Write(configData.Bytes()); err != nil {
209+
return nil, err
210+
}
209211
return h.Sum(nil), nil
210212
}
211213

pkg/golinters/errcheck.go

+50-18
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"strings"
1111
"sync"
1212

13-
errcheck "github.com/golangci/errcheck/golangci"
13+
"github.com/kisielk/errcheck/errcheck"
1414
"github.com/pkg/errors"
1515
"golang.org/x/tools/go/analysis"
1616

@@ -36,13 +36,15 @@ func NewErrcheck() *goanalysis.Linter {
3636
[]*analysis.Analyzer{analyzer},
3737
nil,
3838
).WithContextSetter(func(lintCtx *linter.Context) {
39+
checker, err := getChecker(&lintCtx.Settings().Errcheck)
40+
if err != nil {
41+
panic(err.Error())
42+
}
43+
checker.Verbose = lintCtx.Cfg.Run.IsVerbose
44+
checker.Tags = lintCtx.Cfg.Run.BuildTags
45+
3946
analyzer.Run = func(pass *analysis.Pass) (interface{}, error) {
40-
prog := goanalysis.MakeFakeLoaderProgram(pass)
41-
errCfg, err := genConfig(&lintCtx.Settings().Errcheck)
42-
if err != nil {
43-
return nil, err
44-
}
45-
errcheckIssues, err := errcheck.RunWithConfig(prog, errCfg)
47+
errcheckIssues, err := errcheckRunWithConfig(pass, checker)
4648
if err != nil {
4749
return nil, err
4850
}
@@ -75,6 +77,32 @@ func NewErrcheck() *goanalysis.Linter {
7577
}).WithLoadMode(goanalysis.LoadModeTypesInfo)
7678
}
7779

80+
type errcheckIssue errcheck.UncheckedError
81+
82+
func errcheckMakeIssues(e *errcheck.UncheckedErrors) []errcheckIssue {
83+
var ret []errcheckIssue
84+
for _, uncheckedError := range e.Errors {
85+
ret = append(ret, errcheckIssue(uncheckedError))
86+
}
87+
88+
return ret
89+
}
90+
91+
func errcheckRunWithConfig(pass *analysis.Pass, c *errcheck.Checker) ([]errcheckIssue, error) {
92+
if err := c.CheckPackages(pass.Pkg.Path()); err != nil {
93+
if e, ok := err.(*errcheck.UncheckedErrors); ok {
94+
return errcheckMakeIssues(e), nil
95+
}
96+
if err == errcheck.ErrNoGoFiles {
97+
return nil, nil
98+
}
99+
100+
return nil, err
101+
}
102+
// no issues
103+
return nil, nil
104+
}
105+
78106
// parseIgnoreConfig was taken from errcheck in order to keep the API identical.
79107
// https://github.com/kisielk/errcheck/blob/1787c4bee836470bf45018cfbc783650db3c6501/main.go#L25-L60
80108
func parseIgnoreConfig(s string) (map[string]*regexp.Regexp, error) {
@@ -104,27 +132,31 @@ func parseIgnoreConfig(s string) (map[string]*regexp.Regexp, error) {
104132
return cfg, nil
105133
}
106134

107-
func genConfig(errCfg *config.ErrcheckSettings) (*errcheck.Config, error) {
135+
func getChecker(errCfg *config.ErrcheckSettings) (*errcheck.Checker, error) {
136+
checker := errcheck.NewChecker()
137+
checker.Blank = errCfg.CheckAssignToBlank
138+
checker.Asserts = errCfg.CheckTypeAssertions
139+
108140
ignoreConfig, err := parseIgnoreConfig(errCfg.Ignore)
109141
if err != nil {
110142
return nil, errors.Wrap(err, "failed to parse 'ignore' directive")
111143
}
112144

113-
c := &errcheck.Config{
114-
Ignore: ignoreConfig,
115-
Blank: errCfg.CheckAssignToBlank,
116-
Asserts: errCfg.CheckTypeAssertions,
145+
checker.Ignore = map[string]*regexp.Regexp{}
146+
for pkg, re := range ignoreConfig {
147+
checker.Ignore[pkg] = re
117148
}
118149

150+
checker.AddExcludes(errcheck.DefaultExcludes)
119151
if errCfg.Exclude != "" {
120152
exclude, err := readExcludeFile(errCfg.Exclude)
121153
if err != nil {
122154
return nil, err
123155
}
124-
c.Exclude = exclude
156+
checker.AddExcludes(exclude)
125157
}
126158

127-
return c, nil
159+
return checker, nil
128160
}
129161

130162
func getFirstPathArg() string {
@@ -192,7 +224,7 @@ func setupConfigFileSearch(name string) []string {
192224
return configSearchPaths
193225
}
194226

195-
func readExcludeFile(name string) (map[string]bool, error) {
227+
func readExcludeFile(name string) ([]string, error) {
196228
var err error
197229
var fh *os.File
198230

@@ -206,12 +238,12 @@ func readExcludeFile(name string) (map[string]bool, error) {
206238
return nil, errors.Wrapf(err, "failed reading exclude file: %s", name)
207239
}
208240
scanner := bufio.NewScanner(fh)
209-
exclude := make(map[string]bool)
241+
excludes := []string{}
210242
for scanner.Scan() {
211-
exclude[scanner.Text()] = true
243+
excludes = append(excludes, scanner.Text())
212244
}
213245
if err := scanner.Err(); err != nil {
214246
return nil, errors.Wrapf(err, "failed scanning file: %s", name)
215247
}
216-
return exclude, nil
248+
return excludes, nil
217249
}

scripts/expand_website_templates/main.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,9 @@ func updateStateFile(replacements map[string]string) error {
5454
}
5555

5656
h := sha256.New()
57-
h.Write(replBytes) //nolint:errcheck
57+
if _, err := h.Write(replBytes); err != nil {
58+
return err
59+
}
5860

5961
var contentBuf bytes.Buffer
6062
contentBuf.WriteString("This file stores hash of website templates to trigger " +

test/run_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func TestSortedResults(t *testing.T) {
135135
"--sort-results=false",
136136
strings.Join([]string{
137137
"testdata/sort_results/main.go:12:5: `db` is unused (deadcode)",
138-
"testdata/sort_results/main.go:15:13: Error return value of `returnError` is not checked (errcheck)",
138+
"testdata/sort_results/main.go:15:13: Error return value is not checked (errcheck)",
139139
"testdata/sort_results/main.go:8:6: func `returnError` is unused (unused)",
140140
}, "\n"),
141141
},
@@ -144,7 +144,7 @@ func TestSortedResults(t *testing.T) {
144144
strings.Join([]string{
145145
"testdata/sort_results/main.go:8:6: func `returnError` is unused (unused)",
146146
"testdata/sort_results/main.go:12:5: `db` is unused (deadcode)",
147-
"testdata/sort_results/main.go:15:13: Error return value of `returnError` is not checked (errcheck)",
147+
"testdata/sort_results/main.go:15:13: Error return value is not checked (errcheck)",
148148
}, "\n"),
149149
},
150150
}

test/testdata/errcheck.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ func RetErr() error {
1212
}
1313

1414
func MissedErrorCheck() {
15-
RetErr() // ERROR "Error return value of `RetErr` is not checked"
15+
RetErr() // ERROR "Error return value is not checked"
1616
}
1717

1818
func IgnoreCloseMissingErrHandling() error {

test/testdata/errcheck_exclude.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ func TestErrcheckExclude() []byte {
1313
}
1414

1515
func TestErrcheckNoExclude() []byte {
16-
ret, _ := ioutil.ReadAll(nil) // ERROR "Error return value of `ioutil.ReadAll` is not checked"
16+
ret, _ := ioutil.ReadAll(nil) // ERROR "Error return value is not checked"
1717
return ret
1818
}

test/testdata/errcheck_ignore.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func TestErrcheckIgnoreOs() {
1313
}
1414

1515
func TestErrcheckNoIgnoreFmt(s string) int {
16-
n, _ := fmt.Println(s) // ERROR "Error return value of `fmt.Println` is not checked"
16+
n, _ := fmt.Println(s) // ERROR "Error return value is not checked"
1717
return n
1818
}
1919

@@ -23,6 +23,6 @@ func TestErrcheckIgnoreIoutil() []byte {
2323
}
2424

2525
func TestErrcheckNoIgnoreIoutil() []byte {
26-
ret, _ := ioutil.ReadAll(nil) // ERROR "Error return value of `ioutil.ReadAll` is not checked"
26+
ret, _ := ioutil.ReadAll(nil) // ERROR "Error return value is not checked"
2727
return ret
2828
}

test/testdata/errcheck_ignore_default.go

+8-1
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,22 @@
33
package testdata
44

55
import (
6+
"crypto/sha256"
67
"fmt"
78
"os"
89
)
910

11+
func TestErrcheckIgnoreHashWriteByDefault() []byte {
12+
h := sha256.New()
13+
h.Write([]byte("food"))
14+
return h.Sum(nil)
15+
}
16+
1017
func TestErrcheckIgnoreFmtByDefault(s string) int {
1118
n, _ := fmt.Println(s)
1219
return n
1320
}
1421

1522
func TestErrcheckNoIgnoreOs() {
16-
_, _ = os.Open("f.txt") // ERROR "Error return value of `os.Open` is not checked"
23+
_, _ = os.Open("f.txt") // ERROR "Error return value is not checked"
1724
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//args: -Eerrcheck
2+
//config: linters-settings.errcheck.check-type-assertions=true
3+
package testdata
4+
5+
func ErrorTypeAssertion(filter map[string]interface{}) bool {
6+
return filter["messages_sent.messageid"].(map[string]interface{})["$ne"] != nil
7+
}

0 commit comments

Comments
 (0)