{"record":{"id":"aa3e0728bc421462","repo":"projectlombok/lombok","slug":"lombok-supports-at-most-v-s-reduce-the-value-of","errorCode":null,"errorMessage":"Lombok supports at most v${s}; reduce the value of key 'checkerframework' to ${s}","messagePattern":"Lombok supports at most v(.+?); reduce the value of key 'checkerframework' to (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/core/lombok/core/configuration/CheckerFrameworkVersion.java","lineNumber":78,"sourceCode":"\t}\n\t\n\tpublic boolean generateCalledMethods() {\n\t\treturn version >= 3100;\n\t}\n\t\n\tpublic static CheckerFrameworkVersion valueOf(String versionString) {\n\t\tif (versionString != null) versionString = versionString.trim();\n\t\tif (versionString == null || versionString.equalsIgnoreCase(\"false\") || versionString.equals(\"0\")) return new CheckerFrameworkVersion(0);\n\t\tif (versionString.equalsIgnoreCase(\"true\")) return new CheckerFrameworkVersion(DEFAULT);\n\t\tMatcher m = VERSION.matcher(versionString);\n\t\tif (!m.matches()) throw new IllegalArgumentException(\"Expected 'true' or 'false' or a major/minor version, such as '2.9'\");\n\t\tint major = Integer.parseInt(m.group(1));\n\t\tint minor = (m.group(2) != null && !m.group(2).isEmpty()) ? Integer.parseInt(m.group(2)) : 0;\n\t\tif (minor > 999) throw new IllegalArgumentException(\"Minor version must be between 0 and 999\");\n\t\tint v = major * 1000 + minor;\n\t\tif (v > MAX_SUPPORTED) {\n\t\t\tString s = (v / 1000) + \".\" + (v % 1000);\n\t\t\tthrow new IllegalArgumentException(\"Lombok supports at most v\" + s + \"; reduce the value of key 'checkerframework' to \" + s);\n\t\t}\n\t\treturn new CheckerFrameworkVersion(v);\n\t}\n\t\n\tpublic static String description() {\n\t\treturn \"checkerframework-version\";\n\t}\n\t\n\tpublic static String exampleValue() {\n\t\tString s = (MAX_SUPPORTED / 1000) + \".\" + (MAX_SUPPORTED % 1000);\n\t\treturn \"major.minor (example: 3.2 - and no higher than \" + s + \") or true or false\";\n\t}\n\t\n\t@Override public boolean equals(Object obj) {\n\t\tif (!(obj instanceof CheckerFrameworkVersion)) return false;\n\t\treturn version == ((CheckerFrameworkVersion) obj).version;\n\t}\n\t","sourceCodeStart":60,"sourceCodeEnd":96,"githubUrl":"https://github.com/projectlombok/lombok/blob/6d6a3e9fec0a9555702561fbeb8eac836575116e/src/core/lombok/core/configuration/CheckerFrameworkVersion.java#L60-L96","documentation":"CheckerFrameworkVersion.valueOf parses a 'checkerframework' configuration key value (e.g. 'v3.42') into a version number. Lombok's bundled Checker Framework annotations only support versions up to MAX_SUPPORTED, so a higher requested version is rejected with IllegalArgumentException at parse time of lombok.config.","triggerScenarios":"Setting `lombok.checkerframework`-related config key 'checkerframework' to a version string whose major*1000+minor exceeds MAX_SUPPORTED; also thrown when minor > 999 by an earlier check in the same valueOf.","commonSituations":"Copying a Checker Framework version like 'v3.49.0' or a future version from documentation into lombok.config before Lombok has added support for it; typos producing an out-of-range minor segment.","solutions":["Lower the 'checkerframework' config key value to at most the version stated in the message (v + number reported).","Upgrade Lombok to a release that supports your Checker Framework version, then keep the version key.","Use only 'major' or 'major.minor' in the value (e.g. '3.42', not '3.42.0'); minor must be 0-999."],"exampleFix":"// before (lombok.config)\ncheckerframework = 3.999\n// after\ncheckerframework = 3.42","handlingStrategy":"validation","validationCode":"boolean isValidCheckerFrameworkVersion(String v) {\n  java.util.regex.Matcher m = java.util.regex.Pattern.compile(\"(\\\\d+)(?:\\\\.(\\\\d+))?\").matcher(v.trim());\n  if (!m.matches()) return false;\n  int minor = m.group(2) != null ? Integer.parseInt(m.group(2)) : 0;\n  return minor <= 999 && Integer.parseInt(m.group(1)) * 1000 + minor <= 42000; // compare with lombok's MAX_SUPPORTED\n}","typeGuard":null,"tryCatchPattern":"try {\n  CheckerFrameworkVersion v = CheckerFrameworkVersion.valueOf(cfg);\n} catch (IllegalArgumentException e) {\n  // fall back to the max supported version stated in e.getMessage()\n}","preventionTips":["Pin the checkerframework config value to a version at or below the Lombok release's MAX_SUPPORTED.","Only use major or major.minor forms; minor must be 0-999.","When bumping Checker Framework, first upgrade Lombok."],"tags":["lombok","configuration","version"],"backgroundTag":"value-out-of-range","analyzedSha":"6d6a3e9fec0a9555702561fbeb8eac836575116e","analyzedAt":"2026-09-07T23:18:01.841Z","contentChangedAt":"2026-09-07T23:18:01.841Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}