diff --git a/Makefile b/Makefile index 4831997bb3c..51a1b04b71c 100644 --- a/Makefile +++ b/Makefile @@ -170,7 +170,7 @@ SHELL := env PATH='$(PATH)' GOBIN='$(GO_TOOLS_BIN_PATH)' $(shell which bash) install-tools: @mkdir -p $(GO_TOOLS_BIN_PATH) - @which golangci-lint >/dev/null 2>&1 || curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GO_TOOLS_BIN_PATH) v1.60.3 + @which golangci-lint >/dev/null 2>&1 || curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GO_TOOLS_BIN_PATH) v1.61.0 @grep '_' tools.go | sed 's/"//g' | awk '{print $$2}' | xargs go install .PHONY: install-tools diff --git a/pkg/utils/reflectutil/tag.go b/pkg/utils/reflectutil/tag.go index ccf5fbdd085..6b5987ea900 100644 --- a/pkg/utils/reflectutil/tag.go +++ b/pkg/utils/reflectutil/tag.go @@ -66,13 +66,15 @@ func FindFieldByJSONTag(t reflect.Type, tags []string) reflect.Type { if t.Kind() != reflect.Struct { return nil } + tag := tags[0] + tagRemain := tags[1:] for i := 0; i < t.NumField(); i++ { jsonTag := t.Field(i).Tag.Get("json") - if i := strings.Index(jsonTag, ","); i != -1 { // trim 'foobar,string' to 'foobar' - jsonTag = jsonTag[:i] + if j := strings.Index(jsonTag, ","); j != -1 { // trim 'foobar,string' to 'foobar' + jsonTag = jsonTag[:j] } - if jsonTag == tags[0] { //nolint:gosec - return FindFieldByJSONTag(t.Field(i).Type, tags[1:]) //nolint:gosec + if jsonTag == tag { + return FindFieldByJSONTag(t.Field(i).Type, tagRemain) } } return nil