如何向CFLint规则添加参数

时间:2017-12-27 13:04:50

标签: json configuration code-analysis cfml cflint

我想使用CFLint 1.2.3为内置CFLint规则设置特定参数。不幸的是,目前还没有明确的描述如何做到这一点。

所以我尝试在配置中以不同的方式设置它们,看看project test filesprovided JSON schema

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
}

在规则对象中:

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

作为独立的全球财产:

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

我还尝试了不同的命名约定作为参数名称,例如VariableNameChecker.MinLength,也写了parameters而不是parameter,但没有运气。

指定参数的正确语法是什么?

1 个答案:

答案 0 :(得分:2)

在CFLint 1.3.0之前覆盖插件参数的唯一方法是 (1)用你自己的文件替换cflint.definition.json文件 (2)以ClassName DOT参数的形式设置系统属性。例如:
     java -DVariableNameChecker.MinLength = 5 cflint-1.2.3-all.jar -file

在CFLint 1.3.0中,以下内容将起作用:

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