ExpressionStatement
在 ESLint 中,您可以通过 Esprima 解析器使用和之类的关键字访问从代码生成的抽象语法树中的特定节点VariableDeclarator
。我想开发一个断言函数,它允许我将特定节点传递给options
ESLint。
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]
行不通。有没有办法做到这一点?如果我需要澄清我在寻找什么,请告诉我。