Tai-e(中文:太阿;发音:[ˈtaɪə:])是一个新的 Java 静态分析框架(详情请见我们的 ISSTA 2023 论文),它融合了我们提出的新设计和经典框架(如 Soot、WALA、Doop、SpotBugs)中的最佳设计。Tai-e 易于学习、易于使用、高效且高度可扩展,可让你轻松在其基础上开发新的分析。
目前,Tai-e 提供以下主要分析组件(更多分析正在开发中):
clone() 检测器Tai-e 使用 Java 开发,可在 Windows、Linux 和 macOS 等主流操作系统上运行。
出于对开发者的尊重,我们希望你在研究工作中 请引用 ISSTA 2023 论文,该论文描述了 Tai-e 框架:
Tian Tan 和 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).
推荐方式是从 GitHub Releases 下载发行版 ZIP。该 ZIP 包含 Tai-e、所有运行时依赖、离线文档以及 Windows、Linux 和 macOS 的启动脚本。
或者,你也可以从源代码自行构建最新版本的 Tai-e。通过 Gradle 即可简单完成(确保系统上安装了 Java 17 或更高版本):
./gradlew distZip
发行版 ZIP 将生成在 tai-e/build/distributions/ 目录下。解压后,通过启动脚本运行 Tai-e:
# 在 Linux/macOS 上
./tai-e-<version>/bin/tai-e -h
# 在 Windows 上
.\tai-e-<version>\bin\tai-e.bat -h
为了兼容旧版本和脚本,Tai-e 仍然提供传统的全功能 JAR:
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h
Tai-e 设计为一个独立工具,但你也可以选择将其作为依赖引入项目。它已在 Maven 仓库中提供,便于你使用 Gradle 和 Maven 等构建工具将其集成到 Java 项目中。我们同时维护稳定版和最新版 Tai-e,以下是 Gradle 和 Maven 脚本格式的对应坐标:
对于 Gradle:
dependencies {
implementation("net.pascal-lab:tai-e:0.5.4")
}
对于 Maven:
<dependencies>
<dependency>
<groupId>net.pascal-lab</groupId>
<artifactId>tai-e</artifactId>
<version>0.5.4</version>
</dependency>
</dependencies>
对于 Gradle:
repositories {
mavenCentral()
maven { url = uri("https://central.sonatype.com/repository/maven-snapshots/") }
}
dependencies {
implementation("net.pascal-lab:tai-e:0.5.5-SNAPSHOT")
}
对于 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>
你可以在 Gradle 或 Maven 脚本中使用这些坐标,将所需版本的 Tai-e 引入项目。
我们已在参考文档中提供了关于 Tai-e 的详细信息,涵盖了在 IntelliJ IDEA 中设置、命令行选项以及开发新分析等多个方面。
请注意,上述参考文档对应的是 最新版本 的 Tai-e。 如果你需要特定稳定版本的文档,请参考文档索引。 此外,文档也包含在仓库中并与源代码一同维护。 你可以通过 docs/en 目录(从 index.adoc 开始)访问特定版本 Tai-e 的参考文档(AsciiDoc 格式)。 这样你可以获取 Tai-e 的版本特定文档。
除了参考文档,Tai-e 的 Javadocs 也作为有用的参考资源提供。
由于我们正在积极开发和更新 Tai-e,因此我们在 CHANGELOG 中记录了显著的更改,特别是新功能和破坏性变更。 如果你在更新 Tai-e 后发现任何问题,可以查看 CHANGELOG 以获取有用信息。
此外,我们还开发了Tai-e 教育版,其中精心设计了八个编程练习题,用于系统地训练学习者实现各种静态分析技术来分析真实 Java 程序。 教育版与 Tai-e 共享大量代码,因此完成这些练习题是熟悉 Tai-e 的好方法。