Makefile: add vet target
Add a vet target in order to catch suspicious constructs reported by go vet. Vet has successfully detected problems in the past, for example, see482460c4c8
fc36b1cd94
68a41035a9
7b704fb77d
4f3f85b165
95fa353ee9
4bfe18b40d
Some vet flags are noisy. In particular, the following flags reports a large amount of generally unharmful constructs: -assign: check for useless assignments -composites: check that composite literals used field-keyed elements -shadow: check for shadowed variables -shadowstrict: whether to be strict about shadowing -unreachable: check for unreachable code In order to skip running the flags mentioned above, vet is invoked on a directory basis with 'go tool vet .' since package- level type-checking with 'go vet' doesn't accept flags. Hence, each file is vetted in isolation, which is weaker than package-level type-checking. But nevertheless, it might catch suspicious constructs that pose a real problem. The vet target runs the following flags on the entire repo: -asmdecl: check assembly against Go declarations -atomic: check for common mistaken usages of the sync/atomic package -bool: check for mistakes involving boolean operators -buildtags: check that +build tags are valid -copylocks: check that locks are not passed by value -methods: check that canonically named methods are canonically defined -nilfunc: check for comparisons between functions and nil -printf: check printf-like invocations -rangeloops: check that range loop variables are used correctly -shift: check for useless shifts -structtags: check that struct field tags have canonical format and apply to exported fields as needed -unsafeptr: check for misuse of unsafe.Pointer Now and then, it might make sense to check the output of VETARGS=-unreachable make vet manually, just in case it detects several lines of dead code etc.
This commit is contained in:
parent
514f6e7b22
commit
65878791c0
16
Makefile
16
Makefile
|
@ -1,4 +1,5 @@
|
||||||
TEST?=./...
|
TEST?=./...
|
||||||
|
VETARGS?=-asmdecl -atomic -bool -buildtags -copylocks -methods -nilfunc -printf -rangeloops -shift -structtags -unsafeptr
|
||||||
|
|
||||||
default: test
|
default: test
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ dev: generate
|
||||||
|
|
||||||
test: generate
|
test: generate
|
||||||
TF_ACC= go test $(TEST) $(TESTARGS) -timeout=10s -parallel=4
|
TF_ACC= go test $(TEST) $(TESTARGS) -timeout=10s -parallel=4
|
||||||
|
@$(MAKE) vet
|
||||||
|
|
||||||
testacc: generate
|
testacc: generate
|
||||||
@if [ "$(TEST)" = "./..." ]; then \
|
@if [ "$(TEST)" = "./..." ]; then \
|
||||||
|
@ -26,10 +28,22 @@ updatedeps:
|
||||||
git symbolic-ref --short HEAD 2>/dev/null \
|
git symbolic-ref --short HEAD 2>/dev/null \
|
||||||
|| git rev-parse HEAD"))
|
|| git rev-parse HEAD"))
|
||||||
go get -u golang.org/x/tools/cmd/stringer
|
go get -u golang.org/x/tools/cmd/stringer
|
||||||
|
go get -u golang.org/x/tools/cmd/vet
|
||||||
go get -f -u -v ./...
|
go get -f -u -v ./...
|
||||||
git checkout $(REF)
|
git checkout $(REF)
|
||||||
|
|
||||||
|
vet:
|
||||||
|
@go tool vet 2>/dev/null ; if [ $$? -eq 3 ]; then \
|
||||||
|
go get golang.org/x/tools/cmd/vet; \
|
||||||
|
fi
|
||||||
|
@echo "go tool vet $(VETARGS) ."
|
||||||
|
@go tool vet $(VETARGS) . ; if [ $$? -eq 1 ]; then \
|
||||||
|
echo ""; \
|
||||||
|
echo "Vet found suspicious constructs. Please check the reported constructs"; \
|
||||||
|
echo "and fix them if necessary before submitting the code for reviewal."; \
|
||||||
|
fi
|
||||||
|
|
||||||
generate:
|
generate:
|
||||||
go generate ./...
|
go generate ./...
|
||||||
|
|
||||||
.PHONY: bin default generate test updatedeps
|
.PHONY: bin default generate test updatedeps vet
|
||||||
|
|
Loading…
Reference in New Issue