我正在使用javadoc
Ant 任务生成的 javadocs 来记录 Web 服务,并且我想从输出中排除一些构造函数。我怎么做?
7 回答
对于公共方法,没有办法做到这一点。标准做法(即使在相当多的 JDK 类中)是表明该方法或构造函数不是供公共使用的。
@exclude - 用于从 Javadoc 生成中排除的 API。程序员会用@exclude 标记一个类、接口、构造函数、方法或字段。标签的存在会导致 API 从生成的文档中排除。标记后面的文本可以解释排除的原因,但会被 Javadoc 忽略。(以前作为@hide 提出,但术语“隐藏”更适合运行时动态显示/隐藏功能。)有关更多讨论,请参阅: Developer Connection 中的功能请求#4058216。
请参阅相关的Javadoc FAQ 条目。
当前没有 Javadoc 选项可以从 javadoc 生成的文档中隐藏、排除或禁止公共成员。
看起来这在vanilla Javadoc中是不可能的,但提供了一些解决方法。
从您的文档中排除一些公开的东西不只是“通过默默无闻的安全性”(或者更确切地说,“通过默默无闻的文档”)的变体吗?如果构造函数是代码 API 的一部分,那么它们就可以使用。如果他们发现并使用它,那是他们的错吗(因为您首先将其公开)?
如果您可以更改构造函数的可见性或完全删除它,我会这样做。如果您无法从 API 中删除它,请在构造函数的 Javadoc 中说明它不打算通过 Web 服务使用。这样,您就与 API 的用户建立了合同,通知他们不要使用它。
最好记录不应该使用它而不是根本不记录它(如果它是公开的)。不记录它会增加它被无意使用的风险,然后在您更改实现时使用它的客户端代码会中断。
目前最简单的解决方案是用 开始 javadoc 注释@deprecated
,然后传递-nodeprecated
给javadoc
命令。当然,如果您有实际已弃用的项目但仍想包含在文档中,这可能是不可接受的。
更改方法的方法访问级别,然后使用javadoc
任务的访问级别过滤属性 、private
等package
。只有在代码中有意义时才这样做,例如,访问级别不适当的方法。
例如,对于构造函数,您可以将访问级别降低到package
,然后在同一个包中创建一个工厂类,该类提供包外的构造访问。工厂类可以很容易地从 javadocs 中过滤出来。有点hacky,但它有效。
试试 Chris Nokleberg 的 ExcludeDoclet: http ://www.sixlegs.com/blog/java/exclude-javadoc-tag.html
我一直在尝试它,它似乎可以解决问题。
我得到的关闭是使用Doclava,它具有您可以在方法文档中指定的 @hide 标记。