如何在eslint规则修复中修改javascript AST

如何在eslint规则修复中修改javascript AST,javascript,eslint,rule,Javascript,Eslint,Rule,我目前正在研究一个eslint规则,它的修复程序应该删除链接属性 在当前示例中,b应该被剥离,因此 a.b()//或 a、 b.c() 应成为: a()//或 a、 c() 我的第一份草稿天真地获取了源代码的给定部分并删除了不需要的属性: fix:fixer=>{ 常量范围=getChainedAttribute(节点“b”)。范围; 范围[0]-=1;//同时去除前置点 返回fixer.remove(getChainedAttribute(节点'b')); } (getChainedAt

我目前正在研究一个eslint规则,它的修复程序应该删除链接属性

在当前示例中,
b
应该被剥离,因此

a.b()//或
a、 b.c()
应成为:

a()//或
a、 c()
我的第一份草稿天真地获取了源代码的给定部分并删除了不需要的属性:

fix:fixer=>{
常量范围=getChainedAttribute(节点“b”)。范围;
范围[0]-=1;//同时去除前置点
返回fixer.remove(getChainedAttribute(节点'b'));
}
getChainedAttribute
是一个帮助函数,返回链接属性。)

尽管此修复程序按预期工作,但它失败,eslint出现以下异常:

规则不应修改AST。
实际:
[对象]
预期:
[对象]
AssertStatdIntChange(node_modules/eslint/lib/testers/rule tester.js:406:24)
...
如何克服这个缺点以剥离链式属性/方法