【问题标题】: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 中声明的文档中显示! 然后,对于类C1m() 必须显示为继承自类C2 (而不是来自 C3 类,因为它实际上在代码中)。

    字段也是如此,实际上更复杂,因为同名字段不会重载,而是相互影响。例如

    • C1扩展类C2
    • C2实现接口I
    • C2包含一个私有字段F
    • 接口 I 包含一个公共字段 F -- 可能会记录在案

    假设接口I 必须从文档中排除。 字段I.F怎么办? 其实,什么都没有!它不应该出现在文档中,因为它被 C2.F 遮蔽,这是私有的,因此必须是不可见的。

    标准 Doclet 的简单调整(委托)能否解决此类问题?

    我们的工具可以!

    【讨论】:

      猜你喜欢
      • 2011-07-30
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2011-09-14
      • 2014-04-21
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      相关资源
      最近更新 更多