29

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

背景:我们公司的一项政策是评论每个方法和字段(即使它们有不言自明的名称)。所以我必须通过描述字段并再次描述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/但似乎它无法做到这一点。

4

9 回答 9

15

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

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

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

于 2011-11-15T22:54:53.127 回答
5

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

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

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

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

于 2009-07-01T12:33:11.283 回答
4

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

于 2009-06-15T13:26:20.547 回答
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 中启用引用私有变量,如下所示:

  • 在包资源管理器中右键单击项目并选择属性
  • 折叠Java Compiler节点并选择Javadoc
  • 选择启用项目特定设置,然后在仅将成员视为可见:选择私有

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

  • 于 2013-02-05T10:30:26.523 回答
    2

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

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

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

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

    于 2009-06-15T20:14:10.710 回答
    1

    IntelliJ IDEA的JavadocWriter插件说它“智能地将 javadoc 从字段复制到访问器”。警告实用程序:我自己没有尝试过该插件,并且已经 3 年没有更新了。

    于 2009-06-15T14:32:06.660 回答
    1

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

    于 2009-06-16T20:34:39.263 回答
    1

    我使用 Eclipse Luna 4.4。

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

    在此处输入图像描述

    • 有许多现有变量供您使用,请使用按钮Insert Variable...

      在此处输入图像描述

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

    于 2015-05-17T01:34:48.210 回答
    0

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

    于 2011-07-25T07:28:19.687 回答