假设我有一个无法假设的 ASTRewrite 实例(即由可覆盖的方法返回)。我想测试重写是否实际上存储了对编译单元的任何修改,否则它仅仅是“身份”更改。怎么可能做到这一点?
我查看了ASTRewrite的方法,但找不到任何有用的方法。所以我想正确的方法并不简单。
假设我有一个无法假设的 ASTRewrite 实例(即由可覆盖的方法返回)。我想测试重写是否实际上存储了对编译单元的任何修改,否则它仅仅是“身份”更改。怎么可能做到这一点?
我查看了ASTRewrite的方法,但找不到任何有用的方法。所以我想正确的方法并不简单。
您可以使用TextEdit确定应用于 AST 的编辑。
TextEdit edits = rewrite.rewriteAST(document, compUnit.getJavaProject().getOptions(true));
如果未对 AST 进行任何更改,则编辑将为空。否则它将包含对带有偏移量的 AST 的添加和删除。
您可以使用该getLength()
方法检查 TextEdit 是否为空。
// If edits available, write them to the file.
if (edits.getLength() != 0) {
// do something
}
更多帮助可以从以下链接中找到: