javascript - 埃斯林特 : no-restricted-syntax for specific require function calls

标签 javascript abstract-syntax-tree eslint

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

在专有语言中,除了原生 JS 数组之外,我们还可以使用 Arraylist 类。现在我们已经完全转向原生 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"
}

有人可以帮我正确的语法吗?

最佳答案

正确的语法应该是:

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

关于javascript - 埃斯林特 : no-restricted-syntax for specific require function calls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44875315/

相关文章:

java - 用于 Java 的 AST 差异提取器

javascript - ESLint - 别名设置

javascript - Ionic2 在 Provider 中使用 Ionic Storage

compiler-construction - 解决循环导入问题

javascript - node.js 南 : call JavaScript callback in C++ function

haskell - GHC 管道 : Core, STG - AST 还是文本?

javascript - 箭头函数中的评估

Vue.js 3 模板-文字错误无法读取 null 的属性 'range'

javascript - 缩小 Canvas 内图表的大小

javascript - 如果注销,Bigcommerce 会重定向到登录