开发者

How can I automatically update the Javadoc when changing the method signature in Eclipse?

I am 开发者_StackOverflow中文版using Eclipse IDE for my Java Project.

I have one problem. I have the methods in my project which have the javadoc comments like as follows:

/**
 * 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();
}

Now I want to know that Is there any way by which whenever if I make changes in my method's signature, those changes reflect in the javadoc automatically.


Eclipse provides fairly good options to ensure the correctness of javadoc besides the Rename refactor JesperE mentioned:

  • The Change method signature refactor operation also modifies javadoc (add/remove necessary tags). You should use this one or Rename to modify code which are already in use.
  • If you activate Add Javadoc tags on Preferences/Java/Editor/Typing page then Eclipse generates the correct javadoc stub after typing /** + Enter before a method.

You can also set compiler options to check javadoc missing tags on Preferences/Java/Compiler/Javadoc. In this case you get warnings from the compiler on missing/extra tags and you have quickfix (Ctrl+1) for fixing them. It is a good option to ensure the correctness of existing javadocs in the long run.


I don't know about any way to automatically sync the Javadoc header, but if you rename a parameter using Ctrl-1 + Rename in file, the Javadoc header is appropriately renamed.


Refactoring with the "Update references" option is not sufficient. You need to ensure that "Process Javadoc comments" is checked in Window->Preferences, Java->Compiler->Javadoc. Tweak the preference page like you prefer and it will work fine.


Just press ALT+SHIFT+j on the method name and delete the extra lines:

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) {


Press Atl+Shift+R and change


As I have commented the scenario, in which refactor won't work

All answer refer to refactor option. But what if I added a new param or deleted a param from method signature. In that case, how to update the javadoc?

There is a workaround I found, but yes it's still not a automated process and is not good for large number of changes.

The workaround is to,
1. remove the javadoc comment and make it plain comment i.e. update the /**' and change it to just/*'.
2. Now once again just above the method signature/declaration enter /** and press enter. It would re-populate the updated params and return info. Now just move the description lines from the older comment to the new.
3. You can use Alt + Up/Down arrows for achieving this.
4. Done delete the old javadoc comment after it's copied in correct place.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜