Skip to content

Commit 3e5e112

Browse files
authored
integrate golang linters (#4)
1 parent 725628d commit 3e5e112

File tree

7 files changed

+118
-30
lines changed

7 files changed

+118
-30
lines changed

.drone.yml

+10
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ clone:
1717
depth: 1
1818

1919
steps:
20+
- name: lint
21+
image: golangci/golangci-lint:v1.48-alpine
22+
volumes:
23+
- name: deps
24+
path: /go
25+
commands:
26+
- golangci-lint run -v
27+
- go install github.com/mgechev/revive@v1.2.3
28+
- revive -config .revive.toml -formatter friendly ./...
29+
2030
- name: test
2131
image: golang:1.19-alpine
2232
environment:

.golangci.yml

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
linters:
2+
enable:
3+
- dogsled
4+
- errname
5+
- errorlint
6+
- exportloopref
7+
- funlen
8+
- gocognit
9+
- goconst
10+
- gocritic
11+
- gocyclo
12+
- gofmt
13+
- goimports
14+
- staticcheck
15+
- gosec
16+
- govet
17+
- misspell
18+
- nestif
19+
- prealloc
20+
- unconvert
21+
- unparam
22+
23+
run:
24+
timeout: 5m
25+
26+
issues:
27+
exclude-rules:
28+
- linters:
29+
- funlen
30+
- gosec
31+
path: _test\.go

.revive.toml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
ignoreGeneratedHeader = false
2+
severity = "warning"
3+
confidence = 0.8
4+
errorCode = 1
5+
warningCode = 1
6+
7+
#Recommended rules
8+
[rule.blank-imports]
9+
[rule.context-as-argument]
10+
[rule.context-keys-type]
11+
[rule.dot-imports]
12+
[rule.error-return]
13+
[rule.error-strings]
14+
[rule.error-naming]
15+
[rule.if-return]
16+
[rule.increment-decrement]
17+
[rule.var-naming]
18+
[rule.var-declaration]
19+
[rule.package-comments]
20+
[rule.range]
21+
[rule.receiver-naming]
22+
[rule.time-naming]
23+
[rule.unexported-return]
24+
[rule.indent-error-flow]
25+
[rule.errorf]
26+
[rule.empty-block]
27+
[rule.superfluous-else]
28+
[rule.unused-parameter]
29+
[rule.unreachable-code]
30+
[rule.redefines-builtin-id]
31+
32+
#Custom rules
33+
[rule.modifies-parameter]
34+
[rule.unnecessary-stmt]
35+
[rule.modifies-value-receiver]
36+
[rule.range-val-in-closure]
37+
[rule.range-val-address]
38+
[rule.waitgroup-by-value]
39+
[rule.atomic]
40+
[rule.unused-receiver]
41+
[rule.early-return]
42+
[rule.unconditional-recursion]
43+
[rule.identical-branches]
44+
[rule.defer]

https.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func newHTTPS(from string, client dnsClient, opts ...httpsOption) *HTTPS {
4242
var _ plugin.Handler = (*HTTPS)(nil)
4343

4444
// Name implements plugin.Handler.
45-
func (h *HTTPS) Name() string { return "https" }
45+
func (*HTTPS) Name() string { return "https" }
4646

4747
// ServeDNS implements plugin.Handler.
4848
func (h *HTTPS) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (status int, err error) {

policy_test.go

+17-17
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ func TestRandomPolicy(t *testing.T) {
3131
name: "OneElement",
3232
poolLen: 1,
3333
expected: [][]int{
34-
[]int{0},
35-
[]int{0},
34+
{0},
35+
{0},
3636
},
3737
},
3838
{
@@ -92,27 +92,27 @@ func TestRoundRobinPolicy(t *testing.T) {
9292
name: "OneElement",
9393
poolLen: 1,
9494
expected: [][]int{
95-
[]int{0},
96-
[]int{0},
95+
{0},
96+
{0},
9797
},
9898
},
9999
{
100100
name: "TwoElements",
101101
poolLen: 2,
102102
expected: [][]int{
103-
[]int{0, 1},
104-
[]int{1, 0},
105-
[]int{0, 1},
103+
{0, 1},
104+
{1, 0},
105+
{0, 1},
106106
},
107107
},
108108
{
109109
name: "ThreeElements",
110110
poolLen: 3,
111111
expected: [][]int{
112-
[]int{0, 1, 2},
113-
[]int{1, 2, 0},
114-
[]int{2, 0, 1},
115-
[]int{0, 1, 2},
112+
{0, 1, 2},
113+
{1, 2, 0},
114+
{2, 0, 1},
115+
{0, 1, 2},
116116
},
117117
},
118118
}
@@ -152,24 +152,24 @@ func TestSequentialPolicy(t *testing.T) {
152152
name: "OneElement",
153153
poolLen: 1,
154154
expected: [][]int{
155-
[]int{0},
156-
[]int{0},
155+
{0},
156+
{0},
157157
},
158158
},
159159
{
160160
name: "TwoElements",
161161
poolLen: 2,
162162
expected: [][]int{
163-
[]int{0, 1},
164-
[]int{0, 1},
163+
{0, 1},
164+
{0, 1},
165165
},
166166
},
167167
{
168168
name: "ThreeElements",
169169
poolLen: 3,
170170
expected: [][]int{
171-
[]int{0, 1, 2},
172-
[]int{0, 1, 2},
171+
{0, 1, 2},
172+
{0, 1, 2},
173173
},
174174
},
175175
}

proxy.go

+7-4
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,15 @@ func withLbMaxFails(maxFails int) lbDNSClientOption {
163163
func (c *lbDNSClient) Query(ctx context.Context, dnsreq []byte) (r *dns.Msg, err error) {
164164
ids := c.p.List(len(c.clients))
165165
for i := 0; i < c.maxFails; i++ {
166-
ctx, cancel := context.WithTimeout(ctx, c.timeout)
167-
defer cancel()
168-
if r, err = c.clients[ids[i]].Query(ctx, dnsreq); err == nil {
166+
if r, err = c.query(ctx, dnsreq, ids[i]); err == nil {
169167
return
170168
}
171-
cancel()
172169
}
173170
return
174171
}
172+
173+
func (c *lbDNSClient) query(ctx context.Context, dnsreq []byte, clientID int) (*dns.Msg, error) {
174+
ctx, cancel := context.WithTimeout(ctx, c.timeout)
175+
defer cancel()
176+
return c.clients[clientID].Query(ctx, dnsreq)
177+
}

proxy_test.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"context"
66
"errors"
77
"io"
8-
"io/ioutil"
98
"net"
109
"net/http"
1110
"strings"
@@ -70,7 +69,7 @@ func TestDNSClient(t *testing.T) {
7069
require.Equal(t, []byte("abc"), buf, "invalid request body")
7170

7271
resp = &http.Response{
73-
Body: ioutil.NopCloser(bytes.NewReader(packMsg(t, expectedMsg))),
72+
Body: io.NopCloser(bytes.NewReader(packMsg(t, expectedMsg))),
7473
StatusCode: http.StatusOK,
7574
}
7675
return
@@ -101,7 +100,7 @@ func TestDNSClientHttpClientError(t *testing.T) {
101100
httpClient := mockHTTPClientFunc(func(req *http.Request) (resp *http.Response, err error) {
102101
err = errors.New("http error")
103102
resp = &http.Response{
104-
Body: ioutil.NopCloser(bytes.NewReader(packMsg(t, newExpectedDNSMsg()))),
103+
Body: io.NopCloser(bytes.NewReader(packMsg(t, newExpectedDNSMsg()))),
105104
StatusCode: http.StatusOK,
106105
}
107106
return
@@ -115,7 +114,7 @@ func TestDNSClientHttpClientError(t *testing.T) {
115114
func TestDNSClientHttpStatusError(t *testing.T) {
116115
httpClient := mockHTTPClientFunc(func(req *http.Request) (resp *http.Response, err error) {
117116
resp = &http.Response{
118-
Body: ioutil.NopCloser(bytes.NewReader(packMsg(t, newExpectedDNSMsg()))),
117+
Body: io.NopCloser(bytes.NewReader(packMsg(t, newExpectedDNSMsg()))),
119118
StatusCode: http.StatusInternalServerError,
120119
}
121120
return
@@ -147,7 +146,7 @@ func TestDNSClientResponseReadError(t *testing.T) {
147146
err: errors.New("io error"),
148147
}
149148
resp = &http.Response{
150-
Body: ioutil.NopCloser(reader),
149+
Body: io.NopCloser(reader),
151150
StatusCode: http.StatusOK,
152151
}
153152
return
@@ -161,7 +160,7 @@ func TestDNSClientResponseReadError(t *testing.T) {
161160
func TestDNSClientMsgUnpackError(t *testing.T) {
162161
httpClient := mockHTTPClientFunc(func(req *http.Request) (resp *http.Response, err error) {
163162
resp = &http.Response{
164-
Body: ioutil.NopCloser(strings.NewReader("def")),
163+
Body: io.NopCloser(strings.NewReader("def")),
165164
StatusCode: http.StatusOK,
166165
}
167166
return
@@ -173,15 +172,15 @@ func TestDNSClientMsgUnpackError(t *testing.T) {
173172
}
174173

175174
func TestDNSClientLargeResponseError(t *testing.T) {
176-
//create large buffer with the correct DNS message at the beginning
175+
// create large buffer with the correct DNS message at the beginning
177176
var buf bytes.Buffer
178177
dnsMsg := packMsg(t, newExpectedDNSMsg())
179178
buf.Write(dnsMsg)
180179
buf.WriteString(strings.Repeat("a", maxDNSMessageSize))
181180

182181
httpClient := mockHTTPClientFunc(func(req *http.Request) (resp *http.Response, err error) {
183182
resp = &http.Response{
184-
Body: ioutil.NopCloser(&buf),
183+
Body: io.NopCloser(&buf),
185184
StatusCode: http.StatusOK,
186185
}
187186
return
@@ -289,6 +288,7 @@ func TestLoadBalanceDNSClientMaxFails(t *testing.T) {
289288

290289
lbClient := newLoadBalanceDNSClient(clients,
291290
withLbPolicy(newSequentialPolicy()),
291+
withLbRequestTimeout(defaultRequestTimeout),
292292
withLbMaxFails(tt.maxFails))
293293

294294
result, err := lbClient.Query(context.Background(), []byte("abc"))

0 commit comments

Comments
 (0)