Linguaggio di interrogazione per l'analisi del codice Java

2

Voglio scrivere uno strumento di refactoring per il linguaggio di programmazione Java.

Per questo motivo ho bisogno di fare query strutturali contro l'albero di sintassi astratto. Dato questo AST come ottengo le risposte alle seguenti dichiarazioni:

  • Ottieni superclassi di un oggetto.
  • Dammi l'espressione dove chiamo un metodo x () sul tipo XClass
  • Il metodo x () viene chiamato senza argomenti (controlla l'overloading)
  • Il metodo x () viene chiamato ovunque nel percorso di esecuzione dell'oggetto di tipo XClass (ad es. è close () chiamato ovunque)
posta matcauthon 03.02.2014 - 14:20
fonte

2 risposte

2

Dipende piuttosto da cosa ha generato il tuo AST e come appare.

Ma, se si tratta di un formato XML con XSD / XMLSchema decente, penso che "groovy" sia la soluzione migliore dato che ha un eccellente supporto per XML.

In realtà ha due supporti integrati: una API per xpath e una API per DOM.

Groovy è un linguaggio di scripting basato su Java. Tutto il java valido è Groovy valido, ma Groovy ha anche molte caratteristiche dinamiche come un tipo di dati dinamico, chiusure, dizionari come un tipo di dati incorporato, supporto SQL nativo, supporto XML nativo, stringhe letterali multilinea e molte altre chicche.

    
risposta data 06.02.2014 - 06:06
fonte
0

Esistono molte librerie Java che forniscono AST analizzati dal codice sorgente o dal codice byte Java. Alcuni esempi:

Ti suggerisco di scegliere una libreria dopo alcune ricerche per vedere quale preferisci. Potrebbero esserci altri strumenti là fuori, per esempio Eclipse JDT, che si adattano meglio. Come fai ognuna delle cose che hai elencato varierà tra la libreria / lo strumento.

    
risposta data 06.02.2014 - 10:54
fonte

Leggi altre domande sui tag