
Un framework d'analyse statique facile à apprendre et à utiliser pour Java et Android
Tai-e (chinois : 太阿 ; prononciation : [ˈtaɪə:]) est un nouveau framework d'analyse statique pour Java (voir notre article ISSTA 2023 pour plus de détails), qui propose sans doute les "meilleurs" designs, à la fois issus de nos propositions originales et de ceux des frameworks classiques comme Soot, WALA, Doop et SpotBugs. Tai-e est facile à apprendre, facile à utiliser, efficace et hautement extensible, vous permettant de développer facilement de nouvelles analyses sur sa base.
Actuellement, Tai-e fournit les principaux composants d'analyse suivants (et d'autres analyses sont à venir) :
clone() incorrectTai-e est développé en Java et peut fonctionner sur les principaux systèmes d'exploitation, y compris Windows, Linux et macOS.
Par courtoisie envers les développeurs, nous vous demandons de bien vouloir citer l'article d'ISSTA 2023 décrivant le framework Tai-e dans vos travaux de recherche :
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).
La méthode recommandée est de télécharger le ZIP de distribution depuis GitHub Releases. Le ZIP contient Tai-e, toutes les dépendances d'exécution, la documentation hors ligne et les scripts de démarrage pour Windows, Linux et macOS.
Alternativement, vous pouvez construire vous-même la dernière version de Tai-e à partir du code source. Cela peut être simplement accompli via Gradle (assurez-vous que Java 17 (ou une version ultérieure) est disponible sur votre système) :
./gradlew distZip
Le ZIP de distribution sera généré dans tai-e/build/distributions/. Après l'avoir extrait, exécutez Tai-e via le script de démarrage :
# sur Linux/macOS
./tai-e-<version>/bin/tai-e -h
# sur Windows
.\tai-e-<version>\bin\tai-e.bat -h
Pour la compatibilité avec les anciennes versions et scripts, Tai-e fournit toujours un JAR tout-en-un hérité :
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h
Tai-e est conçu comme un outil autonome, mais vous avez également la possibilité de l'inclure dans votre projet en tant que dépendance. Il est disponible sur les dépôts Maven, ce qui vous permet de l'intégrer facilement dans vos projets Java à l'aide d'outils de construction tels que Gradle et Maven. Nous maintenons à la fois les versions stable et la plus récente de Tai-e, et voici les coordonnées correspondantes dans les formats de script Gradle et Maven :
Pour Gradle :
dependencies {
implementation("net.pascal-lab:tai-e:0.5.4")
}
Pour Maven :
<dependencies>
<dependency>
<groupId>net.pascal-lab</groupId>
<artifactId>tai-e</artifactId>
<version>0.5.4</version>
</dependency>
</dependencies>
Pour Gradle :
repositories {
mavenCentral()
maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}
dependencies {
implementation("net.pascal-lab:tai-e:0.5.5-SNAPSHOT")
}
Pour 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>
Vous pouvez utiliser ces coordonnées dans vos scripts Gradle ou Maven pour inclure la version souhaitée de Tai-e dans votre projet.
Nous avons fourni des informations détaillées sur Tai-e dans la Documentation de référence, qui couvre divers aspects tels que Configuration dans IntelliJ IDEA, Options en ligne de commande, et Développement de nouvelles analyses.
Veuillez noter que la documentation de référence mentionnée ci-dessus concerne la version la plus récente de Tai-e. Si vous avez besoin de documentation pour une version stable spécifique, veuillez vous référer à l'Index de la documentation. De plus, la documentation est incluse dans le dépôt et maintenue avec le code source. Vous pouvez accéder à la documentation de référence pour une version particulière de Tai-e (au format AsciiDoc) en explorant le répertoire docs/en, en commençant par index.adoc. Cela vous permet d'accéder à la documentation spécifique à une version de Tai-e.
En plus de la documentation de référence, les Javadocs pour Tai-e sont également disponibles comme ressource de référence utile.
Comme nous développons et mettons à jour Tai-e activement, nous enregistrons les changements notables que nous avons effectués, en particulier les nouvelles fonctionnalités et les changements cassants, dans CHANGELOG. Si vous trouvez quelque chose qui ne va pas après avoir mis à jour Tai-e, vous pouvez consulter CHANGELOG pour des informations utiles.
De plus, nous avons développé une version éducative de Tai-e où huit travaux pratiques sont soigneusement conçus pour former systématiquement les apprenants à implémenter diverses techniques d'analyse statique pour analyser des programmes Java réels. La version éducative partage une grande quantité de code avec Tai-e, donc faire les travaux pratiques serait un bon moyen de se familiariser avec Tai-e.