2010-02-14 64 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) { 
相關問題