summaryrefslogtreecommitdiff
path: root/.tool/lint
diff options
context:
space:
mode:
Diffstat (limited to '.tool/lint')
-rwxr-xr-x.tool/lint44
1 files changed, 44 insertions, 0 deletions
diff --git a/.tool/lint b/.tool/lint
new file mode 100755
index 000000000..a62044255
--- /dev/null
+++ b/.tool/lint
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+# Create the linter path for use later
+LINTER=${GOPATH}/bin/gometalinter
+
+# Make sure gometalinter is installed
+if [ ! -f ${LINTER} ]; 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[@]}