package main import ( "os" "strings" noliteral "git.frostfs.info/TrueCloudLab/linters/internal/analyzers/noliteral" "github.com/mitchellh/mapstructure" "golang.org/x/tools/go/analysis" ) var AnalyzerPlugin analyzerPlugin type analyzerPlugin struct{} // for version ci-lint < '1.5.4'. func (*analyzerPlugin) GetAnalyzers() []*analysis.Analyzer { analyzer, _ := New(nil) return analyzer } // for version ci-lint >= '1.5.4'. func New(conf any) ([]*analysis.Analyzer, error) { targetMethods := strings.Split(os.Getenv("NOLITERAL_TARGET_METHODS"), ",") disablePackages := strings.Split(os.Getenv("NOLITERAL_DISABLE_PACKAGES"), ",") constantsPackage := os.Getenv("NOLITERAL_CONSTANTS_PACKAGE") configMap := map[string]any{ "target-methods": targetMethods, "constants-package": constantsPackage, "disable-packages": disablePackages, } if confMap, ok := conf.(map[string]any); ok { for k, v := range confMap { configMap[k] = v } } var config noliteral.Configuration err := mapstructure.Decode(configMap, &config) if err != nil { return nil, err } noliteral.Config.TargetMethods = append(noliteral.Config.TargetMethods, config.TargetMethods...) noliteral.Config.ConstantsPackage = config.ConstantsPackage noliteral.Config.DisablePackages = config.DisablePackages return []*analysis.Analyzer{noliteral.LogsAnalyzer}, nil }