From e582a98a2c554e678c46ae2759337b0a29c9768c Mon Sep 17 00:00:00 2001 From: Markus Walther Date: Fri, 16 May 2025 16:01:02 +0100 Subject: [PATCH] add extraPackages option --- pkg/analyzer/analyzer.go | 12 ++++++++---- pkg/analyzer/defer_only.go | 10 ++++++++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/pkg/analyzer/analyzer.go b/pkg/analyzer/analyzer.go index 8dd8362..b1bf52a 100644 --- a/pkg/analyzer/analyzer.go +++ b/pkg/analyzer/analyzer.go @@ -9,13 +9,17 @@ import ( // NewAnalyzer returns a non-configurable analyzer that defaults to the defer-only mode. // Deprecated, this will be removed in v1.0.0. -func NewAnalyzer() *analysis.Analyzer { +func NewAnalyzer(extraPackages []string) *analysis.Analyzer { flags := flag.NewFlagSet("analyzer", flag.ExitOnError) - return newAnalyzer(run, flags) + return newAnalyzer(func(pass *analysis.Pass) (interface{}, error) { + return run(pass, extraPackages) + }, flags) } -func run(pass *analysis.Pass) (interface{}, error) { - opinionatedAnalyzer := &deferOnlyAnalyzer{} +func run(pass *analysis.Pass, extraPackages []string) (interface{}, error) { + opinionatedAnalyzer := &deferOnlyAnalyzer{ + extraPackages: extraPackages, + } return opinionatedAnalyzer.Run(pass) } diff --git a/pkg/analyzer/defer_only.go b/pkg/analyzer/defer_only.go index ca97ad2..fa02f36 100644 --- a/pkg/analyzer/defer_only.go +++ b/pkg/analyzer/defer_only.go @@ -38,7 +38,9 @@ var ( } ) -type deferOnlyAnalyzer struct{} +type deferOnlyAnalyzer struct { + extraPackages []string +} func NewDeferOnlyAnalyzer() *analysis.Analyzer { analyzer := &deferOnlyAnalyzer{} @@ -53,8 +55,12 @@ func (a *deferOnlyAnalyzer) Run(pass *analysis.Pass) (interface{}, error) { return nil, nil } + pkgs := make([]string, len(sqlPackages)+len(a.extraPackages)) + copy(pkgs, sqlPackages) + copy(pkgs[len(sqlPackages):], a.extraPackages) + // Build list of types we are looking for - targetTypes := getTargetTypes(pssa, sqlPackages) + targetTypes := getTargetTypes(pssa, pkgs) // If non of the types are found, skip if len(targetTypes) == 0 {