diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 000000000..09b63e45d --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,71 @@ +run: + # timeout for analysis, e.g. 30s, 5m, default is 1m + deadline: 10m + + tests: false + + # which dirs to skip: they won't be analyzed; + # can use regexp here: generated.*, regexp is applied on full path; + # default value is empty list, but next dirs are always skipped independently + # from this option's value: + # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ + skip-dirs: + - ui + + # which files to skip: they will be analyzed, but issues from them + # won't be reported. Default value is empty list, but there is + # no need to include all autogenerated files, we confidently recognize + # autogenerated files. If it's not please let us know. + skip-files: + - ".*\\.generated\\.go$" + - ".*bindata_assetfs\\.go$" + +# output configuration options +output: + # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" + format: colored-line-number + + # print lines of code with issue, default is true + print-issued-lines: true + + # print linter name in the end of issue text, default is true + print-linter-name: true + +# all available settings of specific linters +linters-settings: + errcheck: + # report about not checking of errors in type assetions: `a := b.(MyStruct)`; + # default is false: such cases aren't reported by default. + check-type-assertions: false + + # [deprecated] comma-separated list of pairs of the form pkg:regex + # the regex is used to ignore names within pkg. (default "fmt:.*"). + # see https://github.com/kisielk/errcheck#the-deprecated-method for details + ignore: fmt:.*,io/ioutil:^Read.* + + # path to a file containing a list of functions to exclude from checking + # see https://github.com/kisielk/errcheck#excluding-functions for details + # exclude: /path/to/file.txt + govet: + # report about shadowed variables + check-shadowing: false + gofmt: + # simplify code: gofmt with `-s` option, true by default + simplify: true + +linters: + disable-all: true + enable: + - goimports + - misspell + - govet + - deadcode + - varcheck + - ineffassign + - structcheck + - unconvert + - gofmt + # Stretch Goal + #- maligned + fast: false + diff --git a/GNUmakefile b/GNUmakefile index 3bac30389..4397dad48 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -154,8 +154,7 @@ deps: ## Install build and development dependencies .PHONY: lint-deps lint-deps: ## Install linter dependencies @echo "==> Updating linter dependencies..." - go get -u github.com/alecthomas/gometalinter - gometalinter --install + go get -u github.com/golangci/golangci-lint/cmd/golangci-lint .PHONY: git-hooks git-dir = $(shell git rev-parse --git-dir) @@ -167,27 +166,7 @@ $(git-dir)/hooks/%: dev/hooks/% .PHONY: check check: ## Lint the source code @echo "==> Linting source code..." - @gometalinter \ - --deadline 10m \ - --vendor \ - --exclude='.*\.generated\.go' \ - --exclude='.*\.pb\.go' \ - --exclude='.*bindata_assetfs\.go' \ - --skip="ui/" \ - --sort="path" \ - --aggregate \ - --enable-gc \ - --disable-all \ - --enable goimports \ - --enable misspell \ - --enable vet \ - --enable deadcode \ - --enable varcheck \ - --enable ineffassign \ - --enable structcheck \ - --enable unconvert \ - --enable gofmt \ - ./... + @golangci-lint run -j 1 @echo "==> Spell checking website..." @misspell -error -source=text website/source/