Diese README richtet sich an die Nutzer und Weiterentwickler der Call-Graph-Exploration Anwendung.
Call-Graph-Exploration ist eine Webanwendung zu Exploration von Call Graphen
Die Webanwendung, die in erster Linie für Google Chrome geschrieben ist, liest den Graphen in Form einer JSON Datei ein.
Die JSON Datei muss zum aktuellem Stand einige Bedingungen erfüllen.
- Das erste Attribut des Knoten muss "method" sein
- Die Datei als Unix (LF) gespeichert
- UTF-8 empfohlen
{
"reachableMethods" : [ {
"method" : {
"name" : "<init>",
"declaringClass" : "Ltmr/Demo;",
"returnType" : "V",
"parameterTypes" : [ ]
},
"callSites" : [ {s
"declaredTarget" : {
"name" : "<init>",
"declaringClass" : "Ljava/lang/Object;",
"returnType" : "V",
"parameterTypes" : [ ]
},
"line" : 17,
"targets" : [ {
"name" : "<init>",
"declaringClass" : "Ljava/lang/Object;",
"returnType" : "V",
"parameterTypes" : [ ]
} ]
}, {
"declaredTarget" : {
"name" : "verifyCall",
"declaringClass" : "Ltmr/Demo;",
"returnType" : "V",
"parameterTypes" : [ ]
},
"line" : 18,
"targets" : [ {
"name" : "verifyCall",
"declaringClass" : "Ltmr/Demo;",
"returnType" : "V",
"parameterTypes" : [ ]
} ]
} ]
}, {...}, ...
]}
Es ist vorstellbar die Anwendung so zu erweitern, dass eine Schnittelle für andere Programme existiert um die Graphendaten direkt an die Anwendung zu geben, ohne diese erst in eine JSON Datei zu schreiben. Um die Graphdaten direkt in die Map der Anwendung zu schreiben muss einiges beachtet werden um gleiches verhalten zu erwarten.
- Die globalen Variablen
totalNodes
undtotalEdges
manuell setzen (sind nicht nötig um die Grundfunktionalitäten der Anwendung zu gewährleisten) changeDiv()
muss aufgerufen werden um die Ansicht vom Ladebildschirm auf die Graphenexploration zu ändern.- Suche aktivieren
document.getElementById("search").removeAttribute("disabled")
- Nach dem befüllen der Map autocomplete aktivieren
var fullMethods = getStructuredMethodList(); autocomplete(document.getElementById("searchInput"), fullMethods);
- Beim befüllen der Map:
- Map erstellen:
parsedJsonMap = new Map()
- Dann Knoten einfügen: mit
addJsonMapEntry(element)
oderparsedJsonMap.set(idString(element.method), element);
,element
ist ein Javascript Object mit den Attributen wie die Elemente derreachableMethods
in den JSON Daten
- Map erstellen:
Fremdcode:
jquery.min.js, https://jquery.org/license/
d3.v3.min.js, https://github.com/d3/d3/blob/master/LICENSE