diff --git a/rule/struct-tag.go b/rule/struct-tag.go index 45308d3b3..d1c8056aa 100644 --- a/rule/struct-tag.go +++ b/rule/struct-tag.go @@ -137,7 +137,7 @@ func (lintStructTagRule) getTagName(tag *structtag.Tag) string { case keyProtobuf: for _, option := range tag.Options { if strings.HasPrefix(option, "name=") { - return strings.TrimLeft(option, "name=") + return strings.TrimPrefix(option, "name=") } } return "" //protobuf tag lacks 'name' option diff --git a/testdata/struct-tag.go b/testdata/struct-tag.go index 21e73aaf6..93cbc14da 100644 --- a/testdata/struct-tag.go +++ b/testdata/struct-tag.go @@ -116,6 +116,8 @@ type Simple struct { ODouble *float64 `protobuf:"fixed64,014,opt,name=o_double,json=oDouble"` // MATCH /duplicated tag number 14/ ODoubleStr *float64 `protobuf:"fixed6,17,opt,name=o_double_str,json=oDoubleStr"` // MATCH /invalid protobuf tag name 'fixed6'/ OString *string `protobuf:"bytes,18,opt,name=o_string,json=oString"` + OString2 *string `protobuf:"bytes,name=ameno"` + OString3 *string `protobuf:"bytes,name=ameno"` // MATCH /duplicate tag name: 'ameno'/ XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"`