java - 大规模 Eclipse AST Java 重构

标签 java eclipse refactoring rcp eclipse-jdt

亲爱的 stackoverflow 社区!

我必须重构大量的 java 类,并希望将其自动化。我想使用 Java JDT 并为此编写一个 eclipse 插件。

应解决以下“问题”:

  • 方法不应在其定义中抛出通用异常。我正在考虑删除 Exception throws block 并让 eclipse 自动为我生成 throws 声明。这可能吗?我还没有找到任何这方面的资源。我已经能够获取所有相关方法作为 JDT 模型,但不知道如何删除 throws block 并调用 eclipse 的自动更正功能。

    // So instead of
    public int foo() throws Exception {
        // do some SQL-stuff
    }
    // Should be
    public int foo() throws SQLException, NoResultException {
        // do some SQL-stuff
    }
    
  • protected 字段应重写为私有(private),并应提供 protected 访问器。我认为这是可以 self 解释的,但如何编辑项目外部的所有引用来访问 getter? (没有 setter ,如果有,我可以手动编辑它们)。

预先感谢您,并对我的英语感到抱歉。

最佳答案

如果您不知道如何开始,这里有一个关于如何在 JDT 中使用 AST 和 Java 模型的很好的教程: http://www.vogella.com/tutorials/EclipseJDT/article.html

如果您分几个步骤进行重构,您可以首先使用您自己的插件删除所有带有通用异常的抛出声明,从而留下带有编译错误的触摸源。然后,您可以在 IDE 中手动启动快速修复。如果您有大量更改,我不会推荐这种方法。

很难找到 API 本身的良好入口点,因为您可能希望在一个“事务”中完成所有代码更改。我过去尝试过类似的东西,并且总是自己编写相关部分的代码,尽管阅读 Eclipse 代码确实有很大帮助!一个好的开始方法是使用“Plugin Spy”来查找相关的类。 (在 Mac 上为 Shift+Alt+F1 或 Shift+Option+F1)。它显示当前所选内容的信息。

要自己创建 throws block ,您可以使用 AST 中的访问者模式检查代码并收集所有抛出的异常(如果它们未包含在合适的 catch block 中)。

第二个要求可以直接使用 AST 实现。您可以查看 eclipse 的“封装字段”重构来了解如何执行此操作(或者如果可能的话使用此功能)。

关于java - 大规模 Eclipse AST Java 重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24890814/

相关文章:

java - 如何在 Eclipse 中的 Java Applet 中每秒显示帧数?

c++ - 重构 C++ 代码以使用前向声明

delphi - 代码重复检测 - Delphi

java - 该绘图应用程序运行,但当您绘制某些内容时没有任何反应

java - Spring 5.0.0.M3 调用 ApplicationEventListener 时出错 : No ServletContext set - Exception encountered during context initialization

java - 如何在java中获取调用层次结构

android - 在 Eclipse : no repository found 中安装 ADT 时出错

eclipse - 删除@WebServlet 会导致 java.lang.ClassNotFoundException

java - Eclipse JDT 搜索引擎的替代或改进

java - IntelliJ 重构为内联冗余数据类