#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail # Create the linter path for use later LINTER="${LINTER:-${GOPATH}/bin/gometalinter}" # Make sure gometalinter is installed if ! command -v ${LINTER} >/dev/null 2>/dev/null; then echo >&2 "gometalinter must be installed. Please run 'make install.tools' and try again" exit 1 fi PKGS=$(find . -type d -not -path . -a -not -iwholename '*.git*' -a -not -iname '.tool' -a -not -iwholename '*vendor*' -a -not -iname 'hack' -a -not -iwholename '*.artifacts*' -a -not -iwholename '*contrib*' -a -not -iwholename '*test*' -a -not -iwholename '*logo*' -a -not -iwholename '*conmon*' -a -not -iwholename '*completions*' -a -not -iwholename '*docs*' -a -not -iwholename '*pause*') # Execute the linter ${LINTER} \ --concurrency=4\ --enable-gc\ --vendored-linters\ --deadline=600s --disable-all\ --enable=deadcode\ --enable=errcheck\ --enable=goconst\ --enable=gofmt\ --enable=golint\ --enable=ineffassign\ --enable=interfacer\ --enable=megacheck\ --enable=misspell\ --enable=structcheck\ --enable=varcheck\ --enable=vet\ --enable=vetshadow\ --exclude='error return value not checked.*\(errcheck\)$'\ --exclude='declaration of.*err.*shadows declaration.*\(vetshadow\)$'\ --exclude='.*_test\.go:.*error return value not checked.*\(errcheck\)$'\ --exclude='duplicate of.*_test.go.*\(dupl\)$'\ --exclude='cmd\/client\/.*\.go.*\(dupl\)$'\ --exclude='vendor\/.*'\ --exclude='server\/seccomp\/.*\.go.*$'\ ${PKGS[@]}