我正在编写一个库,它可以将已经单元测试过的示例代码(其源代码、输出和任何输入文件)插入到JavaDoc中,并具有许多自定义选项。使用该库的主要方式是使用内联标签,例如。
我致力于创建自己的解析器,仅搜索我的特定标签。这很麻烦,但不太可怕。您可以迭代每个Java源文件的行,搜索
此解析器必须在执行javadoc之前运行,因此需要一个重复的目录结构。 (1)原始代码,带有未解析的自定义标记,(2)该代码的副本,带有解析输出。我会将所有代码复制到重复目录中,然后仅解析已知具有这些标签的Java文件(以某种方式“注册”在解析器中的类)。
这是一个合理的方法吗?是否已经有更跨平台的javadoc/taglet解析器,以便我不必自己编写?是否已经有类似taglet的跨平台工具存在?JavaDoc本身是否不跨平台,还是只有自定义的taglets和doclets不跨平台?
我想大致了解由于使用内联taglets而无法使用我的库的人数,但主要是寻找长期解决方案。
(尽管上面我提供的是Java 8链接,但我正在使用Java 7。)
{@.codelet.and.out my.package.AGreatExample}
{@.codelet my.package.AGreatExample}
{@.file.textlet examples\doc-files\an_input_file.txt}
{@.codelet.and.out my.package.AGreatExample%eliminateCommentBlocksAndPackageDecl()}
由于自定义标签(甚至文档标签)需要com.sun
,这意味着它们不像Java本身那样跨平台。(不确定是否相关,但单词“javadoc”——甚至子字符串“doc”——不在Java 8语言规范中。)
我不喜欢编写受此限制的库的想法。那么我该怎么办?我目前的想法是
为了利用现有的javadoc解析器,我使用com.sun
标签。但是,我尽可能地将对com.sun
的依赖性减少到最低限度。也就是说,我在标签类中尽可能少地放置代码,将大部分代码留在其他地方,在那里不依赖于com.sun
。我致力于创建自己的解析器,仅搜索我的特定标签。这很麻烦,但不太可怕。您可以迭代每个Java源文件的行,搜索
\{@\.myTagletName (.*?)\}
。一旦捕获该文本,它与com.sun
标签中的代码基本相同。此解析器必须在执行javadoc之前运行,因此需要一个重复的目录结构。 (1)原始代码,带有未解析的自定义标记,(2)该代码的副本,带有解析输出。我会将所有代码复制到重复目录中,然后仅解析已知具有这些标签的Java文件(以某种方式“注册”在解析器中的类)。
这是一个合理的方法吗?是否已经有更跨平台的javadoc/taglet解析器,以便我不必自己编写?是否已经有类似taglet的跨平台工具存在?JavaDoc本身是否不跨平台,还是只有自定义的taglets和doclets不跨平台?
我想大致了解由于使用内联taglets而无法使用我的库的人数,但主要是寻找长期解决方案。
(尽管上面我提供的是Java 8链接,但我正在使用Java 7。)
感谢 @fge 提供的标签建议,比我最初的 想法 更加优雅,也感谢 @Michael 提供的不祥但有帮助的 com.sun
警告。
Codelet
:http://codelet.aliteralmind.com 和 https://github.com/aliteralmind/codelet。 - aliteralmind