diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 00000000..faefc84a --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,18 @@ +run: + deadline: 2m + +linters: + disable-all: true + enable: + - gofmt + - goimports + - golint + - gosimple + - gocyclo + - ineffassign + - misspell + - govet + +linters-settings: + goimports: +local-prefixes: k8s.io/kube-state-metrics \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index c3a043fb..b199969c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,8 +28,8 @@ install: jobs: include: - # Format - - script: make format + # Lint + - script: make lint # Check that all the go modules manifests, vendors, and packages are in sync - script: make validate-modules # Check that all metrics are documented diff --git a/Makefile b/Makefile index 1649a736..4442ae3e 100644 --- a/Makefile +++ b/Makefile @@ -13,6 +13,8 @@ PKG=k8s.io/kube-state-metrics/pkg GO_VERSION=1.11.5 FIRST_GOPATH:=$(firstword $(subst :, ,$(shell go env GOPATH))) BENCHCMP_BINARY:=$(FIRST_GOPATH)/bin/benchcmp +GOLANGCI_VERSION := v1.15.0 +HAS_GOLANGCI := $(shell which golangci-lint) IMAGE = $(REGISTRY)/kube-state-metrics MULTI_ARCH_IMG = $(IMAGE)-$(ARCH) @@ -26,10 +28,15 @@ validate-modules: GO111MODULE=on go mod vendor @git diff --exit-code -- go.sum go.mod vendor/ -format: shellcheck - @go fmt $(PKGS) | grep ".*\.go"; if [ "$$?" = "0" ]; then exit 1; fi +licensecheck: ./tests/check_license.sh +lint: shellcheck licensecheck +ifndef HAS_GOLANGCI + curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(GOPATH)/bin ${GOLANGCI_VERSION} +endif + golangci-lint run + doccheck: @echo "- Checking if the documentation is up to date..." @grep -hoE '(kube_[^ |]+)' docs/* --exclude=README.md| sort -u > documented_metrics @@ -112,4 +119,4 @@ e2e: $(BENCHCMP_BINARY): go get golang.org/x/tools/cmd/benchcmp -.PHONY: all build build-local all-push all-container test-unit test-benchmark-compare container push quay-push clean e2e validate-modules shellcheck +.PHONY: all build build-local all-push all-container test-unit test-benchmark-compare container push quay-push clean e2e validate-modules shellcheck licensecheck lint diff --git a/internal/collector/configmap.go b/internal/collector/configmap.go index dce707d7..c4b0520b 100644 --- a/internal/collector/configmap.go +++ b/internal/collector/configmap.go @@ -17,9 +17,9 @@ limitations under the License. package collector import ( + v1 "k8s.io/api/core/v1" "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/configmap_test.go b/internal/collector/configmap_test.go index aff22054..09e277bb 100644 --- a/internal/collector/configmap_test.go +++ b/internal/collector/configmap_test.go @@ -19,7 +19,7 @@ package collector import ( "testing" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/internal/collector/cronjob_test.go b/internal/collector/cronjob_test.go index 0dfcf763..307a28e2 100644 --- a/internal/collector/cronjob_test.go +++ b/internal/collector/cronjob_test.go @@ -23,7 +23,7 @@ import ( "time" batchv1beta1 "k8s.io/api/batch/v1beta1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/internal/collector/endpoint.go b/internal/collector/endpoint.go index 37a3349a..eaf539f3 100644 --- a/internal/collector/endpoint.go +++ b/internal/collector/endpoint.go @@ -17,9 +17,9 @@ limitations under the License. package collector import ( + v1 "k8s.io/api/core/v1" "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/endpoint_test.go b/internal/collector/endpoint_test.go index bb23d6d1..b3fa59a5 100644 --- a/internal/collector/endpoint_test.go +++ b/internal/collector/endpoint_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/internal/collector/hpa_test.go b/internal/collector/hpa_test.go index 36828340..eb3afd41 100644 --- a/internal/collector/hpa_test.go +++ b/internal/collector/hpa_test.go @@ -17,9 +17,10 @@ limitations under the License. package collector import ( - v12 "k8s.io/api/core/v1" "testing" + v12 "k8s.io/api/core/v1" + autoscaling "k8s.io/api/autoscaling/v2beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" diff --git a/internal/collector/job_test.go b/internal/collector/job_test.go index ed4c192e..47e58510 100644 --- a/internal/collector/job_test.go +++ b/internal/collector/job_test.go @@ -21,7 +21,7 @@ import ( "time" v1batch "k8s.io/api/batch/v1" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/internal/collector/limitrange.go b/internal/collector/limitrange.go index c6293448..8641ce1a 100644 --- a/internal/collector/limitrange.go +++ b/internal/collector/limitrange.go @@ -17,9 +17,9 @@ limitations under the License. package collector import ( + v1 "k8s.io/api/core/v1" "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/limitrange_test.go b/internal/collector/limitrange_test.go index 7215771a..79ea0bda 100644 --- a/internal/collector/limitrange_test.go +++ b/internal/collector/limitrange_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" diff --git a/internal/collector/namespace.go b/internal/collector/namespace.go index ab5f6a93..c7cbe8c2 100644 --- a/internal/collector/namespace.go +++ b/internal/collector/namespace.go @@ -19,7 +19,7 @@ package collector import ( "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/namespace_test.go b/internal/collector/namespace_test.go index b9d1a25f..c6165663 100644 --- a/internal/collector/namespace_test.go +++ b/internal/collector/namespace_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/internal/collector/node_test.go b/internal/collector/node_test.go index f5b5f053..8b568416 100644 --- a/internal/collector/node_test.go +++ b/internal/collector/node_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" diff --git a/internal/collector/persistentvolume.go b/internal/collector/persistentvolume.go index 6be9f435..0a7ff6ea 100644 --- a/internal/collector/persistentvolume.go +++ b/internal/collector/persistentvolume.go @@ -19,7 +19,7 @@ package collector import ( "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/persistentvolume_test.go b/internal/collector/persistentvolume_test.go index 0e6a9039..9e0be3ac 100644 --- a/internal/collector/persistentvolume_test.go +++ b/internal/collector/persistentvolume_test.go @@ -19,7 +19,7 @@ package collector import ( "testing" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" diff --git a/internal/collector/persistentvolumeclaim.go b/internal/collector/persistentvolumeclaim.go index 3c4f2716..19717583 100644 --- a/internal/collector/persistentvolumeclaim.go +++ b/internal/collector/persistentvolumeclaim.go @@ -19,7 +19,7 @@ package collector import ( "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/persistentvolumeclaim_test.go b/internal/collector/persistentvolumeclaim_test.go index 944b9a10..1b2207ed 100644 --- a/internal/collector/persistentvolumeclaim_test.go +++ b/internal/collector/persistentvolumeclaim_test.go @@ -19,7 +19,7 @@ package collector import ( "testing" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" diff --git a/internal/collector/replicationcontroller.go b/internal/collector/replicationcontroller.go index ef01483e..2d482e7e 100644 --- a/internal/collector/replicationcontroller.go +++ b/internal/collector/replicationcontroller.go @@ -17,9 +17,9 @@ limitations under the License. package collector import ( + v1 "k8s.io/api/core/v1" "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/replicationcontroller_test.go b/internal/collector/replicationcontroller_test.go index 84065b10..dd5e46bb 100644 --- a/internal/collector/replicationcontroller_test.go +++ b/internal/collector/replicationcontroller_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/internal/collector/resourcequota.go b/internal/collector/resourcequota.go index 4793ef1a..8bc5bb2a 100644 --- a/internal/collector/resourcequota.go +++ b/internal/collector/resourcequota.go @@ -17,9 +17,9 @@ limitations under the License. package collector import ( + v1 "k8s.io/api/core/v1" "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/resourcequota_test.go b/internal/collector/resourcequota_test.go index 7d6a6baf..474b198f 100644 --- a/internal/collector/resourcequota_test.go +++ b/internal/collector/resourcequota_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" diff --git a/internal/collector/secret.go b/internal/collector/secret.go index 48cd75a7..8b0e8519 100644 --- a/internal/collector/secret.go +++ b/internal/collector/secret.go @@ -17,9 +17,9 @@ limitations under the License. package collector import ( + v1 "k8s.io/api/core/v1" "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/secret_test.go b/internal/collector/secret_test.go index 24dda522..d6c2f765 100644 --- a/internal/collector/secret_test.go +++ b/internal/collector/secret_test.go @@ -19,7 +19,7 @@ package collector import ( "testing" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/internal/collector/service.go b/internal/collector/service.go index ddb92ac7..e527e393 100644 --- a/internal/collector/service.go +++ b/internal/collector/service.go @@ -17,9 +17,9 @@ limitations under the License. package collector import ( + v1 "k8s.io/api/core/v1" "k8s.io/kube-state-metrics/pkg/metric" - "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" diff --git a/internal/collector/service_test.go b/internal/collector/service_test.go index fd8d1155..30b06017 100644 --- a/internal/collector/service_test.go +++ b/internal/collector/service_test.go @@ -20,7 +20,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/kube-state-metrics/pkg/metric" ) diff --git a/main_test.go b/main_test.go index b6ab2c0b..2c459903 100644 --- a/main_test.go +++ b/main_test.go @@ -31,7 +31,7 @@ import ( coll "k8s.io/kube-state-metrics/pkg/collector" "k8s.io/kube-state-metrics/pkg/options" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes/fake" diff --git a/pkg/metrics_store/metrics_store_test.go b/pkg/metrics_store/metrics_store_test.go index 0ddd4897..8c0acc51 100644 --- a/pkg/metrics_store/metrics_store_test.go +++ b/pkg/metrics_store/metrics_store_test.go @@ -21,7 +21,7 @@ import ( "strings" "testing" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" diff --git a/tests/lib/lib_test.go b/tests/lib/lib_test.go index c1318867..dd1107d8 100644 --- a/tests/lib/lib_test.go +++ b/tests/lib/lib_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch"