2012-06-16 25 views
5

Estoy buscando un analizador que pueda extraer métodos de una clase java (código fuente estático -> archivo .java) y firma de método, comentarios/documentación, variables de cada uno de los métodos. Preferiblemente en lenguaje de programación Java.Analizador de código estático para código fuente Java para extraer métodos/comentarios

¿Podría alguien aconsejar?

Gracias.

+0

¿Extracto de qué formato? Puede ejecutar la herramienta Javadoc y tratar con el HTML generado. –

+0

Para mí, las API, si están disponibles, serían más útiles, getMethodNames, getComments, getDocumentation, etc. Además, Javadoc no me daría las variables privadas declaradas dentro de los métodos, los nombres de los métodos llamados desde el método, etc. –

+0

Lo que eres buscando es un [analizador estático en toda regla] (http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java). –

Respuesta

8

Puede usar ASTParser por eclipse. Es súper simple de usar.

Encuentra un ejemplo independiente rápido here.

+0

Sí, estaba revisando eso. ¿Hay alguna manera de obtener "comentarios" dentro de los métodos usando ASTParser? –

+0

ASTParser declara un nodo llamado "Comentario". Puedes leer su javadoc –

+1

CompilationUnit da commentList, pero no puedo obtener comentarios reales. por ejemplo: si el comentario es // hello world, solo muestra // –

1

Si todo desea es el texto exacto de cada método, y el texto exacto de las variables dentro de métodos, que podría llegar a funcionar con un programa de análisis que produce una CST, caminando por el CCT para encontrar los nodos adecuados, y luego, imprimiendo los subárboles encontrados. ANTLR has a Java parser que funcionaría para esto. No sé si captará comentarios. Creo que la distribución principal de ANTLR está codificada en Java.

Puede hacer esto de forma más hackable, en Java, con un lexer para Java, implementando lo que equivale a un mal analizador de islas que busca las frases clave. ("Después de 'clase', encuentre '{' e imprima todo lo que encuentre hasta la coincidencia '}'" le daría todos los métodos y campos).

Si desea detalles más precisos (por ejemplo, si desea conocer el tipo real de un argumento en lugar de solo su nombre, o si el tipo está realmente definido), necesitará un analizador con una interfaz y nombre completos resolución. (ANTLR no hará esto.) El Eclipse JDT ciertamente construye árboles; es probable que nombre la resolución. Nuestro DMS Software Reengineering Toolkit con su Java Front End puede proporcionar todo lo necesario para esta tarea, incluida la captura y extracción de comentarios. DMS no está codificado en Java.

Usted se opuso a Javadoc por ser inadecuado, porque no le da el contenido de los métodos. Tal vez nuestro Java Source Browser, que le da ese código, le serviría mejor. Integra los datos de resolución de nombres de nuestro DMS/Java Front End para hipervincular la información de tipo JavaDoc en texto fuente navegable; todos los campos, así como las variables locales se indexan explícitamente. El explorador de origen no está codificado en Java, pero es de suponer que simplemente desea ejecutarlo y eliminar el resultado. Tal raspado podría ser más difícil de lo que parece mirando a la pantalla; hay una gran cantidad de HTML detrás de dicha pantalla.

4

Aquí es lo que hago para extraer las firmas de los métodos de un archivo java/s:

utilizo Sublime Text 2, en el fichero quiero conseguir las firmas de y el no hallazgo Ctrl + F con la expresión regular, con arreglo a la siguiente expresión regular que hice (he comprobado en mi código y funciona, espero que funcione para usted también)

((synchronized +)?(public|private|protected) +(static [a-Z\[\]]+|[a-Z\[\]]+) [a-Z]+\([a-Z ,\[\]]*\)\n?[a-Z ,\t\n]*\{) 

Después Sublime Text 2 resaltar mis resultados hago clic en "Buscar todo" luego copia Ctrl + C, abrir una nueva pestaña Ctrl + N y pegar Ctrl + V.
A continuación, verá todas las firmas de sus métodos.

Espero que haya sido útil.

Cuestiones relacionadas