Se tutto quello che volete è il testo esatto di ogni metodo, e il testo esatto delle variabili all'interno di metodi, si potrebbe ottenere da con un parser che produce un CST, passeggiate con il CST di trovare i nodi giusti, e quindi esegui la stampa dei sottotitoli trovati. ANTLR has a Java parser che avrebbe funzionato per questo. Non so se catturerà i commenti. Penso che la distribuzione principale di ANTLR sia codificata in Java.
Probabilmente è possibile farlo più in fretta, in Java, con un lexer per Java, implementando ciò che equivale a un parser isola errato che cerca le frasi chiave. ("Dopo la 'classe', trovare '{' e stampare tutto ciò che si trova nella corrispondenza '}'" ti darebbe tutti i metodi e campi).
Se si desidera un dettaglio più preciso (ad esempio, si desidera conoscere il tipo effettivo di un argomento anziché solo il nome o il tipo in cui è effettivamente definito) è necessario un parser con un front end completo e un nome risoluzione. (ANTLR non lo farà). Il Eclipse JDT crea certamente alberi; probabilmente risolve i nomi. Il nostro DMS Software Reengineering Toolkit con il suo Java Front End può fornire tutto il necessario per questa attività, inclusa l'acquisizione e l'estrazione dei commenti. DMS non è codificato in Java.
Hai obiettato a Javadoc come inadeguato, perché non ti dà il contenuto dei metodi. Forse il nostro Java Source Browser, che ti dà quel codice, servirebbe meglio. Integra i dati di risoluzione dei nomi dal nostro DMS/Java Front End alle informazioni di tipo hyperlink JavaDoc nel testo sorgente navigabile; tutti i campi e le variabili locali sono indicizzati in modo esplicito. Il browser di origine non è codificato in Java, ma presumibilmente si desidera semplicemente eseguirlo e analizzare il risultato. Tale raschiatura potrebbe essere più difficile di quanto appaia fissando lo schermo; c'è molto HTML dietro questo display.
fonte
2012-06-16 05:07:54
Estratto in quale formato? Potresti semplicemente eseguire lo strumento Javadoc e gestire l'HTML generato. –
Per me le API, se disponibili, sarebbero più utili, getMethodNames, getComments, getDocumentation, ecc. Inoltre, Javadoc non mi fornisce le variabili private dichiarate all'interno dei metodi, i nomi dei metodi chiamati dal metodo ecc. –
Cosa sei cercare è un analizzatore [analizzatore statico] completo (http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#Java). –