Search code examples
jsonconfigurationcode-analysiscfmlcflint

How to add parameters to CFLint rule


I want to set specific parameters for the built-in CFLint rules using CFLint 1.2.3. Unfortunately, there is currently no clear description how to do that.

So I tried to set them in different ways within the configuration having a look at the project test files and the provided JSON schema:

As defined in one of the test files:

{
  "rule" : [ 
    {
      "name": "VariableNameChecker",
      "className": "VariableNameChecker",
      "message": [
        {
          "code": "VAR_TOO_SHORT",
          "severity": "INFO",
          "messageText": "Variable ${variable} SHORTER THAN ${MinLength}!"
        }
      ],
      "parameter": [
        {
          "name": "MinLength",
          "value": "5"
        }
      ]
    }
  ],
  "inheritParent" : true
}

Within the rule object:

{
    "rule": [ ],
    "excludes": [ ],
    "includes": [
        {
            "code": "VAR_TOO_SHORT",
            {
               "parameter": {
                   "MinLength": "5"
               }
            }
        }
    ],
    "inheritParent": false
}

As separate global property:

{
    "rule": [ ],
    "excludes": [ ],
    "includes": [
        {
            "code": "VAR_TOO_SHORT",
        }
    ],
    "parameter": {
        "MinLength": "5"
    }
    "inheritParent": false
}

I also tried different naming conventions as parameter name like VariableNameChecker.MinLength and also writing parameters instead of parameter, though without luck.

What is the correct syntax to specify the parameters?


Solution

  • The only ways to override a plugin param prior to CFLint 1.3.0 are (1) replace the cflint.definition.json file with your own (2) set a system property in the form ClassName DOT parameter. for example:
    java -DVariableNameChecker.MinLength=5 cflint-1.2.3-all.jar -file

    In CFLint 1.3.0 the following will work:

    {
        "parameters" : {
            "VariableNameChecker.MinLength": "5"
        }
    }