
Un marco de análisis estático fácil de aprender/usar para Java y Android
Tai-e (chino: 太阿; pronunciación: [ˈtaɪə:]) es un nuevo marco de análisis estático para Java (consulte nuestro artículo de ISSTA 2023 para más detalles), que presenta los diseños "mejores" tanto de los novedosos que propusimos como de los marcos clásicos como Soot, WALA, Doop y SpotBugs. Tai-e es fácil de aprender, fácil de usar, eficiente y altamente extensible, lo que permite desarrollar fácilmente nuevos análisis sobre él.
Actualmente, Tai-e proporciona los siguientes componentes principales de análisis (y más análisis están en camino):
clone() incorrectoTai-e está desarrollado en Java y puede ejecutarse en los principales sistemas operativos, incluidos Windows, Linux y macOS.
Como cortesía para los desarrolladores, esperamos que por favor cite el artículo de ISSTA 2023 que describe el marco Tai-e en tu trabajo de investigación:
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 forma recomendada es descargar el ZIP de distribución desde GitHub Releases. El ZIP contiene Tai-e, todas las dependencias de ejecución, documentación fuera de línea y scripts de inicio para Windows, Linux y macOS.
Alternativamente, puedes compilar la última versión de Tai-e tú mismo desde el código fuente. Esto se puede lograr simplemente mediante Gradle (asegúrate de que Java 17 (o una versión superior) esté disponible en tu sistema):
./gradlew distZip
El ZIP de distribución se generará en tai-e/build/distributions/. Después de extraerlo, ejecuta Tai-e mediante el script de inicio:
# en Linux/macOS
./tai-e-<version>/bin/tai-e -h
# en Windows
.\tai-e-<version>\bin\tai-e.bat -h
Para compatibilidad con versiones anteriores y scripts, Tai-e aún proporciona un JAR todo-en-uno heredado:
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h
Tai-e está diseñado como una herramienta independiente, pero también tienes la opción de incluirlo en tu proyecto como dependencia. Está disponible en repositorios Maven, lo que te permite integrarlo fácilmente en tus proyectos Java utilizando herramientas de compilación como Gradle y Maven. Mantenemos tanto versiones estables como la última versión de Tai-e, y aquí están las coordenadas correspondientes en formatos de script de Gradle y Maven:
Para Gradle:
dependencies {
implementation("net.pascal-lab:tai-e:0.5.4")
}
Para Maven:
<dependencies>
<dependency>
<groupId>net.pascal-lab</groupId>
<artifactId>tai-e</artifactId>
<version>0.5.4</version>
</dependency>
</dependencies>
Para Gradle:
repositories {
mavenCentral()
maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}
dependencies {
implementation("net.pascal-lab:tai-e:0.5.5-SNAPSHOT")
}
Para Maven:
<repositories>
<repository>
<id>snapshots</id>
<name>Servidor de snapshots de Sonatype</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>
Puedes usar estas coordenadas en tus scripts de Gradle o Maven para incluir la versión deseada de Tai-e en tu proyecto.
Hemos proporcionado información detallada de Tai-e en la Documentación de Referencia, que cubre varios aspectos como Configuración en IntelliJ IDEA, Opciones de Línea de Comandos y Desarrollo de Nuevos Análisis.
Ten en cuenta que la documentación de referencia mencionada anteriormente corresponde a la última versión de Tai-e. Si necesitas documentación para una versión estable específica, consulta el Índice de Documentación. Además, la documentación está incluida dentro del repositorio y se mantiene junto con el código fuente. Puedes acceder a la documentación de referencia para una versión particular de Tai-e (en formato AsciiDoc) explorando el directorio docs/en, comenzando desde index.adoc. Esto te permite acceder a la documentación específica de la versión de Tai-e.
Además de la documentación de referencia, Javadocs para Tai-e también están disponibles como un recurso de referencia útil.
Dado que estamos desarrollando y actualizando activamente Tai-e, registramos los cambios notables que realizamos, especialmente las nuevas funciones y los cambios importantes, en CHANGELOG. Si encuentras algo incorrecto después de actualizar Tai-e, quizás puedas consultar CHANGELOG para obtener información útil.
Además, hemos desarrollado una versión educativa de Tai-e donde se han diseñado cuidadosamente ocho asignaciones de programación para entrenar sistemáticamente a los aprendices en la implementación de diversas técnicas de análisis estático para analizar programas Java reales. La versión educativa comparte una gran cantidad de código con Tai-e, por lo que realizar las asignaciones sería una buena manera de familiarizarse con Tai-e.