0

ExpressionStatement在 ESLint 中,您可以通过 Esprima 解析器使用和之类的关键字访问从代码生成的抽象语法树中的特定节点VariableDeclarator。我想开发一个断言函数,它允许我将特定节点传递给optionsESLint。

function validateExpressionStatement(context){
  return {
    context.options[1]: function (node) {
      var source = context.getSource();
      var sourceEval = eval(source);
      if (!(sourceEval == context.options[0])) {
        assertOk(false, "", `Expected a return value of ${context.options[0]}.`);
      }
      else {
        assertOk(true, `${context.options[0]} was returned correctly.`)
      }
    }
  }
}

我的断言会将用户输入的值推送到选项数组中,这样我就可以在测试代码之前选择要检查的节点。

function assertExpressionStatementReturn(value, treelevel){
    config["rules"]["validate-expression-statement"][1] = value;
    config["rules"]["validate-expression-statemet"][2] = treelevel;
}

在这个特定的函数中,我正在使用我的断言检查来自 AST 中特定节点的返回值。我知道这context.options[1]行不通。有没有办法做到这一点?如果我需要澄清我在寻找什么,请告诉我。

4

1 回答 1

0

抱歉,如果我误解了您的要求,但是 ESLint 存储库中已经有一些规则可以做到这一点。例如comma-style,可以接受 AST 节点类型列表作为例外。代码位于此处

于 2015-11-16T01:46:19.803 回答