Skip to content

Commit

Permalink
ci: Use golangci-lint for linting
Browse files Browse the repository at this point in the history
Using golangci-lint has a number of advantages:

- adding new linters becomes much easier, its a couple lines of yaml config
  instead of more bash scripting

- it enables whitelisting of issues using inline comments or regex

- when running multiple linters less work is done. The parsed source can be reused
  by multiple linters

- linters are run in parallel to reduce CI runtime.
  • Loading branch information
dnephin committed Mar 13, 2020
1 parent 6a29a2b commit e028736
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 23 deletions.
44 changes: 21 additions & 23 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,30 +33,30 @@ jobs:
- checkout
- run: go get -u github.com/hashicorp/lint-consul-retry && lint-consul-retry

# Runs go fmt and go vet
go-fmt-and-vet:
# Runs Go linters
lint:
docker:
- image: *GOLANG_IMAGE
steps:
- checkout
- run:
command: go mod download
- run:
name: check go fmt
name: Install golangci-lint
command: |
files="$(go fmt ./... ; (cd api && go fmt ./... | sed 's@^@api/@') ; (cd sdk && go fmt ./... | sed 's@^@sdk/@'))"
if [ -n "$files" ]; then
echo "The following file(s) do not conform to go fmt:"
echo "$files"
exit 1
fi
download=https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh
wget -O- -q $download | sh -s -- -b /go/bin/ v1.23.6
- run: go mod download
- run:
command: |
go vet ./... && \
(cd api && go vet ./...) && \
(cd sdk && go vet ./...)
environment:
<<: *ENVIRONMENT
name: lint
command: &lintcmd |
golangci-lint run -v --concurrency 2
- run:
name: lint api
working_directory: api
command: *lintcmd
- run:
name: lint sdk
working_directory: sdk
command: *lintcmd

# checks vendor directory is correct
check-vendor:
Expand Down Expand Up @@ -619,15 +619,13 @@ workflows:
- stable-website
- /^docs\/.*/
- /^ui\/.*/
- go-fmt-and-vet:
requires:
- check-vendor
- dev-build:
requires:
- go-fmt-and-vet
- lint
- dev-build
- go-test: &go-test
requires:
- dev-build
- lint
- check-vendor
- go-test-api: *go-test
- go-test-sdk: *go-test
- coverage-merge:
Expand Down
14 changes: 14 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
linters:
disable-all: true
enable:
- gofmt
- govet

issues:
# Disable the default exclude list so that all excludes are explicitly
# defined in this file.
exclude-use-default: false

linters-settings:
gofmt:
simplify: false
1 change: 1 addition & 0 deletions api/.golangci.yml
1 change: 1 addition & 0 deletions sdk/.golangci.yml

0 comments on commit e028736

Please sign in to comment.