2013-04-04 64 views
7

我知道如何爲類/接口/包的子集生成Javadoc。但是有沒有一種方法可以只爲公共方法的一部分生成Javadoc?有沒有辦法爲公共方法的子集生成Javadoc?例如,通過將公共方法註釋爲「不屬於公共API」

我更喜歡的是能夠將方法(Javadoc標記或註釋)標記爲屬於某個API或不屬於它的一部分。然後有一個工具只爲指定的一組方法產生Javadoc - 這就是形成API的方法。

在我的項目中,公共/私有/包訪問方法的選擇是不夠的。公共方法可能屬於公共API,也可能屬於API 1,但不屬於API 2.本質上,我希望能夠從我的公共方法的任意子集中選擇API。

+0

還沒有找到解決方案。我對這個話題也很好奇。 +1 – Lenymm 2013-04-04 13:23:08

+1

或者,您可以通過單獨的物理接口/類/包公開單獨的概念性API。 – 2013-04-04 13:24:44

回答

2

如果您使用的是javadoc命令行工具,則可以將公共方法標記爲Deprecated並使用-nodeprecated選項來排除公共方法。但是如果你想要更復雜的東西,你必須自己實現它。

如何做一個粗略的想法:

  1. 創建自定義的註釋@ API1,@ API2等
  2. 分類與註釋您的方法(即它們標記)
  3. 編寫自定義Ant任務,它讀取一個配置參數(例如,從一個文件中),該配置參數告訴您要爲哪個API生成Javadoc。
  4. 仍然在Ant任務中,遍歷註釋的方法,並將不是所選API的所有API註釋替換爲Deprecated註釋。這會將他們從Javadoc中排除。

恕我直言,這是一個很大的麻煩。就像他們在評論中所說的那樣,如果你有一個具有多個接口的類(針對不同的用戶配置文件,我猜?),可以考慮編寫單獨的接口。

2

如果不綁的javadoc,你可以嘗試交替使用Doxygenconditional sections

public class SomeClass { 
    /// @cond API1 
    /** 
    * This method can be called as part of API1 only. 
    */ 
    public void method() { ... } 
    /// @endcond 

    /// @cond (API1 || API2) 
    /** 
    * This method can be called as part of API1 or API2. 
    */ 
    public void method2() { ... } 
    /// @endcond 
} 

當你組的方法得當,還可以限制所需@cond語句的數量。

創建文檔時,可以使用ENABLED_SECTIONS配置選項來選擇實際包含的方法。

+1

Doxygen解決方案看起來不錯。但是,我必然會遇到Javadoc。感謝您的意見。有趣。 – 2013-04-05 08:33:25