Sto cercando di creare un callgraph per i progetti java dalla riga di comando. Ho esplorato diversi progetti, ogni volta che non riesco a capire (né a mio avviso né a livello di funzionalità) ciò che sto cercando. Alcune semplici linee guida su come fare questo sarebbe grandioso, un ulteriore obiettivo è ottenere una rappresentazione testuale di questo grafico.Creazione di un grafico di chiamata visiva per i progetti java dalla riga di comando
Ecco che cosa ho provato:
Chiamata-grafico: https://github.com/gousiosg/java-callgraph
Questo mi dà l'output di testo che voglio, ma non riesco a trovare un modo (dopo aver guardato attraverso la documentazione per qualche tempo), per trasformarlo in un output grafico (file immagine).
Fuliggine: http://sable.github.io/soot/
Dopo aver trascorso una quantità enorme di tempo a guardare attraverso la documentazione fuliggine, che sembra piuttosto difficile da seguire, sono riuscito ad ottenere SOOT per creare bytecode. Tuttavia, non riesco a trovare alcuna guida su come creare un grafico di chiamata da esso. Vedo solo sulla pagina principale che è può fare, e ottengo diverse conversazioni via email dalle mie ricerche su google, tutte che sono solo domande senza risposte. Sto utilizzando la nightly build con il comando:
java -cp soot-trunk.jar soot.Main -cp . -pp HelloWorld
Dove HelloWorld è il nome del mio file java, ottengo un output che è un file .class, ma non riesco a vedere come arrivare l'attuale call graph. Questo è dopo aver seguito la guida qui: https://github.com/Sable/soot/wiki/Running-Soot. Quando seguo i link relativi alle visualizzazioni, sembrano essere collegamenti interrotti che poi reindirizzano verso la home page. Posso vedere alcune informazioni sull'utilizzo della bandierina -CG sulla pagina riga di comando, ma non può ottenere nulla per il lavoro - ho solo un errore di parsing opzione, suggerendo un argomento non valido: https://ssebuild.cased.de/nightly/soot/doc/soot_options.htm#phase_5
Searching StackOverflow - le risposte esistenti Ho già esaminato diverse domande simili, come ad esempio: Static analysis of Java call graph Tuttavia, le risposte dicono "usa fuliggine" o "usa call-graph", ci ho provato senza fortuna, anche se sono più vicino call graph come ho l'output del testo.
Vedo alcuni software basati su GUI e plugin di eclipse che pretendono di creare call-graphs, ma sto cercando di farlo funzionare dalla riga di comando.
Qualsiasi aiuto è molto apprezzato, una guida o un insieme di comandi con call-graph o fuliggine, o un altro programma sarebbe davvero d'aiuto. Potrebbe valere la pena anche riprendere qualche breve tutorial per la loro documentazione come sembra essere più domande che risposte durante la ricerca.
Per riferimento, Attualmente sto tentando con una semplice classe di seguito:
public class HelloWorld {
public static void main(String[] args) {
foo();
}
public static void foo(){
System.out.println("Hello World");
}
}
Grazie! Anche se non ho ancora avuto un momento per provare questo, sembra esattamente quello che sto cercando. Questa risposta aiuterà senza dubbio anche le persone future che vedono questa domanda poiché è ben spiegata. Grazie molto. – ThePerson