我需要以编程方式重命名给定范围内的标识符,例如,java程序中的方法。例如,给定以下java函数:
public void doSomething(){
int x = 10;
int y = x * 2;
int z = x + y;
}将变量重命名(x重命名为a,y重命名为b,z重命名为c)后,我应该获得以下函数:
public void doSomething(){
int a = 10;
int b = a * 2;
int c = a + b;
}如何以编程方式实现这样的标识符及其引用的重命名?
我一直在研究Eclipse AST和Java Model。在任何一种情况下,我都必须搜索任何给定标识符的所有匹配项,然后替换它们。我想知道是否有更好的方法来做到这一点( Eclipse重构UI如何支持这样的变量重命名)?或者,我应该研究一下语言工具包(org.eclipse.ltk.core.refactoring)吗?有任何教程、示例代码或建议吗?
请帮帮忙。
发布于 2010-11-16 07:54:07
我可以使用以下代码重命名。
RenameSupport renameSupport = RenameSupport.create(field, newName, RenameSupport.UPDATE_REFERENCES);
renameSupport.perform(workbench.getShell(), workbench);但它会将更改应用于实际的源文件。有没有什么是可以预防的?我只需要内部重命名的代码,不能改变实际的源代码。
发布于 2010-08-20 07:10:39
我不清楚您是否希望执行这种全盘重命名(即所有类中的所有方法),还是只对您手动识别的特定类执行重命名。假设是后者,我建议您:
这应该能起到作用。
发布于 2010-08-18 10:01:49
我真的怀疑这样做是否明智,但它可以使用批注处理器来完成。您将不得不承认,批注处理器不能修改现有的源代码,但可以创建基本上是原始源代码的克隆的新源代码(重命名除外)。
我能想到的唯一用例是,您已经准备了具有人类语言A(例如,日语)中有意义的变量名称的源代码,并且您希望与听众(老板、学生、客户等)讨论它。更熟悉人类语言B的人(例如阿拉伯语)
除此之外,我想不出有什么好的理由去这么麻烦。在给定的示例中,x、y和z是局部变量。既然范围这么小,真的没有必要重新命名。
https://stackoverflow.com/questions/3506397
复制相似问题