
Un framework di analisi statica facile da imparare/usare per Java e Android.
Tai-e (cinese: 太阿; pronuncia: [ˈtaɪə:]) è un nuovo framework di analisi statica per Java (consulta il nostro articolo ISSTA 2023 per i dettagli), che offre forse i migliori progetti sia da quelli nuovi da noi proposti sia da quelli di framework classici come Soot, WALA, Doop e SpotBugs. Tai-e è facile da imparare, facile da usare, efficiente e altamente estensibile, permettendoti di sviluppare facilmente nuove analisi su di esso.
Attualmente, Tai-e fornisce i seguenti principali componenti di analisi (e altre analisi sono in arrivo):
clone() erratoTai-e è sviluppato in Java e può funzionare sui principali sistemi operativi tra cui Windows, Linux e macOS.
Come cortesia verso gli sviluppatori, ci aspettiamo che tu citi l'articolo di ISSTA 2023 che descrive il framework Tai-e nel tuo lavoro di ricerca:
Tian Tan e 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), 17–21 luglio 2023, Seattle, WA, USA (pdf, bibtex).
Il metodo consigliato è scaricare lo ZIP di distribuzione da GitHub Releases. Lo ZIP contiene Tai-e, tutte le dipendenze runtime, la documentazione offline e gli script di avvio per Windows, Linux e macOS.
In alternativa, puoi compilare tu stesso l'ultima versione di Tai-e dal codice sorgente. Ciò può essere fatto semplicemente tramite Gradle (assicurati che Java 17 (o versione superiore) sia disponibile sul tuo sistema):
./gradlew distZip
Lo ZIP di distribuzione verrà generato in tai-e/build/distributions/.
Dopo averlo estratto, esegui Tai-e tramite lo script di avvio:
# su Linux/macOS
./tai-e-<version>/bin/tai-e -h
# su Windows
.\tai-e-<version>\bin\tai-e.bat -h
Per compatibilità con versioni precedenti e script, Tai-e fornisce ancora un JAR legacy all-in-one:
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h
Tai-e è progettato come uno strumento standalone, ma hai anche la possibilità di includerlo nel tuo progetto come dipendenza. È disponibile sui repository Maven, permettendoti di integrarlo facilmente nei tuoi progetti Java utilizzando strumenti di build come Gradle e Maven. Manteniamo sia la versione stabile che l'ultima versione di Tai-e, e qui ci sono le coordinate corrispondenti nei formati di script Gradle e Maven:
Per Gradle:
dependencies {
implementation("net.pascal-lab:tai-e:0.5.4")
}
Per Maven:
<dependencies>
<dependency>
<groupId>net.pascal-lab</groupId>
<artifactId>tai-e</artifactId>
<version>0.5.4</version>
</dependency>
</dependencies>
Per Gradle:
repositories {
mavenCentral()
maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}
dependencies {
implementation("net.pascal-lab:tai-e:0.5.5-SNAPSHOT")
}
Per 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>
Puoi utilizzare queste coordinate nei tuoi script Gradle o Maven per includere la versione desiderata di Tai-e nel tuo progetto.
Abbiamo fornito informazioni dettagliate su Tai-e nella Documentazione di riferimento, che copre vari aspetti come Configurazione in IntelliJ IDEA, Opzioni da riga di comando e Sviluppo di una nuova analisi.
Tieni presente che la documentazione di riferimento menzionata sopra si riferisce all'ultima versione di Tai-e. Se hai bisogno della documentazione per una specifica versione stabile, consulta l'Indice della documentazione. Inoltre, la documentazione è inclusa nel repository e mantenuta insieme al codice sorgente. Puoi accedere alla documentazione di riferimento per una particolare versione di Tai-e (in formato AsciiDoc) esplorando la directory docs/en, partendo da index.adoc. Ciò ti consente di accedere alla documentazione specifica per versione di Tai-e.
Oltre alla documentazione di riferimento, sono disponibili anche i Javadoc per Tai-e come utile risorsa di riferimento.
Poiché stiamo sviluppando e aggiornando attivamente Tai-e, registriamo le modifiche notevoli apportate, in particolare le nuove funzionalità e le modifiche sostanziali, in CHANGELOG. Se trovi qualcosa di sbagliato dopo aver aggiornato Tai-e, potresti controllare CHANGELOG per informazioni utili.
Inoltre, abbiamo sviluppato una versione educativa di Tai-e dove sono progettati con cura otto esercizi di programmazione per addestrare sistematicamente gli studenti a implementare varie tecniche di analisi statica per analizzare programmi Java reali. La versione educativa condivide una grande quantità di codice con Tai-e, quindi fare gli esercizi potrebbe essere un buon modo per familiarizzare con Tai-e.