8

我知道如何为类/接口/包的子集生成 Javadoc。但是有没有办法只为公共方法的一个子集生成 Javadoc?

我更希望能够将方法(Javadoc 标记或注释)标记为属于某个 API 或不属于它的一部分。然后有一个工具,它只为指定的方法集生成 Javadoc - 形成 API 的方法。

在公共/私有/包访问方法之间的选择对于我的项目来说是不够的。公共方法可能属于或不属于公共 API,或者它可能属于 API 1,但不属于 API 2。本质上,我希望能够从我的公共方法的任意子集中选择 API。

4

2 回答 2

2

如果您不依赖于 javadoc,您也可以尝试使用带有条件部分的doxygen

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在创建文档时通过配置选项选择实际包含的方法。

于 2013-04-04T13:54:45.987 回答
2

如果您使用的是javadoc命令行工具,则可以通过将公共方法标记为Deprecated并使用该-nodeprecated选项来排除它们。但是如果你想要更复杂的东西,你必须自己实现它。

关于如何做到这一点的粗略想法:

  1. 创建自定义注解@API1、@API2 等。
  2. 使用这些注释对您的方法进行分类(即标记它们)
  3. 编写一个自定义 Ant 任务,该任务读取配置参数(例如,从文件中),该参数告诉您要为哪个 API 生成 Javadoc。
  4. 仍然在 Ant 任务中,循环通过注解的方法,并将所有不是所选 API 的 API 注解替换为 Deprecated 注解。这会将它们从 Javadoc 中排除。

恕我直言,这很麻烦。就像他们在评论中所说的那样,如果您有一个具有多个接口的类(我猜是针对不同的用户配置文件?),请考虑编写单独的接口。

于 2013-04-04T13:30:21.977 回答