2011-12-27 12 views
5

Estoy buscando una forma de obtener todo el javadoc para todos los métodos con una Anotación específica, en tiempo de ejecución. Voy a utilizar este javadoc para mostrar detalles sobre estos métodos en una interfaz de usuario personalizada.¿Cómo puedo obtener el javadoc de todos los métodos con una Anotación específica, con el nombre del método y el nombre del paquete/clase?

Estos métodos se usan más adelante para las pruebas, se invocarán en un orden desconocido, determinado por el usuario. Deseo que el usuario vea el javadoc sin tener que navegar por las fuentes.

Sí, tengo las fuentes y puedo usarlas para lograr el objetivo.

La mejor manera en que pensé hacer esto es manteniendo un archivo separado con descripciones, que se leerá en tiempo de ejecución, pero eso significa que tengo que mantener tanto javadoc como el archivo externo, y no me gusta la idea de manteniendo dos copias del texto bastante similar.

¡Salud para cualquier respuesta! Gracias.

+0

Resuelto. Usando javadoc para generar archivos html, estos se leen en tiempo de ejecución y se muestran al usuario. Gracias a todos los ayudantes! – eitama

Respuesta

2

Esto no es tan simple como suena porque el JavaDoc no forma parte del archivo de clase (no hay ningún método de getJavaDoc()java.lang.reflect.Method).

Me atacar el problema como este:

  1. Descargar el Eclipse JDT. Contiene el compilador Eclipse Java (Agregue org.eclipse.jdt.core_*.jar a su classpath. "Using the batch compiler" también podría ayudar).
  2. Ver aquí how to get an AST from Java sources using the Eclipse compiler.
  3. El AST contiene el código fuente: Ver anotaciones, nombres de parámetros, todo. Para recopilar JavaDoc, use AstVisitor
  4. Extraiga todo lo que necesita en uno o más documentos XML (fáciles de crear y analizar) que su UI lee.
  5. Crea una tarea Ant para automatizar el proceso y agregarlo a tu compilación.
+0

Esperaba una solución más fácil, pero tu solución me llevó a hacerlo un poco diferente. – eitama

0

Si va a utilizarlo en una interfaz de usuario y su base de código es considerablemente grande, le recomendamos que indexe sus javadocs y cree consultas de búsqueda en los índices. Solr, Lucene, Sphinx son algunas de las tecnologías que puede utilizar.

Dudo que pueda obtener un rendimiento aceptable mediante el uso de JavaDocs directamente para leer. Salida de lo fácil que es trabajar con Lucene aquí http://www.lucenetutorial.com/lucene-in-5-minutes.html

0

Es posible, pero requiere algunos esfuerzos.

En general, crear javadoc se logra ejecutando la utilidad javadoc que ha llegado a CLI. Puede invocarlo en tiempo de compilación utilizando la API del procesador de anotaciones y almacenar junto con sus recursos compilados. Entonces puedes leerlo en tiempo de ejecución.

Por favor, eche un vistazo a this project como un bello ejemplo del uso del preprocesador de anotación.

Cuestiones relacionadas