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.
精彩评论