Skip to content

Commit d770f83

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

File tree

12 files changed

+68
-34
lines changed

12 files changed

+68
-34
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

+3-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ require (
1414
github.com/gofrs/flock v0.7.1
1515
github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2
1616
github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a
17-
github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6
1817
github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613
1918
github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3
2019
github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d
@@ -28,6 +27,7 @@ require (
2827
github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4
2928
github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a
3029
github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3
30+
github.com/kisielk/errcheck v1.4.1-0.20200802052755-ea6ea2fa7078
3131
github.com/kyoh86/exportloopref v0.1.7
3232
github.com/maratori/testpackage v1.0.1
3333
github.com/matoous/godox v0.0.0-20190911065817-5d6d842e92eb // v1.0
@@ -66,3 +66,5 @@ require (
6666
mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect
6767
mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f
6868
)
69+
70+
replace github.com/kisielk/errcheck => /Users/[email protected]/icloud/projects/errcheck

go.sum

+5-4
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,14 +197,14 @@ 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=
204204
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
205205
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
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=
208-
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
209208
github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
210209
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
211210
github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
@@ -221,6 +220,7 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
221220
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
222221
github.com/kyoh86/exportloopref v0.1.7 h1:u+iHuTbkbTS2D/JP7fCuZDo/t3rBVGo3Hf58Rc+lQVY=
223222
github.com/kyoh86/exportloopref v0.1.7/go.mod h1:h1rDl2Kdj97+Kwh4gdz3ujE7XHmH51Q0lUiZ1z4NLj8=
223+
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
224224
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
225225
github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
226226
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -239,6 +239,7 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd
239239
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
240240
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
241241
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
242+
github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4=
242243
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
243244
github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
244245
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
@@ -493,7 +494,6 @@ golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
493494
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
494495
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
495496
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
496-
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
497497
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
498498
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
499499
golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -526,6 +526,7 @@ golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWc
526526
golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
527527
golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
528528
golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
529+
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
529530
golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
530531
golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
531532
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

+32-20
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ 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"
16+
"golang.org/x/tools/go/packages"
1617

1718
"github.com/golangci/golangci-lint/pkg/config"
1819
"github.com/golangci/golangci-lint/pkg/fsutils"
@@ -36,17 +37,23 @@ func NewErrcheck() *goanalysis.Linter {
3637
[]*analysis.Analyzer{analyzer},
3738
nil,
3839
).WithContextSetter(func(lintCtx *linter.Context) {
40+
// copied from errcheck
41+
checker, err := getChecker(&lintCtx.Settings().Errcheck)
42+
if err != nil {
43+
panic(err.Error())
44+
}
45+
checker.Verbose = lintCtx.Cfg.Run.IsVerbose
46+
checker.Tags = lintCtx.Cfg.Run.BuildTags
47+
3948
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)
46-
if err != nil {
47-
return nil, err
49+
pkg := &packages.Package{
50+
Fset: pass.Fset,
51+
Syntax: pass.Files,
52+
Types: pass.Pkg,
53+
TypesInfo: pass.TypesInfo,
4854
}
4955

56+
errcheckIssues := checker.CheckPackage(pkg)
5057
if len(errcheckIssues) == 0 {
5158
return nil, nil
5259
}
@@ -104,27 +111,32 @@ func parseIgnoreConfig(s string) (map[string]*regexp.Regexp, error) {
104111
return cfg, nil
105112
}
106113

107-
func genConfig(errCfg *config.ErrcheckSettings) (*errcheck.Config, error) {
114+
func getChecker(errCfg *config.ErrcheckSettings) (*errcheck.Checker, error) {
115+
checker := errcheck.NewChecker()
116+
checker.Blank = errCfg.CheckAssignToBlank
117+
checker.Asserts = errCfg.CheckTypeAssertions
118+
108119
ignoreConfig, err := parseIgnoreConfig(errCfg.Ignore)
109120
if err != nil {
110121
return nil, errors.Wrap(err, "failed to parse 'ignore' directive")
111122
}
112123

113-
c := &errcheck.Config{
114-
Ignore: ignoreConfig,
115-
Blank: errCfg.CheckAssignToBlank,
116-
Asserts: errCfg.CheckTypeAssertions,
124+
checker.Ignore = map[string]*regexp.Regexp{}
125+
for pkg, re := range ignoreConfig {
126+
checker.Ignore[pkg] = re
117127
}
128+
checker.UpdateNonVendoredIgnore()
118129

130+
checker.AddExcludes(errcheck.DefaultExcludes)
119131
if errCfg.Exclude != "" {
120132
exclude, err := readExcludeFile(errCfg.Exclude)
121133
if err != nil {
122134
return nil, err
123135
}
124-
c.Exclude = exclude
136+
checker.AddExcludes(exclude)
125137
}
126138

127-
return c, nil
139+
return checker, nil
128140
}
129141

130142
func getFirstPathArg() string {
@@ -192,7 +204,7 @@ func setupConfigFileSearch(name string) []string {
192204
return configSearchPaths
193205
}
194206

195-
func readExcludeFile(name string) (map[string]bool, error) {
207+
func readExcludeFile(name string) ([]string, error) {
196208
var err error
197209
var fh *os.File
198210

@@ -206,12 +218,12 @@ func readExcludeFile(name string) (map[string]bool, error) {
206218
return nil, errors.Wrapf(err, "failed reading exclude file: %s", name)
207219
}
208220
scanner := bufio.NewScanner(fh)
209-
exclude := make(map[string]bool)
221+
excludes := []string{}
210222
for scanner.Scan() {
211-
exclude[scanner.Text()] = true
223+
excludes = append(excludes, scanner.Text())
212224
}
213225
if err := scanner.Err(); err != nil {
214226
return nil, errors.Wrapf(err, "failed scanning file: %s", name)
215227
}
216-
return exclude, nil
228+
return excludes, nil
217229
}

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)