{"record":{"id":"ae433b65c778a210","repo":"jenkinsci/jenkins","slug":"s-is-not-a-valid-parameter-did-you-mean-s","errorCode":null,"errorMessage":"'%s' is not a valid parameter. Did you mean %s?","messagePattern":"'(.+?)' is not a valid parameter\\. Did you mean (.+?)\\?","errorType":"validation","errorClass":"CmdLineException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/hudson/cli/BuildCommand.java","lineNumber":118,"sourceCode":"    @Override\n    protected int run() throws Exception {\n        job.checkPermission(Item.BUILD);\n\n        ParametersAction a = null;\n        if (!parameters.isEmpty()) {\n            ParametersDefinitionProperty pdp = job.getProperty(ParametersDefinitionProperty.class);\n            if (pdp == null)\n                throw new IllegalStateException(job.getFullDisplayName() + \" is not parameterized but the -p option was specified.\");\n\n            //TODO: switch to type annotations after the migration to Java 1.8\n            List<ParameterValue> values = new ArrayList<>();\n\n            for (Map.Entry<String, String> e : parameters.entrySet()) {\n                String name = e.getKey();\n                ParameterDefinition pd = pdp.getParameterDefinition(name);\n                if (pd == null) {\n                    String nearest = EditDistance.findNearest(name, pdp.getParameterDefinitionNames());\n                    throw new CmdLineException(null, nearest == null ?\n                            String.format(\"'%s' is not a valid parameter.\", name) :\n                            String.format(\"'%s' is not a valid parameter. Did you mean %s?\", name, nearest));\n                }\n                ParameterValue val = pd.createValue(this, Util.fixNull(e.getValue()));\n                if (val == null) {\n                    throw new CmdLineException(null, String.format(\"Cannot resolve the value for the parameter '%s'.\", name));\n                }\n                values.add(val);\n            }\n\n            // handle missing parameters by adding as default values ISSUE JENKINS-7162\n            for (ParameterDefinition pd : pdp.getParameterDefinitions()) {\n                if (parameters.containsKey(pd.getName()))\n                    continue;\n\n                // not passed in use default\n                ParameterValue defaultValue = pd.getDefaultParameterValue();\n                if (defaultValue == null) {","sourceCodeStart":100,"sourceCodeEnd":136,"githubUrl":"https://github.com/jenkinsci/jenkins/blob/2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc/core/src/main/java/hudson/cli/BuildCommand.java#L100-L136","documentation":"Thrown as a CmdLineException when a parameter name passed via -p does not match any defined ParameterDefinition, but EditDistance.findNearest finds a close match. The message includes both the invalid name and the suggested correct name, helping the user fix typos.","triggerScenarios":"pdp.getParameterDefinition(name) returns null, but EditDistance.findNearest(name, pdp.getParameterDefinitionNames()) returns a non-null string — a defined parameter name within edit-distance threshold.","commonSituations":"Minor typo in parameter name (e.g., 'BRNACH' instead of 'BRANCH'); case sensitivity issue; transposed characters; similar parameter names causing confusion.","solutions":["Use the suggested parameter name from the error message (the 'Did you mean X?' part).","Copy the exact parameter name from the job's configuration to avoid typos.","If multiple parameters have similar names, consider renaming them in the job config for clarity."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Validate and suggest corrections for parameter names\nParametersDefinitionProperty pdp = job.getProperty(ParametersDefinitionProperty.class);\nfor (String name : parameters.keySet()) {\n    if (pdp.getParameterDefinition(name) == null) {\n        String nearest = EditDistance.findNearest(name, pdp.getParameterDefinitionNames());\n        String msg = nearest != null\n            ? \"Did you mean '\" + nearest + \"'?\"\n            : \"No similar parameter found.\";\n        throw new AbortException(\"Invalid parameter '\" + name + \"'. \" + msg);\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    // build command run()\n} catch (CmdLineException e) {\n    // 'Did you mean' message is already user-friendly\n    stderr.println(e.getMessage());\n    return 1;\n}","preventionTips":["Use the 'Did you mean' suggestion directly from the error message to fix the name.","Copy parameter names from the job configuration rather than typing from memory.","Validate parameter names in scripts against the Jenkins API."],"tags":["cli","build","parameters","validation","edit-distance"],"backgroundTag":null,"analyzedSha":"2e228ff40b14dbc8b14ffbc6edf0e4383cf744fc","analyzedAt":"2026-08-14T07:07:15.274Z","schemaVersion":2},"datasetVersion":"2026-08-14T10:17:34.591Z"}