Enforce go lint check and fix several lint issues (#570)

This fix updates the Makefile to add the `go lint` check
for the build. This fix also fixes several go lint issues.

NOTE: This fix does not enforce `go lint` (suggestion only).
This fix also ignores the `go lint` error:
```
middleware/middleware.go:72:1: context.Context should be the first parameter of a function
```
as it requires too many changes in API.

Signed-off-by: Yong Tang <yong.tang.github@outlook.com>
This commit is contained in:
Yong Tang
2017-03-05 14:17:05 -08:00
committed by GitHub
parent 5eedb728df
commit 1e4ba588dc
3 changed files with 19 additions and 10 deletions

View File

@@ -7,23 +7,27 @@ all: coredns
# Phony this to ensure we always build the binary.
# TODO: Add .go file dependencies.
.PHONY: coredns
coredns: deps core/zmiddleware.go core/dnsserver/zdirectives.go
coredns: check core/zmiddleware.go core/dnsserver/zdirectives.go
go build $(BUILD_VERBOSE) -ldflags="-s -w"
.PHONY: deps
deps: fmt
deps:
go get ${BUILD_VERBOSE}
go get -u github.com/golang/lint/golint
.PHONY: check
check: fmt deps
.PHONY: test
test: deps
test: check
go test -race $(TEST_VERBOSE) ./test ./middleware/...
.PHONY: testk8s
testk8s: deps
testk8s: check
go test -race $(TEST_VERBOSE) -tags=k8s -run 'TestKubernetes' ./test ./middleware/kubernetes/...
.PHONY: coverage
coverage: deps
coverage: check
set -e -x
echo "" > coverage.txt
for d in `go list ./... | grep -v vendor`; do \
@@ -52,6 +56,11 @@ fmt:
@test -z "$$(gofmt -s -l . | grep -v vendor/ | tee /dev/stderr)" || \
(echo "please format Go code with 'gofmt -s -w'" && false)
.PHONY: lint
lint: deps
## run go lint, suggestion only (not enforced)
@test -z "$$(golint ./... | grep -v vendor/ | grep -v ".pb.go:" | grep -vE "context\.Context should be the first parameter of a function" | tee /dev/stderr)"
.PHONY: distclean
distclean: clean
# Clean all dependencies and build artifacts

View File

@@ -155,10 +155,10 @@ func (s *Server) Address() string { return s.Addr }
// defined in the request so that the correct zone
// (configuration and middleware stack) will handle the request.
func (s *Server) ServeDNS(w dns.ResponseWriter, r *dns.Msg) {
s.ServeDNSWithContext(context.Background(), w, r)
s.serveDNSWithContext(context.Background(), w, r)
}
func (s *Server) ServeDNSWithContext(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) {
func (s *Server) serveDNSWithContext(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) {
defer func() {
// In case the user doesn't enable error middleware, we still
// need to make sure that we stay alive up here

View File

@@ -6,15 +6,15 @@ import (
"github.com/mholt/caddy"
)
// CreateTestTrace creates a trace middleware to be used in tests
func CreateTestTrace(config string) (*caddy.Controller, *trace, error) {
// createTestTrace creates a trace middleware to be used in tests
func createTestTrace(config string) (*caddy.Controller, *trace, error) {
c := caddy.NewTestController("dns", config)
m, err := traceParse(c)
return c, m, err
}
func TestTrace(t *testing.T) {
_, m, err := CreateTestTrace(`trace`)
_, m, err := createTestTrace(`trace`)
if err != nil {
t.Errorf("Error parsing test input: %s", err)
return