Djarvur / go-err113

Golang linter to check the errors handling expressions
MIT License
45 stars 4 forks source link

Issue with -fix flag #15

Closed sayboras closed 3 years ago

sayboras commented 3 years ago

While running go-err113 with -fix flag, I got weird replacement, some can be listed as below:

err == http.ErrServerClosed -> errors.Is(err, &{http ErrServerClosed})
ctx.Err() == context.DeadlineExceeded -> errors.Is(&{%!s(*ast.SelectorExpr=&{0xc005394f00 0xc005394f20}) %!s(token.Pos=67939731) [] %!s(token.Pos=0) %!s(token.Pos=67939732)}, &{context DeadlineExceeded})
onokonem commented 3 years ago

thank you for the bug-report, I'll take a look ASAP

sayboras commented 3 years ago

@onokonem no worry and no hurry :), thanks for creating this tool :100:

I have sometime to give it a try, not too bad though

Testing with changes ``` $ err113 -fix ./... api/v1/health/server/server.go:200:51: do not compare errors directly "err != http.ErrServerClosed", use "!errors.Is(err, http.ErrServerClosed)" instead api/v1/health/server/server.go:230:49: do not compare errors directly "err != http.ErrServerClosed", use "!errors.Is(err, http.ErrServerClosed)" instead api/v1/health/server/server.go:326:50: do not compare errors directly "err != http.ErrServerClosed", use "!errors.Is(err, http.ErrServerClosed)" instead pkg/client/client.go:151:5: do not compare errors directly "err == context.DeadlineExceeded", use "errors.Is(err, context.DeadlineExceeded)" instead api/v1/server/server.go:200:51: do not compare errors directly "err != http.ErrServerClosed", use "!errors.Is(err, http.ErrServerClosed)" instead api/v1/server/server.go:230:49: do not compare errors directly "err != http.ErrServerClosed", use "!errors.Is(err, http.ErrServerClosed)" instead api/v1/server/server.go:326:50: do not compare errors directly "err != http.ErrServerClosed", use "!errors.Is(err, http.ErrServerClosed)" instead bugtool/cmd/root.go:339:5: do not compare errors directly "ctx.Err() == context.DeadlineExceeded", use "errors.Is(ctx.Err, context.DeadlineExceeded)" instead bugtool/cmd/root.go:372:45: do not compare errors directly "ctx.Err() == context.DeadlineExceeded", use "errors.Is(ctx.Err, context.DeadlineExceeded)" instead pkg/kvstore/etcd.go:351:5: do not compare errors directly "err == v3rpcErrors.ErrLeaseNotFound", use "errors.Is(err, v3rpcErrors.ErrLeaseNotFound)" instead pkg/kvstore/etcd.go:362:5: do not compare errors directly "err == v3rpcErrors.ErrLeaseNotFound", use "errors.Is(err, v3rpcErrors.ErrLeaseNotFound)" instead pkg/kvstore/etcd.go:980:9: do not compare errors directly "err == v3rpcErrors.ErrCompacted", use "errors.Is(err, v3rpcErrors.ErrCompacted)" instead pkg/mountinfo/mountinfo.go:147:6: do not compare errors directly "err == unix.ENOENT", use "errors.Is(err, unix.ENOENT)" instead pkg/k8s/informer/informer.go:37:7: do not compare errors directly "r == http.ErrAbortHandler", use "errors.Is(r, http.ErrAbortHandler)" instead cilium/cmd/monitor.go:273:23: do not compare errors directly "err == io.ErrUnexpectedEOF", use "errors.Is(err, io.ErrUnexpectedEOF)" instead pkg/completion/completion.go:84:19: do not compare errors directly "old == context.DeadlineExceeded", use "errors.Is(old, context.DeadlineExceeded)" instead pkg/completion/completion.go:84:55: do not compare errors directly "old == context.Canceled", use "errors.Is(old, context.Canceled)" instead pkg/completion/completion.go:84:82: do not compare errors directly "new != context.DeadlineExceeded", use "!errors.Is(new, context.DeadlineExceeded)" instead pkg/probe/probe.go:88:5: do not compare errors directly "err == unix.EAFNOSUPPORT", use "errors.Is(err, unix.EAFNOSUPPORT)" instead pkg/probe/probe.go:88:33: do not compare errors directly "err == unix.EPROTONOSUPPORT", use "errors.Is(err, unix.EPROTONOSUPPORT)" instead pkg/datapath/linux/node.go:892:29: do not compare errors directly "err != unix.EAFNOSUPPORT", use "!errors.Is(err, unix.EAFNOSUPPORT)" instead pkg/datapath/linux/node.go:899:29: do not compare errors directly "err != unix.EAFNOSUPPORT", use "!errors.Is(err, unix.EAFNOSUPPORT)" instead pkg/datapath/linux/requirements.go:121:5: do not compare errors directly "err == unix.EAFNOSUPPORT", use "errors.Is(err, unix.EAFNOSUPPORT)" instead pkg/endpointmanager/errors.go:40:9: do not compare errors directly "err == ErrUnsupportedID", use "errors.Is(err, ErrUnsupportedID)" instead pkg/endpointmanager/manager.go:509:5: do not compare errors directly "newCtx.Err() == context.DeadlineExceeded", use "errors.Is(newCtx.Err, context.DeadlineExceeded)" instead pkg/envoy/xds/stream.go:61:6: do not compare errors directly "subCtx.Err() == context.Canceled", use "errors.Is(subCtx.Err, context.Canceled)" instead pkg/envoy/xds/stream.go:77:6: do not compare errors directly "subCtx.Err() == context.Canceled", use "errors.Is(subCtx.Err, context.Canceled)" instead pkg/envoy/xds/stream.go:94:6: do not compare errors directly "subCtx.Err() == context.Canceled", use "errors.Is(subCtx.Err, context.Canceled)" instead pkg/envoy/xds/stream.go:111:6: do not compare errors directly "subCtx.Err() == context.Canceled", use "errors.Is(subCtx.Err, context.Canceled)" instead pkg/hubble/observer/local_observer.go:392:8: do not compare errors directly "err == container.ErrInvalidRead", use "errors.Is(err, container.ErrInvalidRead)" instead pkg/hubble/observer/local_observer.go:467:6: do not compare errors directly "err == container.ErrInvalidRead", use "errors.Is(err, container.ErrInvalidRead)" instead pkg/k8s/watchers/pod.go:203:6: do not compare errors directly "err == errIPCacheOwnedByNonK8s", use "errors.Is(err, errIPCacheOwnedByNonK8s)" instead pkg/service/healthserver/healthserver.go:192:35: do not compare errors directly "err != http.ErrServerClosed", use "!errors.Is(err, http.ErrServerClosed)" instead daemon/cmd/agenthealth.go:82:6: do not compare errors directly "err == http.ErrServerClosed", use "errors.Is(err, http.ErrServerClosed)" instead proxylib/npds/client.go:189:23: do not compare errors directly "err == io.ErrUnexpectedEOF", use "errors.Is(err, io.ErrUnexpectedEOF)" instead pkg/hubble/container/ring_reader_test.go:97:8: do not compare errors directly "err != tt.wantErr", use "!errors.Is(err, tt.wantErr)" instead pkg/hubble/container/ring_reader_test.go:168:8: do not compare errors directly "err != tt.wantErr", use "!errors.Is(err, tt.wantErr)" instead pkg/hubble/container/ring_test.go:299:7: do not compare errors directly "got1 != tt.wantErr", use "!errors.Is(got1, tt.wantErr)" instead pkg/hubble/container/ring_test.go:516:5: do not compare errors directly "err != ErrInvalidRead", use "!errors.Is(err, ErrInvalidRead)" instead pkg/status/status_test.go:146:8: do not compare errors directly "status.Err == err", use "errors.Is(status.Err, err)" instead ```