将特定节点传递给ESLint选项

时间:2015-11-13 00:16:47

标签: eslint

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

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.`)
      }
    }
  }
}

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

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

在这个特定的函数中,我正在使用我的断言检查AST中特定节点的返回值。我知道context.options[1]不起作用。有没有办法实现这个目标?如果我需要澄清我正在寻找的东西,请告诉我。

1 个答案:

答案 0 :(得分:0)

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

相关问题