Tai-e (Chinesisch: 太阿; Aussprache: [ˈtaɪə:]) ist ein neues statisches Analyse-Framework für Java (Einzelheiten finden Sie in unserem ISSTA 2023-Papier), das wohl die „besten“ Designs der beiden von uns vorgeschlagenen Romane enthält und die klassischer Frameworks wie Soot, WALA, Doop und SpotBugs. Tai-e ist leicht zu erlernen, benutzerfreundlich, effizient und hoch erweiterbar, sodass Sie darauf problemlos neue Analysen entwickeln können.
Derzeit bietet Tai-e die folgenden Hauptanalysekomponenten (und weitere Analysen sind in Vorbereitung):
clone()
-DetektorTai-e wurde in Java entwickelt und kann auf den wichtigsten Betriebssystemen wie Windows, Linux und macOS ausgeführt werden.
Aus Rücksicht auf die Entwickler erwarten wir, dass Sie in Ihrer Forschungsarbeit bitte das Papier von ISSTA 2023 zitieren, in dem das Tai-e-Framework beschrieben wird:
Tian Tan und Yue Li. 2023. Tai-e: Ein entwicklerfreundliches statisches Analyse-Framework für Java, das die guten Designs der Klassiker nutzt. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA '23), 17.–21. Juli 2023, Seattle, WA, USA (pdf, bibtex).
Der einfachste Weg besteht darin, es von GitHub Releases herunterzuladen.
Alternativ können Sie das neueste Tai-e auch selbst aus dem Quellcode erstellen. Dies kann einfach über Gradle erfolgen (stellen Sie sicher, dass Java 17 (oder eine höhere Version) auf Ihrem System verfügbar ist). Sie müssen nur den Befehl gradlew fatJar
ausführen, und dann wird das ausführbare JAR in tai-e/build/
generiert, das Tai-e und alle seine Abhängigkeiten enthält.
Tai-e ist als eigenständiges Tool konzipiert, Sie haben jedoch auch die Möglichkeit, es als Abhängigkeit in Ihr Projekt einzubinden. Es ist in Maven-Repositorys verfügbar, sodass Sie es mithilfe von Build-Tools wie Gradle und Maven problemlos in Ihre Java-Projekte integrieren können. Wir pflegen sowohl stabile als auch aktuelle Versionen von Tai-e. Hier sind die entsprechenden Koordinaten in den Skriptformaten Gradle und Maven:
Für Gradle:
dependencies {
implementation( " net.pascal-lab:tai-e:0.2.2 " )
}
Für Maven:
< dependencies >
< dependency >
< groupId >net.pascal-lab</ groupId >
< artifactId >tai-e</ artifactId >
< version >0.2.2</ version >
</ dependency >
</ dependencies >
Für Gradle:
repositories {
mavenCentral()
maven { url = uri( " https://s01.oss.sonatype.org/content/repositories/snapshots/ " ) }
}
dependencies {
implementation( " net.pascal-lab:tai-e:0.5.1-SNAPSHOT " )
}
Für Maven:
< repositories >
< repository >
< id >snapshots</ id >
< name >Sonatype snapshot server</ name >
< url >https://s01.oss.sonatype.org/content/repositories/snapshots/</ url >
</ repository >
</ repositories >
< dependencies >
< dependency >
< groupId >net.pascal-lab</ groupId >
< artifactId >tai-e</ artifactId >
< version >0.5.1-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 wie die Einrichtung in IntelliJ IDEA, Befehlszeilenoptionen und die Entwicklung neuer Analysen abdeckt.
Bitte beachten Sie, dass sich die oben genannte Referenzdokumentation auf die neueste Version von Tai-e bezieht. Wenn Sie Dokumentation für eine bestimmte stabile Version benötigen, lesen Sie bitte den Dokumentationsindex. Darüber hinaus ist die Dokumentation im Repository enthalten und wird zusammen mit dem Quellcode verwaltet. Sie können auf die Referenzdokumentation für eine bestimmte Version von Tai-e (im AsciiDoc-Format) zugreifen, indem Sie das Verzeichnis docs/en, beginnend mit index.adoc, durchsuchen. Dadurch können Sie auf die versionspezifische Dokumentation für Tai-e zugreifen.
Zusätzlich zur Referenzdokumentation stehen auch Javadocs für Tai-e als nützliche Referenzressource zur Verfügung.
Da wir Tai-e aktiv weiterentwickeln und aktualisieren, erfassen wir die bemerkenswerten Änderungen, die wir vorgenommen haben, insbesondere die neuen Funktionen und Breaking Changes, in CHANGELOG. Wenn Sie nach der Aktualisierung von Tai-e feststellen, dass etwas nicht stimmt, können Sie CHANGELOG nach nützlichen Informationen durchsuchen.
Darüber hinaus haben wir eine Lernversion von Tai-e entwickelt, in der acht Programmieraufgaben sorgfältig entworfen wurden, um den Lernenden systematisch beizubringen, verschiedene statische Analysetechniken zur Analyse echter Java-Programme anzuwenden. Die Lernversion teilt eine große Menge an Code mit Tai-e, daher wäre die Bearbeitung der Aufgaben eine gute Möglichkeit, sich mit Tai-e vertraut zu machen.