本仓库的使命已完成,请移步官方Tai-e教程:
仓库:https://github.com/pascal-lab/Tai-e-assignments
官方网站:http://tai-e.pascal-lab.net
知乎帖子:https://zhuanlan.zhihu.com/p/488957195
本仓库是早期作业的参考实现...
Willkommen, um die Gruppe für Programmanalyse -Tool -Entwicklungsgruppen hinzuzufügen (QR -Code verfällt, siehe Ausgabe Nr. 4).
https://canliture.github.io/imgs/group.jpg
Dies ist die inoffizielle Implementierung der experimentellen Hausaufgaben des Software -Analyseverlaufs der Nanjing University
Hinweis: Bamboo ist nicht Open Source für Kursarbeit an der Nanjing University. Warum hat es also dieses Lager?
- Ich gab dem PDF -Kurs für meine Hausaufgaben, und die API wurde ebenfalls gegeben; Laut API könnte ich es im Grunde auf meinem eigenen Verständnis basierend tun.
Aktueller Status
- Ich habe noch nicht viel getestet (zumindest sind die Beispiele in der Vorlesung in Ordnung)
- Die fünfte Aufgabe ist nur eine kurze Zeit, um die Lücken des letzten OBJ/Typ-sensitiven Code zu füllen
- Ich hoffe, Fehler/Problemen zu eröffnen
最近挺忙的,先停更1/2个月吧.相信这份代码仍然能够给人一些帮助.(2021-11-08)
Umfeld
- Java 8
- Soot 4.2.1
- Intellij Idee
- Maven Build/JUNIT -Test
dokumentieren
- DOCS/ORG ist das ursprüngliche Thema des Nanyang University Course.
- docs/Soot ist Soot -Referenzmaterial
- src/main/java/com/canliture/Soot/die Jobs in jedem Unterverzeichnis haben eine Readme als einfache Beschreibung des Jobs
Code
- com.canliture.soot.ass1
- Code -Implementierung für den ersten Job
- Konstante Ausbreitung
- com.canliture.soot.ass2
- Code -Implementierung für den zweiten Job
- Konstante Ausbreitung + Aktivitätserkennung auf die Eliminierung des toten Code angewendet
- com.canliture.soot.ass3
- Code -Implementierung für den dritten Job
- CHA wird verwendet, um Anrufdiagramme zu konstruieren
- com.canliture.soot.ass4
- Code -Implementierung des vierten Jobs
- Durchfluss-unempfindliche Zeigeranalyse
- com.canliture.soot.ass5
- Code -Implementierung des fünften Jobs
- Flow-sensitive Zeigeranalyse
prüfen
Code zum Ausführen von Unit -Tests: SRC/Test/Java/Verzeichnis
- com.canliture.soot.ass {n}
Getesteter Code: src/test/testcodes/ass/*
Debuggen und Laufen
Markieren Sie bei der Verwendung von Intellij IDEA den Verzeichnis SRC/Test/Testcodes/Ass als Test sources root
- Dadurch wird der getestete Code automatisch in das Verzeichnis für Ziel-/Testklassen während des Debuggens/Ausführens kompiliert, was das Testen erleichtert
Nehmen Sie ASS1 als Beispiel Debugging/Runningstest
- Finden Sie die can.canliture.soot.ass1.intraconstantPropagationTest -Klasse und führen Sie den Junit -Test durch
- Jede Testklasse hat eine GetTransformer () -Methode, und die InternalTransform -Methode des zurückgegebenen Transformators ist der Eingang zur Analyse.
So führen Sie den gesamten Test aus, Sie können die Interbasetest- und Intrabasetest -Klassen überprüfen. Hier umfassen Sie einen kleinen Test -Framework.
- @Bevor konfigurieren Sie Ruß vor dem Testen
- @Test führen Testcode aus
- @Nach Ausgabe von Jimple IR zum Sootoutput -Verzeichnis
