2010-02-14 63 views
22

我为我的Java项目使用Eclipse IDE。如何在Eclipse中更改方法签名时自动更新Javadoc?

我有一个问题。我在我的项目,该项目有javadoc注释类似如下的方法:

/** 
* Retruns the string representation of a input stream 
* @param in 
* @return 
* @throws IOException 
*/ 
public static String getStringFromInputStream (InputStream in) throws IOException { 
    StringBuffer out = new StringBuffer(); 
    byte[] b = new byte[4096]; 
    for (int n; (n = in.read(b)) != -1;) { 
     out.append(new String(b, 0, n)); 
    } 
    return out.toString(); 
} 

现在我想知道,有没有什么办法由每次如果我做我的方法的签名的变化,这些变化反映在javadoc自动。

+2

可能是件好事标题改成这样。作为标题声明,javadoc没有问题。也许是“重构Eclipse中的JavaDoc更改”。我不认为你可以做到这一点,而不写一个插件,顺便说一句。 – 2010-02-14 06:58:19

+0

**这仍然是开放的回答!!!! **。 所有答案都参考重构选项。但是如果我添加了一个新的参数或从方法签名中删除了一个参数会怎么样?在那种情况下,如何更新javadoc? – mtk 2015-01-30 09:24:51

+0

伙计们检查我的答案寻求解决办法! – mtk 2015-01-30 09:30:27

回答

1

Atl+Shift+R和改变

+1

仅适用于参数名称。签名更改还包括添加/删除参数,更改throws子句等。 – whiskeysierra 2010-02-14 23:57:07

+2

从技术上讲,这只是命令[用于'重构'>'重命名'](http://www.n0sl33p.org/dev/eclipse_keys.html )。 – Pops 2011-09-08 16:16:26

4

我不知道任何方式自动同步的Javadoc头,但如果重命名使用Ctrl-1 + Rename in file参数,的Javadoc头被适当地重命名。

10

Eclipse提供了相当不错的选项,以确保javadoc的正确性除了重命名重构JesperE提到:

  • 更改方法签名重构操作还修改的javadoc(添加/删除必要的标记)。你应该使用这个或重命名来修改已经在使用的代码。
  • 如果激活添加Javadoc标记首/的Java /编辑/打字页,然后键入的Eclipse + /**一个方法之前输入后产生正确的javadoc存根。

您还可以设置编译器选项来检查首/的Java /编译器/的Javadoc的javadoc缺少的标记。在这种情况下,您会收到来自编译器的关于缺少/额外标签的警告,并且您使用quickfix(Ctrl + 1)来修复它们。从长远来看,确保现有javadocs的正确性是一个很好的选择。

2

重构与“更新引用”选项是不够的。您需要确保在Window-> Preferences,Java-> Compiler-> Javadoc中选中了“处理Javadoc注释”。按照您的喜好调整首选项页面,它将正常工作。

1

正如我所评论的场景,其中重构将无法正常工作

所有的答案是指重构选项。但是如果我添加了一个新的参数或从方法签名中删除了一个参数会怎么样?在那种情况下,如何更新javadoc?

有一个解决办法,我发现,但肯定它仍然不是一个自动化的过程,不利于大量的更改。

解决方法是,
1.删除javadoc评论并将它明确发表评论,即更新/**' and change it to just/*'。
2.现在再次在方法签名/声明上方输入/**,然后按回车。它会重新填充更新的参数并返回信息。现在只需将旧评论中的描述行移至新的评论。
3.您可以使用Alt + 向上/向下实现此目的的箭头。
4.完成删除旧的javadoc评论后,它被复制到正确的位置。

+1

_“但是如果我添加了一个新的参数或从方法签名中删除了一个参数,那么如何更新javadoc呢?” - Csaba_H的回答解决了这个问题。您使用_Refactor_> _Change Method Signature ..._并且它会在方法签名__和javadoc上添加和/或删除参数。 – 2015-07-16 18:42:04

2

只需按下ALT + SHIFT + J方法名并删除多余的线条:

BEFORE:

/** 
* Copies all the details from the passed template into the passed new 
* header. 
* 
* @param pNewHeader 
*/ 
private void doCopy(int pNewHeader, int pTemplate) { 

AFTER:

/** 
* Copies all the details from the passed template into the passed new 
* header. 
* 
* @param pNewHeader << DELETE 
*/     << DELETE 
/**     << DELETE 
* @param pNewHeader 
* @param pTemplate 
*/ 
private void doCopy(int pNewHeader, int pTemplate) { 
相关问题