JSDEP (DOM-Abhängigkeitsanalyse)
@inproceedings{DBLP:conf/sigsoft/SungKS016,
author = {Chungha Sung and
Markus Kusano and
Nishant Sinha and
Chao Wang},
title = {Static {DOM} event dependency analysis for testing web applications},
booktitle = {Proceedings of the 24th {ACM} {SIGSOFT} International Symposium on
Foundations of Software Engineering, {FSE} 2016, Seattle, WA, USA,
November 13-18, 2016},
pages = {447--459},
year = {2016},
crossref = {DBLP:conf/sigsoft/2016},
url = {https://doi.org/10.1145/2950290.2950292},
doi = {10.1145/2950290.2950292},
timestamp = {Tue, 06 Nov 2018 16:59:23 +0100},
biburl = {https://dblp.org/rec/bib/conf/sigsoft/SungKS016},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
JSDEP ist ein Tool, um die DOM-Event-Abhängigkeit einer Webanwendung zu finden, einschließlich herkömmlicher Steuerung und Datenabhängigkeit mithilfe von Datalog-Einschränkungen.
Es durchquert eine JavaScript -Datei statisch und findet die Beziehung zwischen zwei DOMS -Ereignissen.
Dieses Tool enthält eine modifizierte Version von Artemis, um die Bewertung zu zeigen, wie im FSE -Papier angezeigt (zu erscheinen).
Die Eigenschaften dieses Werkzeugs
- Statische und interprocedurale und kontextunempfindliche Alias Anlaysis
- Dieses Tool unterstützt Dom-alias Anlaysis nicht
- Dieses Tool unterstützt keine Extraktion von JavaScript von HTML (alle JavaScripts, die für die Benchmarks, die wir haben, manuell extrahiert)
Struktur von JSDEP
- In dieser Abbildung werden alle Verzeichnisse des Repositorys, das wir haben, mit einem Ordner dargestellt und Ausgabedateien werden mit einem Notizblocksymbol dargestellt. Und Befehle neben Pfeilen sind tatsächliche Skripte, die Sie in JSDEP verwenden können. Hauptsächlich gibt es drei Teile in JSDEP:
- DOM -Analyse - Dieser Teil enthält unsere Hauptanalyse. Es besteht aus 3 Verzeichnissen (SRC, Z3_RULES, NODE_MODULES). Nachdem Sie alle Abhängigkeiten installiert haben, werden bei der Ausführung von Skripten mit dem Namen "Build Dep mit einem Dateinamen" oder "Build-Dep-All erstellen" 3 Dateien (DEP.TXT, numconstraints.txt, z3.Time) im Info-Verzeichnis jedes Benchmarks erstellt. Das Abhängigkeitsergebnis wird in DEP.TXT gedruckt und die Analysezeit jeder Datei wird in z3 aufgezeichnet. Auch die Anzahl der generierten Einschränkungen wird in numconstraints.txt aufgezeichnet.
- Modifizierte Artemis - Um Benutzer die Nützlichkeit unserer Analyse zu überprüfen, stellen wir eine Artemis zur Verfügung, um die von uns vorhandenen Informationen zu verwenden. Vor dem Ausführen von Artemis müssen Sie es installieren. Nachdem Sie die modifizierte Version von Artemis installiert haben, können Sie zwei Versionen davon vergleichen. Wenn Sie den Befehl ausführen, machen Sie Run-Artemis mit einem Dateinamen oder einem Run-Artemis-All, der Dep.txt unter jedem Benchmark verwendet und für jeden Benchmark zwei Dateien im Artemis-Reult-Verzeichnis erstellt. old_artemis.stdout ist die Ausgabe einer früheren Version von Artemis, und New-Artemis.stdout erhält eine modifizierte Version von Artemis, die die Informationen in DEP.TXT verwendet.
- RAW -DATA - Dieses Verzeichnis ist für Benutzer bereitgestellt, die Tabellen ohne Installation erstellen und unsere Analyse ausführen möchten. Alle Daten wurden hochgeladen und die Struktur dieses Verzeichnisses entspricht dem Benchmark. Wenn Sie Befehle ausführen, die Tabelle 1 erstellen, Tabelle2 erstellen und Tabelle 3 erstellen, können Sie jede Tabelle im Papier verwenden. Die Tabelle wird am Terminal gedruckt und Form ist für Latex. Wenn Sie den Drucken kopieren und in Latex einfügen, wird dieselbe Tabelle wie im Papier angezeigt. Und für diejenigen, die mit neuen Daten eine Tabelle erstellen möchten, geben wir einen weiteren Befehl an und machen Fetch-Data. Dieser Befehl holt alle Daten unter Benchmark zum Rohdatenverzeichnis. Wie zuvor können Sie nach dem Abholen neuer Daten problemlos die gleichen Strukturtabellen erstellen, indem Sie Tabellenbefehle erstellen.
Mitwirkende
Die folgenden Personen haben zu dieser Anwendung und dem Papier beigetragen:
- Chungha Sung (SCH8906/AT/VT/EDU)
- Markus Kusano (Mukusano/AT/VT/EDU)
- Nishant Sinha
- Chao Wang (Chaowang/AT/VT/EDU)
Programmabhängigkeiten
Umfeld
- Wir haben dieses Programm nur auf Ubuntu 12.04 getestet
- Wir haben es nicht mit anderen Ubuntu -Versionen überprüft
Um nur eine statische Analyse durchzuführen, um DOM-Abhängigkeits-Beziehungen auszuführen, benötigt sie folgende Abhängigkeiten:
- Z3 (https://github.com/z3prover/z3), jede Version (getestet mit 4.4.1).
- NodeJs (Um dies zu installieren, geben Sie
sudo apt-get install nodejs ) - RealPath (Um dies zu installieren, geben Sie
sudo apt-get install realpath )
Um mit Artemis zu testen, müssen Sie zuerst eine modifizierte Version von Artemis installieren.
- Sie können die Anweisung im Artemis-modifizierten Verzeichnis befolgen, um es zu installieren (manchmal schwierig zu installieren, aber aufgrund der Größenbeschränkung können wir jedoch keine vollständig kompilierte Version bereitstellen).
- Sie müssen die von uns bereitgestellte Version verwenden, da diese Version geändert wird, um die vorherige Version von Artemis und die modifizierte Version von Artemis zu vergleichen, die Abhängigkeitsbeziehungen unseres Programms verwendet.
Der Link für VM (OVA -Datei des virtuellen Boxs) mit JSDEP (https://drive.google.com/open?id=1o70kdlfwhan4j06y5nhtqopbqiqciyrq). Dies wurde jedoch vor sehr langer Zeit aktualisiert, also hat es vielleicht einige Probleme.
VERWENDUNG
====== Sie müssen die modifizierte Version von Artemis installieren, die wir zur Verfügung stellen, um diese Comands unten auszuführen =====
- Run-artemis-Datei machen = [Dateiname] iter = [Iteration]
- Sie müssen die Abhängigkeitsanalyse ausführen, um Dep.txt zuerst zu erhalten
- Führen Sie die frühere Version von Artemis mit einer angegebenen Datei und einer angegebenen Iterationsnummer aus
- Machen Sie Run-Artemis-All-Iter = [Iteration]
- Sie müssen die Abhängigkeitsanalyse ausführen, um Dep.txt zuerst zu erhalten
- Führen Sie die frühere Version von Artemis mit allen Dateien mit einer angegebenen Interationsnummer aus
Wie interpretiere ich Dep.txt?
Wenn Sie das Programm ausführen, können Sie die Datei dep.txt -Datei unter Info -Verzeichnis sehen.
Es gibt Textzeilen, und jede Depeedcy -Beziehungen bestehen aus 4 Textzeilen.
Die erste und zweite Zeile geben den Namen DOM an, und die dritte und vierte Zeile geben die Art des Ereignisses an.
Wenn der Dateiinhalt beispielsweise 1 DOM1 2 ist, klicken Sie auf 3 DOM2 4 Mousemove
DOM1 und DOM2 sind Name von Dom -Knoten und Click und Mousemove sind die Art von Ereignissen für jedes DOM.
Die Bedeutung dieser vier Zeilen ist Mousemove von Test2 hängt vom Klick von Test1 ab.
Alle vier Zeilen sind verwandt (z. B. 1 4, 5 8 ...)