{"record":{"id":"0a0f663a810b7160","repo":"golangci/golangci-lint","slug":"failed-to-set-analyzer-setting-q-with-value-q","errorCode":null,"errorMessage":"failed to set analyzer setting %q with value %q: %w","messagePattern":"failed to set analyzer setting %q with value %q: %w","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/goanalysis/linter.go","lineNumber":155,"sourceCode":"\t}\n\treturn ret\n}\n\nfunc (*Linter) configureAnalyzer(a *analysis.Analyzer, cfg map[string]any) error {\n\tfor k, v := range cfg {\n\t\tf := a.Flags.Lookup(k)\n\t\tif f == nil {\n\t\t\tvalidFlagNames := allFlagNames(&a.Flags)\n\t\t\tif len(validFlagNames) == 0 {\n\t\t\t\treturn errors.New(\"analyzer doesn't have settings\")\n\t\t\t}\n\n\t\t\treturn fmt.Errorf(\"analyzer doesn't have setting %q, valid settings: %v\",\n\t\t\t\tk, validFlagNames)\n\t\t}\n\n\t\tif err := f.Value.Set(valueToString(v)); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to set analyzer setting %q with value %q: %w\", k, v, err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (lnt *Linter) configure() error {\n\tanalyzersMap := map[string]*analysis.Analyzer{}\n\tfor _, a := range lnt.analyzers {\n\t\tanalyzersMap[a.Name] = a\n\t}\n\n\tfor analyzerName, analyzerSettings := range lnt.cfg {\n\t\ta := analyzersMap[analyzerName]\n\t\tif a == nil {\n\t\t\treturn fmt.Errorf(\"settings key %q must be valid analyzer name, valid analyzers: %v\",\n\t\t\t\tanalyzerName, lnt.allAnalyzerNames())\n\t\t}","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/golangci/golangci-lint/blob/ed7a235d2d771152056fdc142a9855567c5796a9/pkg/goanalysis/linter.go#L137-L173","documentation":"This error is produced by golangci-lint's goanalysis linter when a flag.Value.Set() call fails while applying a user-supplied settings value to an analyzer's flag. It means the analyzer accepts the setting key, but the value itself could not be parsed/assigned (wrong type or malformed value). The wrapped error (%w) carries the underlying parse failure from the flag package.","triggerScenarios":"Running golangci-lint with a settings.golangci config where an analyzer setting has a value that fails flag.Value.Set — e.g. a string passed to a boolean/int flag, an unparseable duration, or a JSON/YAML scalar of the wrong type for a list-typed flag.","commonSituations":"Typo'd value types in .golangci.yml (e.g. setting `flag: \"yes\"` for a bool flag that only accepts true/false), migrating config between linter versions where a setting changed type, or programmatic configuration passing raw strings instead of parsed values.","solutions":["Check the wrapped %w error to see which value failed to parse and fix the value's type/format in .golangci.yml","Consult the analyzer's valid flag types (flagset) and supply a value the flag package can parse (true/false for bool, integers unquoted, etc.)","Quote string values correctly in YAML so they are not misinterpreted","If the setting changed type in a newer linter version, update the config to the new type"],"exampleFix":"# before (.golangci.yml)\nsettings:\n  someanalyzer:\n    max-issues: \"ten\"\n# after\nsettings:\n  someanalyzer:\n    max-issues: 10","handlingStrategy":"validation","validationCode":"for k, v := range analyzerSettings {\n    if !validFlags[k] {\n        return fmt.Errorf(\"unknown setting %q\", k)\n    }\n    if err := validateValueParseable(k, v); err != nil {\n        return fmt.Errorf(\"setting %q has unparseable value %v: %w\", k, v, err)\n    }\n}","typeGuard":null,"tryCatchPattern":"if err := linter.Run(...); err != nil {\n    var cfgErr *fmt.wrapError // or errors.As on your config error type\n    if strings.Contains(err.Error(), \"failed to set analyzer setting\") {\n        log.Fatalf(\"bad setting value in config: %v\", err)\n    }\n}","preventionTips":["Keep setting value types matched to the analyzer's flag types (bool/int/string/list)","Verify config in CI with `golangci-lint config verify` before running the linter","Pin the golangci-lint version so setting types don't shift under you"],"tags":["golangci-lint","configuration","flag-parsing"],"backgroundTag":"invalid-config-value","analyzedSha":"ed7a235d2d771152056fdc142a9855567c5796a9","analyzedAt":"2026-09-02T18:47:33.865Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}