From 4fe6763faf645568b2d1d3fe4cdcfcf6b12cf7e6 Mon Sep 17 00:00:00 2001 From: Abhinav Gupta Date: Sat, 21 Oct 2023 16:59:14 -0700 Subject: ci: Use golangci-lint for linting (#121) Instead of hand-managing and running linters, use golangci-lint. Along with the golangci-lint defaults, enable a couple other linters we generally agree with. See also uber-go/zap#1323 for a similar change. As a result of this, we can: - Drop the dependabot for tools - Run the lint job in parallel with build/test - Simplify the Makefile --- Makefile | 60 +++++++++++++++++++++++------------------------------------- 1 file changed, 23 insertions(+), 37 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 2bab362..d78e31e 100644 --- a/Makefile +++ b/Makefile @@ -1,61 +1,47 @@ -export GOBIN = $(shell pwd)/bin +# Directory containing the Makefile. +PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) + +export GOBIN = $(PROJECT_ROOT)/bin export PATH := $(GOBIN):$(PATH) GO_FILES = $(shell find . \ -path '*/.*' -prune -o \ '(' -type f -a -name '*.go' ')' -print) -REVIVE = bin/revive -STATICCHECK = bin/staticcheck -TOOLS = $(REVIVE) $(STATICCHECK) - TEST_FLAGS ?= -race .PHONY: all -all: lint install test +all: lint build test .PHONY: lint -lint: gofmt revive staticcheck - -.PHONY: gofmt -gofmt: - $(eval FMT_LOG := $(shell mktemp -t gofmt.XXXXX)) - @gofmt -e -s -l $(GO_FILES) > $(FMT_LOG) || true - @[ ! -s "$(FMT_LOG)" ] || \ - (echo "gofmt failed. Please reformat the following files:" | \ - cat - $(FMT_LOG) && false) - -.PHONY: staticcheck -staticcheck: $(STATICCHECK) - $(STATICCHECK) ./... - -$(STATICCHECK): tools/go.mod - cd tools && go install honnef.co/go/tools/cmd/staticcheck - -.PHONY: revive -revive: $(REVIVE) - $(REVIVE) -set_exit_status ./... +lint: golangci-lint tidy-lint -$(REVIVE): tools/go.mod - cd tools && go install github.com/mgechev/revive - -.PHONY: install -install: +.PHONY: build +build: go install . .PHONY: test test: go test $(TEST_FLAGS) ./... +.PHONY: build +run: build + sally + .PHONY: cover cover: go test $(TEST_FLAGS) -coverprofile=cover.out -covermode=atomic -coverpkg=./... ./... go tool cover -html=cover.out -o cover.html -.PHONY: clean -clean: - rm -rf _tmp +.PHONY: golangci-lint +golangci-lint: + golangci-lint run -.PHONY: install -run: install - sally +.PHONY: tidy +tidy: + go mod tidy + +.PHONY: tidy-lint +tidy-lint: + go mod tidy + git diff --exit-code -- go.mod go.sum -- cgit v1.2.3