我想在此脚本中找到没有任何父级的调用表达式:
1 + 1
function parent() {
2 + 2
}
3 + 3
在这里,我想获取1 + 1
和3 + 3
节点,但不是2 + 2
。
我想要实现的是:
j(file.source).find(j.ExpressionStatement, {
parent: null
});
那么是否有一个过滤器可以查找表达式是否有父级?
我想在此脚本中找到没有任何父级的调用表达式:
1 + 1
function parent() {
2 + 2
}
3 + 3
在这里,我想获取1 + 1
和3 + 3
节点,但不是2 + 2
。
我想要实现的是:
j(file.source).find(j.ExpressionStatement, {
parent: null
});
那么是否有一个过滤器可以查找表达式是否有父级?
AST 节点的 loc 属性具有缩进属性。如果缩进是0
when 可以假设这是一个顶级表达式:
j(file.source).find(j.ExpressionStatement, {
loc: {indent: 0}
});
这确实不可靠,因为它取决于缩进。
因为我找不到过滤属性的安全方法。我们也可以使用 jscodeshift.filter()
来获取父节点。如果是程序,那我们肯定是顶级的:
j(file.source).find(j.ExpressionStatement)
.filter(path => j.Program.check(path.parent.value));