【问题标题】:Massive Eclipse AST Java Refactoring大规模 Eclipse AST Java 重构
【发布时间】:2014-07-23 15:58:48
【问题描述】:

尊敬的 stackoverflow 社区!

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

应该解决以下“问题”:

  • 方法不应在其定义中抛出通用异常。我正在考虑删除 Exception throws 块并让 eclipse 为我自动生成 throws 声明。这可能吗?我还没有找到任何相关的资源。我已经能够获取所有相关方法作为 JDT 模型,但不知道如何删除 throws 块并调用 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
    }
    
  • 应将受保护的字段重写为私有并提供受保护的访问器。我认为这是可以自我解释的,但是如何编辑项目外部的所有引用以访问 getter? (没有设置器,如果有,我可以手动编辑它们)。

提前谢谢你,对不起我的英语。

【问题讨论】:

    标签: java eclipse refactoring rcp eclipse-jdt


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 感谢您提供有关插件间谍的信息!这很有帮助。无论如何,我找不到要在不使用自己的 gui 的情况下执行的命令列表(例如创建 getter/setter 操作)..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多