gpt4 book ai didi

java - 运行 Eclipse 插件

转载 作者:行者123 更新时间:2023-11-30 12:00:56 26 4
gpt4 key购买 nike

如何在此处的资源 [1] 下运行插件项目:http://www.eclipse.org/articles/article.php?file=Article-JavaCodeManipulation%5FAST/index.html

如果我没记错的话,项目起点在这里公共(public)类 ASTArticleActionDelegate 实现 IObjectActionDelegate -> public void run(IAction action)

public void run(IAction action) {
if (selection instanceof IStructuredSelection) {
ICompilationUnit lwUnit = (ICompilationUnit) ((IStructuredSelection) selection).getFirstElement();
createActionExecutable(action.getId()).run(lwUnit);
}
}

我知道我应该将它作为 Eclipse 应用程序运行,但之后我应该怎么做才能看到一些东西?我只看到一个 Eclipse 应用程序启动了,没有别的,没有按钮或任何东西!

我搜索“IObjectActionDelegate”,它似乎与上下文菜单有关,即当我右键单击某物时我应该看到一些东西(IStructuredSelection - 树结构?)?但我看不出上下文菜单有什么不同!

请告诉我一个查看此项目正在运行的方法的示例,以便我能够使用它。

最佳答案

测试此 AST 项目示例 ( net.sourceforge.earticleast.app_1.0.0.zip_1.0.0.zip ) 的正确方法是:

  • 解压那个包
  • 在您当前的 eclipse 工作区中导入该包中的项目
  • 右键单击该项目并选择“调试为 > Eclipse 应用程序”

(注意“Debug As”,以便能够在您的第一个 eclipse 实例中设置断点)

启动第二个 eclipse 后,您可以:

  • 转到帮助/Anout Eclipse SDK,单击“安装详细信息”,单击“插件”,然后在顶部看到插件“抽象语法树文章,示例应用程序插件”,id“net.sourceforge.earticleast.app
  • 在第二个 eclipse 实例的新工作区中导入任何项目(例如,您可以重新导入 net.sourceforge.earticleast.app 项目!)
  • 右键单击任何类并在上下文菜单中查看自定义条目:“Ast article: Move Declaration”(检测相互矛盾的变量声明并将它们移动到正确位置的操作)

所以现在几乎所有东西都已准备就绪,可以测试这些 AST 操作。

最后一件事:创建一个 Java 单元编译能够突出显示那些重写的变量声明。

在导入的项目(无论是什么)中创建一个包 test , 类:

package test;

public class Test {

static {
int i = 2;
System.out.println("test");
System.out.println(i);
}

}

右键单击该类并选择“Ast article: Move Declaration”:查看立即重写为的源代码:

package test;

public class Test {

static {
System.out.println("test");
int i = 2;
System.out.println(i);
}

}

从eclipse的第一个实例开始,你可以设置一些断点:

  • ASTArticleMoveVariableDeclaration:run()
  • AbstractManipulator:manipulate(final CompilationUnit unit, Collection<VariableBindingManager> managers)

看看魔法在哪里发生。

“移动声明”案例的其他案例是:

static {
int i = 2;
System.out.println("test");
try
{
System.out.println(i);
}
catch(Exception e)
{
System.out.println(i);
}
}

重写为:

static {
System.out.println("test");
int i = 2;
try
{
System.out.println(i);
}
catch(Exception e)
{
System.out.println(i);
}
}

最后,还有一个更进阶的 Action 是:

package test;

public class Test {

static {
int i = 2;
i = 3;
System.out.println(i);
}

}

package test;

public class Test {

static {
i = 3;
int i = 3;
System.out.println(i);
}

}

' int i = 2 ' 已被正确删除。但是,请注意 ' i = 3 ' 剩下的:那是因为新的声明节点 ' int i = 3添加之后 ' i = 3 ' 而不是替换它。

经过一番调试,结果是ASTRewriteBasedManipulator:addNewVariableDeclaration()忘记删除初始值设定项“i=3” ' 它应该用声明 ' int i = 3 代替'.

只需在这个方法的末尾添加:

 rewrite.remove(manager.getInitializer().getParent().getParent(), null);

一切顺利。

关于java - 运行 Eclipse 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1383139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com