我们可以使JavaDoc工具解析方法内的注释吗?

时间:2017-10-11 05:41:27

标签: java javadoc

我尝试搜索这个问题很多,但找不到确切问题的答案。我也读过这个问题:Does the javadoc tool recognize comments inside methods?

所以我的问题是对此的后续行动。我知道默认的JavaDoc工具会简单地忽略方法中的任何javadoc注释,但是我们能不能以某种方式让它读取这些注释,并且可以尝试在我们的客户doclet / taglets上处理它们?我也尝试编写自己的doclet和taglet,但由于JavaDoc完全忽略了方法中的注释,我无法成功。

例如,假设我有以下代码:

public void methodX() {
        /**
         * @MyTag This is a sample javadoc comment with custom tag
         */
    }

有没有办法让JavaDoc不忽略methodX中的注释?如果javadoc可以解析并提供注释文本,我可以在自定义doclet中处理响应。

尝试此操作的理由: 我想知道我为什么要寻找这样的要求会很有帮助。基本上我们有很多配置驱动编码,这些配置存储在DB中(因此我们可以在运行时简单地更改配置,而无需再次通过BRD过程)。因此,我们计划在中心位置记录这些配置。而不是保持代码和文档分离,我们还认为将文档保持更接近代码本身是明智的,这样任何代码更新也可能更新文档。可以通过doclet / taglet发布到中心位置,但前提是JavaDoc可以在方法中读取这些注释。

那么是否有可能让JavaDoc工具通过方法内的注释进行读取?或者我们必须尝试编写类似于JavaDoc的我们自己的注释解析器。

1 个答案:

答案 0 :(得分:1)

所以我做了一点挖掘,看到没有人回答这个问题,似乎人们(也许)不确定这种可能性。

根据我的发现,让JavaDoc工具解析方法中的注释似乎不可行。原因是, JavaDoc甚至没有得到那些解析的评论文本。现在,我的意思是, JavaDoc依赖于JDK编译器(当然是API)将Java代码转换为令牌和树,然后从那里获取所有注释。因此,除非你可以修改JDK编译器本身以使其“不要忽略”方法内的注释,否则不能使JavaDoc读取方法内的注释。

哦!对于解决我们问题的部分,我们现在限制为我们使用的常量定义带有自定义标记的 JavaDocs ,并通过自定义Taglet 处理新标签。