
Ein einfach zu erlernendes/verwendendes statisches Analyse-Framework für Java und Android
Tai-e (chinesisch: 太阿; Aussprache: [ˈtaɪə:]) ist ein neues statisches Analyseframework für Java (siehe dazu unser ISSTA 2023 Paper), das wohl die "besten" Entwürfe sowohl aus den von uns vorgeschlagenen neuartigen als auch aus denen klassischer Frameworks wie Soot, WALA, Doop und SpotBugs vereint. Tai-e ist leicht zu erlernen, einfach zu bedienen, effizient und hochgradig erweiterbar, sodass Sie problemlos neue Analysen darauf aufbauen können.
Derzeit bietet Tai-e die folgenden Hauptanalysekomponenten (und weitere Analysen sind in Arbeit):
invokedynamic-Analyseclone()-DetektorTai-e wird in Java entwickelt und kann auf gängigen Betriebssystemen wie Windows, Linux und macOS ausgeführt werden.
Als Höflichkeit gegenüber den Entwicklern erwarten wir, dass Sie in Ihrer Forschungsarbeit das Paper aus der ISSTA 2023, das das Tai-e-Framework beschreibt, zitieren:
Tian Tan and Yue Li. 2023. Tai-e: A Developer-Friendly Static Analysis Framework for Java by Harnessing the Good Designs of Classics. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA '23), July 17–21, 2023, Seattle, WA, USA (pdf, bibtex).
Die empfohlene Methode ist das Herunterladen des Distributions-ZIPs von GitHub Releases. Das ZIP enthält Tai-e, alle Laufzeitabhängigkeiten, die Offline-Dokumentation sowie Startskripte für Windows, Linux und macOS.
Alternativ können Sie das aktuellste Tai-e selbst aus dem Quellcode erstellen. Dies kann einfach über Gradle erfolgen (stellen Sie sicher, dass Java 17 (oder höher) auf Ihrem System verfügbar ist):
./gradlew distZip
Das Distributions-ZIP wird in tai-e/build/distributions/ erstellt. Nach dem Entpacken führen Sie Tai-e über das Startskript aus:
# auf Linux/macOS
./tai-e-<version>/bin/tai-e -h
# auf Windows
.\tai-e-<version>\bin\tai-e.bat -h
Aus Kompatibilitätsgründen mit älteren Versionen und Skripten bietet Tai-e weiterhin ein altes All-in-One-JAR:
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h
Tai-e ist als eigenständiges Werkzeug konzipiert, Sie haben aber auch die Möglichkeit, es als Abhängigkeit in Ihr Projekt einzubinden. Es ist auf Maven-Repositories verfügbar, sodass Sie es einfach mit Build-Tools wie Gradle und Maven in Ihre Java-Projekte integrieren können. Wir pflegen sowohl stabile als auch aktuelle Versionen von Tai-e; hier sind die entsprechenden Koordinaten in Gradle- und Maven-Skriptformaten:
Für Gradle:
dependencies {
implementation("net.pascal-lab:tai-e:0.5.4")
}
Für Maven:
<dependencies>
<dependency>
<groupId>net.pascal-lab</groupId>
<artifactId>tai-e</artifactId>
<version>0.5.4</version>
</dependency>
</dependencies>
Für Gradle:
repositories {
mavenCentral()
maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}
dependencies {
implementation("net.pascal-lab:tai-e:0.5.5-SNAPSHOT")
}
Für Maven:
<repositories>
<repository>
<id>snapshots</id>
<name>Sonatype snapshot server</name>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.pascal-lab</groupId>
<artifactId>tai-e</artifactId>
<version>0.5.5-SNAPSHOT</version>
</dependency>
</dependencies>
Sie können diese Koordinaten in Ihren Gradle- oder Maven-Skripten verwenden, um die gewünschte Version von Tai-e in Ihr Projekt einzubinden.
Wir haben detaillierte Informationen zu Tai-e in der Referenzdokumentation bereitgestellt, die verschiedene Aspekte abdeckt, wie z.B. Einrichtung in IntelliJ IDEA, Befehlszeilenoptionen und Entwicklung neuer Analysen.
Bitte beachten Sie, dass sich die oben genannte Referenzdokumentation auf die aktuellste Version von Tai-e bezieht. Wenn Sie die Dokumentation für eine bestimmte stabile Version benötigen, konsultieren Sie bitte den Dokumentationsindex. Darüber hinaus ist die Dokumentation im Repository enthalten und wird zusammen mit dem Quellcode gepflegt. Sie können auf die Referenzdokumentation für eine bestimmte Version von Tai-e (im AsciiDoc-Format) zugreifen, indem Sie das docs/en-Verzeichnis erkunden, beginnend mit index.adoc. So erhalten Sie Zugriff auf versionsspezifische Dokumentation für Tai-e.
Zusätzlich zur Referenzdokumentation sind Javadocs für Tai-e als nützliche Referenzquelle verfügbar.
Da wir Tai-e aktiv weiterentwickeln und aktualisieren, dokumentieren wir die wichtigsten Änderungen, insbesondere neue Funktionen und breaking changes, im CHANGELOG. Wenn Sie nach einem Update von Tai-e auf ein Problem stoßen, können Sie vielleicht im CHANGELOG nützliche Informationen finden.
Darüber hinaus haben wir eine pädagogische Version von Tai-e entwickelt, die acht Programmieraufgaben beinhaltet, die sorgfältig darauf ausgelegt sind, Lernende systematisch zu schulen, verschiedene statische Analysetechniken zur Analyse realer Java-Programme zu implementieren. Die pädagogische Version teilt einen großen Teil des Codes mit Tai-e, sodass die Bearbeitung der Aufgaben eine gute Möglichkeit ist, sich mit Tai-e vertraut zu machen.