【问题标题】:Use annotation to specify which classes/interfaces should be generate javadoc?使用注解指定哪些类/接口应该生成 javadoc?
【发布时间】:2011-02-16 16:00:34
【问题描述】:
我有一个 java 程序,想为类/接口生成 javadoc。但是,我只想为某些类和接口生成 javadoc。我只是想知道是否有任何方法可以在每个类/接口的开头添加注释以指示不应生成此类/接口 javadoc(类似于@no-generate-javadoc)
请问有人有想法吗?
谢谢
【问题讨论】:
标签:
java
javadoc
annotations
【解决方案1】:
编写自己的 doclet 非常简单,并且会为您提供所需的内容。您仍然可以委托给标准 doclet,因此您的实现只需要包含您的特定更改。
ExcludeDoclet 将是一个很好的起点。它从文件中读取排除的类。您可以通过调用 ClassDoc(实际上是基类 ProgramElementDoc)上的 annotations() 方法来获取批注,以获取批注,然后根据所需的排除批注检查这些批注。如果需要,您还可以对超类和实现的接口递归地执行此操作,
【解决方案2】:
感谢您提及我们的工具 - DocFlex/Javadoc
顺便说一句,简单地排除类和成员并不是全部。 生成的 JavaDoc 之后必须看起来一致。
例如,假设我们有以下情况:
- 类
C1扩展类C2
- 类
C2扩展类C3
-
C3 类包含一个公共方法 m() -- 应该记录在案
现在,让我们假设类C3 必须从文档中排除。
m() 方法会发生什么?
它应该在类C2 中声明的文档中显示!
然后,对于类C1,m() 必须显示为继承自类C2
(而不是来自 C3 类,因为它实际上在代码中)。
字段也是如此,实际上更复杂,因为同名字段不会重载,而是相互影响。例如
- 类
C1扩展类C2
- 类
C2实现接口I
- 类
C2包含一个私有字段F
- 接口
I 包含一个公共字段 F -- 可能会记录在案
假设接口I 必须从文档中排除。
字段I.F怎么办?
其实,什么都没有!它不应该出现在文档中,因为它被 C2.F 遮蔽,这是私有的,因此必须是不可见的。
标准 Doclet 的简单调整(委托)能否解决此类问题?
我们的工具可以!