diff --git a/checkers/checkers.go b/checkers/checkers.go index af930013d..7ce829d36 100644 --- a/checkers/checkers.go +++ b/checkers/checkers.go @@ -34,6 +34,8 @@ func init() { var buildContext *build.Context + ruleguardDebug := os.Getenv("GOCRITIC_RULEGUARD_DEBUG") != "" + // First we create an Engine to parse all rules. // We need it to get the structured info about our rules // that will be used to generate checkers. @@ -46,7 +48,11 @@ func init() { buildContext = rootEngine.BuildContext loadContext := &ruleguard.LoadContext{ - Fset: fset, + Fset: fset, + DebugImports: ruleguardDebug, + DebugPrint: func(s string) { + fmt.Println("debug:", s) + }, } if err := rootEngine.LoadFromIR(loadContext, filename, rulesdata.PrecompiledRules); err != nil { panic(fmt.Sprintf("load embedded ruleguard rules: %v", err)) @@ -74,6 +80,10 @@ func init() { GroupFilter: func(name string) bool { return name == g.Name }, + DebugImports: ruleguardDebug, + DebugPrint: func(s string) { + fmt.Println("debug:", s) + }, } engine := ruleguard.NewEngine() engine.BuildContext = buildContext diff --git a/checkers/ruleguard_checker.go b/checkers/ruleguard_checker.go index a13abb74e..d65669fdd 100644 --- a/checkers/ruleguard_checker.go +++ b/checkers/ruleguard_checker.go @@ -124,8 +124,14 @@ func newRuleguardChecker(info *linter.CheckerInfo, ctx *linter.CheckerContext) ( fset := token.NewFileSet() filePatterns := strings.Split(rulesFlag, ",") + ruleguardDebug := os.Getenv("GOCRITIC_RULEGUARD_DEBUG") != "" + loadContext := &ruleguard.LoadContext{ - Fset: fset, + Fset: fset, + DebugImports: ruleguardDebug, + DebugPrint: func(s string) { + fmt.Println("debug:", s) + }, } loaded := 0