From 9fd8adbcd0c7d823577e289b902785dc84591612 Mon Sep 17 00:00:00 2001 From: chavacava Date: Sun, 17 Aug 2025 07:50:54 +0200 Subject: [PATCH] feature: detect useless options in spanner struct tag (#1483) --- rule/struct_tag.go | 5 +++++ testdata/struct_tag_user_options.go | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/rule/struct_tag.go b/rule/struct_tag.go index 396ffbb..73d0d0e 100644 --- a/rule/struct_tag.go +++ b/rule/struct_tag.go @@ -562,13 +562,18 @@ func checkYAMLTag(checkCtx *checkContext, tag *structtag.Tag, _ ast.Expr) (messa func checkSpannerTag(checkCtx *checkContext, tag *structtag.Tag, _ ast.Expr) (message string, succeeded bool) { if tag.Name == "-" { + if len(tag.Options) > 0 { + return fmt.Sprintf("useless option(s) %s for ignored field", strings.Join(tag.Options, ",")), false + } return "", true } + for _, opt := range tag.Options { if !checkCtx.isUserDefined(keySpanner, opt) { return fmt.Sprintf(msgUnknownOption, opt), false } } + return "", true } diff --git a/testdata/struct_tag_user_options.go b/testdata/struct_tag_user_options.go index 7ec12e2..76f8600 100644 --- a/testdata/struct_tag_user_options.go +++ b/testdata/struct_tag_user_options.go @@ -48,6 +48,7 @@ type TomlUser struct { } type SpannerUserOptions struct { - ID int `spanner:"user_id,mySpannerOption"` - Name string `spanner:"full_name,unknownOption"` // MATCH /unknown option "unknownOption" in spanner tag/ -} \ No newline at end of file + ID int `spanner:"user_id,mySpannerOption"` + A int `spanner:"-,mySpannerOption"` // MATCH /useless option(s) mySpannerOption for ignored field in spanner tag/ + Name string `spanner:"full_name,unknownOption"` // MATCH /unknown option "unknownOption" in spanner tag/ +}