sa4021.go (997B)
1 package sa4021 2 3 import ( 4 "honnef.co/go/tools/analysis/code" 5 "honnef.co/go/tools/analysis/facts/generated" 6 "honnef.co/go/tools/analysis/lint" 7 "honnef.co/go/tools/analysis/report" 8 "honnef.co/go/tools/pattern" 9 10 "golang.org/x/tools/go/analysis" 11 ) 12 13 var SCAnalyzer = lint.InitializeAnalyzer(&lint.Analyzer{ 14 Analyzer: &analysis.Analyzer{ 15 Name: "SA4021", 16 Run: run, 17 Requires: append([]*analysis.Analyzer{generated.Analyzer}, code.RequiredAnalyzers...), 18 }, 19 Doc: &lint.RawDocumentation{ 20 Title: `\"x = append(y)\" is equivalent to \"x = y\"`, 21 Since: "2019.2", 22 Severity: lint.SeverityWarning, 23 MergeIf: lint.MergeIfAny, 24 }, 25 }) 26 27 var Analyzer = SCAnalyzer.Analyzer 28 29 var checkSingleArgAppendQ = pattern.MustParse(`(CallExpr (Builtin "append") [_])`) 30 31 func run(pass *analysis.Pass) (any, error) { 32 for node := range code.Matches(pass, checkSingleArgAppendQ) { 33 report.Report(pass, node, "x = append(y) is equivalent to x = y", report.FilterGenerated()) 34 } 35 return nil, nil 36 }