{"record":{"id":"9788dc8b2d1e51f4","repo":"theonedev/onedev","slug":"invalid-version-string-versionstr","errorCode":null,"errorMessage":"Invalid version string '${versionStr}'.","messagePattern":"Invalid version string '(.+?)'\\.","errorType":"validation","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/util/Version.java","lineNumber":65,"sourceCode":"\t\tversionStr = StringUtils.deleteWhitespace(versionStr);\n\t\tString[] fields = StringUtils.split(versionStr, '-');\n\t\tPreconditions.checkState(fields.length >= 1);\n\t\tString[] parts = StringUtils.split(fields[0], '.');\n\n\t\tmajor = Integer.parseInt(parts[0]);\n\t\tPreconditions.checkArgument(major>=0);\n\t\t\n\t\tif (parts.length >= 2) {\n\t\t\tminor = Integer.parseInt(parts[1]);\n\t\t\tPreconditions.checkArgument(minor>=0);\n\t\t}\n\t\tif (parts.length >= 3) {\n\t\t\tpatch = Integer.parseInt(parts[2]);\n\t\t\tPreconditions.checkArgument(patch>=0);\n\t\t}\n\t\t\n\t\tif (parts.length >= 4)\n\t\t\tthrow new RuntimeException(\"Invalid version string '\" + versionStr + \"'.\");\n\t\t\n\t\tif (fields.length >= 2) \n\t\t\tqualifier = fields[1];\n\t\tif (fields.length >= 3) {\n\t\t\tbuild = Integer.parseInt(fields[2]);\n\t\t\tPreconditions.checkArgument(build>=0);\n\t\t}\n\t\t\n\t\tif (fields.length >= 4) \n\t\t\tthrow new RuntimeException(\"Invalid version string '\" + versionStr + \"'.\");\n\t}\n\t\n\tpublic Version(int major, int minor, int patch, String qualifier, int build) {\n\t\tPreconditions.checkArgument(major>=0, \"Major version should be a positive integer.\");\n\t\tthis.major = major;\n\t\t\n\t\tif (minor >= 0) {\n\t\t\tthis.minor = minor;","sourceCodeStart":47,"sourceCodeEnd":83,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/util/Version.java#L47-L83","documentation":"The Version constructor splits the version string into major.minor.patch (plus optional pre-release after '-'); a fourth dotted component (or otherwise malformed numeric parts) makes the string unparseable and triggers this RuntimeException. This is a parser guard for version strings.","triggerScenarios":"Thrown at server-core/src/main/java/io/onedev/server/util/Version.java:65 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a version string of the form major[.minor[.patch]][-qualifier].","Strip extra numeric components before parsing."],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}