繁体   English   中英

如何使用特定的Annotation获取所有方法的javadoc,方法名称和包/类名?

[英]How can I get the javadoc of all methods with a specific Annotation, with the method name and package/class name?

我正在寻找一种方法来在运行时获取具有特定Annotation的所有方法的所有javadoc。 我将使用此javadoc在自定义UI中显示有关这些方法的详细信息。

这些方法稍后用于测试,它们将以未知顺序调用,由用户确定 - 我希望让用户看到javadoc而不必浏览源代码。

是的,我有资源,可以用它们来实现目标。

我想到这样做的最好方法是维护一个带有描述的单独文件,这个文件将在运行时读取,但这意味着我必须同时维护javadoc和外部文件,我不喜欢维护两个副本的想法。非常相似的文字。

为任何答案干杯! 谢谢。

这并不像听起来那么简单,因为JavaDoc不是类文件的一部分getJavaDoc() java.lang.reflect.Method上没有getJavaDoc()方法)。

我会像这样攻击这个问题:

  1. 下载Eclipse JDT。 它包含Eclipse Java编译器(将org.eclipse.jdt.core_*.jar添加到类路径中。“ 使用批处理编译器 ”也可能有帮助)。
  2. 请参阅此处如何使用Eclipse编译器从Java源代码获取AST
  3. AST包含源代码:您可以看到注释,参数名称,所有内容。 要收集JavaDoc,请使用AstVisitor
  4. 将您需要的所有内容提取到UI读取的一个或多个XML文档(易于创建和解析)中。
  5. 创建Ant任务以自动化该过程并将其添加到您的构建中。

如果要在UI中使用它并且代码库相当大,那么您可能需要考虑索引javadoc并在索引上创建搜索查询。 Solr,Lucene,Sphinx是您可以使用的技术中的一小部分。

我怀疑你能通过直接使用JavaDocs来获得可接受的性能。 看看在这里使用Lucene是多么容易, http: //www.lucenetutorial.com/lucene-in-5-minutes.html

这是可能的,但需要一些努力。

通常,通过运行已到达CLI的实用程序javadoc来实现创建javadoc。 您可以在编译时使用Annotation处理器API调用它,并与编译的资源一起存储。 然后你可以在运行时阅读它。

请看一下这个项目,作为注释预处理器使用的一个很好的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM