运行 Eclipse 插件

2023-12-28

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

如果我没记错的话,项目的起点是这里 公共类 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 http://earticleast.sourceforge.net/net.sourceforge.earticleast.app_1.0.0.zip) is to:

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

(注意“调试为”,以便能够在第一个 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);          
    }
}

最后,还有一个更高级的动作,那就是:

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被添加after 'i = 3' 而不是替换它。

经过一番调试后发现ASTRewriteBasedManipulator:addNewVariableDeclaration()忘记删除初始化程序'i=3' 应该用声明替换'int i = 3'.

只需在该方法的末尾添加:

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

现在就可以走了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行 Eclipse 插件 的相关文章

随机推荐