【问题标题】:How to automatically generate comments for getter/setter based on field comments in Eclipse?如何根据 Eclipse 中的字段注释自动为 getter/setter 生成注释?
【发布时间】:2010-11-03 00:34:42
【问题描述】:

我希望 Eclipse 根据之前为字段定义的 cmets 为我的 getter 和 setter 方法自动生成 Javadoc cmets。我怎样才能做到这一点?

背景:我们公司的一项政策是注释每个方法和字段(即使它们有不言自明的名称)。所以我必须通过描述字段并再次描述getter / setter来做多余的工作。

例子:

/**
 * name of the dynamic strategy
 */
private String dynName;

/**
 * get the name of the dynamic strategy
 * @return
 */
public String getDynName() {
    return dynName;
}

在网上搜索表明,我不是唯一一个遇到问题的人 - 但我找不到任何解决方案。我查看了http://jautodoc.sourceforge.net/,但似乎它无法做到这一点。

【问题讨论】:

  • 这有多大用处?你可以在dynName 上输入F3,它会带你到那里。即使不是不可能,重构也变得困难。

标签: java eclipse javadoc


【解决方案1】:

自 1.6 版(问题后 1 年)以来的 JAutodoc 有一个新选项“[G,S]etter from field comment”,这正是您想要的。

这是一个非常方便的功能。字段 cmets 通常不包含在最终的 Javadoc HTML 中,因为它们可能/应该是私有成员(为每个私有成员生成 Javadoc 也不好),因此没有它,cmets 将完全丢失!

我想知道这个 Q/A 线程是否会促使作者实现这个不错的功能。

【讨论】:

  • 完美的插件,恕我直言,这个问题比 Spoon 更好。
【解决方案2】:

我自己终于找到了解决方案(或至少是一种解决方法)。我在 SO 上读到了 Spoon。它是一个 Java 程序处理器,允许读取和修改 Java 源文件。它甚至可以用作 Eclipse 插件或 Ant/Maven 脚本。

您要做的就是扩展 AbstractProcessor,它将处理一个方法。如果 方法名称以 get/set 开头,它查找相应的字段,提取其注释并用它替换或扩展访问器注释。

我有一个小蚂蚁脚本,它获取我所有的资源并处理它们。

在eclipses代码模板中集成的东西当然会更方便,但目前这种方式还可以!

【讨论】:

    【解决方案3】:

    如果您使用 Eclipse 的工具来覆盖/实现方法...从源菜单中,有一个选项可以自动生成 javadoc cmets。您可以在首选项->java->代码样式->代码模板-> cmets中修改注释模板。

    【讨论】:

    • 是的,但模板唯一可用的变量是 ${bare_field_name},它是字段的名称 - 而不是它在评论中的描述
    • 这是一个开始。您最终需要在某处提供此描述。
    • 对,我想对字段进行注释,然后让eclipse根据字段注释生成带有cmets的getter/setter。
    【解决方案4】:

    我同意复制文档是个问题。 如何记录私有变量,然后在访问器方法中提供指向该文档的链接?

    (显然,以下解决方案适用于非常简单的访问器方法。您并不想在 API 中公开私有变量文档,尤其是当您的访问器方法确实做了一些值得注意的事情时。)

    public class MyBean {
    
    /**
     * The names description
     */
    private String name;
    
    /**
     * @return {@link #name}
     */
    public String getName() {
        return name;
    }
    
    /**
     * @param name {@link #name}
     */
    public void setName(String name) {
        this.name = name;
    }
    }
    

    请注意,如果您使用的是 Eclipse,您可能需要启用 在您的 javadoc 中引用私有变量,如下所示:

  • 在 Package Explorer 中右键单击项目并选择 Properties
  • 折叠 Java Compiler 节点并选择 Javadoc
  • 选择启用项目特定设置并在仅将成员视为可见的:选择私有

    我怀疑搜索性能会受到影响,但我还没有使用过测试。

  • 【讨论】:

      【解决方案5】:

      如果你有宏语言,你可以编写一个函数,比如“打开一个弹出窗口,让我输入一些文本,然后根据模板生成 getter 和 setter,包括它的 javadoc”。

      Eclipse 实际上并没有真正支持这种宏语言,但也许你还是可以看看:Is there a Macro Recorder for Eclipse?

      如果您不愿意在 eclipse 和其他工具之间切换,那么您可以尝试 JEdit (jedit.org),它包含强大的 beanshell 宏语言。 这样,你可以打开eclipse和jedit,将你要处理的文件从eclipse拖放到jedit,使用jedit宏功能,然后保存文件,最后在eclipse中刷新文件。

      这有点烦人,但对于某些处理,这是我成功采用的方式。

      【讨论】:

      • 我来看看宏的东西。使用 eclipse 和 jedit 有点麻烦。我想那我手动复制 cmets 会更快!
      【解决方案6】:

      IntelliJ IDEA 的 JavadocWriter 插件说它“智能地将 javadoc 从字段复制到访问器”。 Caveat utilitor:我自己没试过这个插件,3年没更新了。

      【讨论】:

      • 这就是我所需要的——但我不会从 eclipse 切换到 IDEA 来获得该功能 ;)
      【解决方案7】:

      恕我直言,如果 cmets 可以自动生成,它们不会增加太多价值。
      如果您调用了您的方法 getDynamicStrategyName(),则无需对其进行评论,因为该名称包含您将在评论中添加的所有信息。

      【讨论】:

      • 正如我所说,这是一项要求,即使名称易于理解。所以我对此无能为力。 cmets 当然不是真正生成的——你输入该字段的注释——eclipse 也应该为 getter/setter 使用该注释!并非总是可以将所有需要的信息都放入字段名中(除非您想拥有非常长的名称......)。
      【解决方案8】:

      我使用 Eclipse Luna 4.4。

      • 选择菜单Window\Preferences,选择Java\Code Style\Code Templates。选择部分Comments \ Getters | Setters,按下按钮Edit...


      • 已有很多变量供你使用,使用按钮Insert Variable...

      • 编辑您的评论格式,然后按按钮Apply,然后按OK 完成。

      【讨论】:

      • 这很好,但在最后一步,问题是可以使用哪个变量?如果我需要来自该领域的评论 - 是否有用于此目的的变量?
      • 这是否也可以用于将 cmets 添加到现有代码中?
      【解决方案9】:

      其实JAutodoc可以根据字段cmets生成getter/setter的cmets。 您必须选中“从元素名称创建评论”选项,请参阅 http://jautodoc.sourceforge.net/ 获取文档。

      【讨论】:

      • “从元素名称创建”与“从评论创建”不太一样,是吗?
      猜你喜欢
      • 2015-08-25
      • 2016-05-05
      • 2023-03-15
      • 1970-01-01
      • 2010-11-04
      • 2012-09-16
      • 2012-06-23
      • 2018-06-06
      • 1970-01-01
      相关资源
      最近更新 更多