Eslint:特定require函数调用的无限制语法

时间:2017-07-02 21:21:01

标签: javascript abstract-syntax-tree eslint

我们正在使用的当前平台刚刚从基于ECMAScript的专有语言转移到Javascript。

在专有语言中有Arraylist类,我们可以使用除原生JS数组之外的其他类。现在我们已经完全转移到本机JS,我想在有人试图使用Arraylist时生成ESLINT警告。

我读到了"无限制语法" Eslint中的规则并尝试在我的代码

中为下面的调用创建规则
require( 'dw/util/ArrayList' )

我提出了以下语法,但这不起作用。我甚至尝试过arguments[0].value而不是arguments.value

"no-restricted-syntax": [
    "warn",
    {
        "selector": "CallExpression[callee.name='require'][arguments.value='dw/util/ArrayList']",
        "message": "Please use native JS Array"
    }
]

我使用ESLint Parser Demo检查语法树,如下所示

    {
  "type": "Program",
  "start": 0,
  "end": 30,
  "body": [
    {
      "type": "ExpressionStatement",
      "start": 0,
      "end": 30,
      "expression": {
        "type": "CallExpression",
        "start": 0,
        "end": 30,
        "callee": {
          "type": "Identifier",
          "start": 0,
          "end": 7,
          "name": "require"
        },
        "arguments": [
          {
            "type": "Literal",
            "start": 9,
            "end": 28,
            "value": "dw/util/ArrayList",
            "raw": "'dw/util/ArrayList'"
          }
        ]
      }
    }
  ],
  "sourceType": "module"
}

有人可以用正确的语法帮助我。

1 个答案:

答案 0 :(得分:0)

正确的语法应为:

[arguments.0.value='dw/util/ArrayList']