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 框架的论文:
天坛和月丽。 2023. Tai-e:利用经典的优秀设计,开发人员友好的 Java 静态分析框架。第 32 届 ACM SIGSOFT 国际软件测试与分析研讨会 (ISSTA '23) 会议记录,2023 年 7 月 17-21 日,美国华盛顿州西雅图 (pdf, bibtex)。
最简单的方法是从 GitHub Releases 下载。
或者,您可以根据源代码自己构建最新的 Tai-e。这可以通过 Gradle 轻松完成(确保您的系统上有 Java 17(或更高版本))。你只需要运行命令gradlew fatJar
,然后就会在tai-e/build/
中生成可运行的 jar,其中包含 Tai-e 及其所有依赖项。
Tai-e 被设计为独立工具,但您也可以选择将其作为依赖项包含在项目中。它在 Maven 存储库上可用,允许您使用 Gradle 和 Maven 等构建工具轻松地将其集成到您的 Java 项目中。我们维护 Tai-e 的稳定版本和最新版本,以下是 Gradle 和 Maven 脚本格式的对应坐标:
对于摇篮:
dependencies {
implementation( " net.pascal-lab:tai-e:0.2.2 " )
}
对于Maven:
< dependencies >
< dependency >
< groupId >net.pascal-lab</ groupId >
< artifactId >tai-e</ artifactId >
< version >0.2.2</ version >
</ dependency >
</ dependencies >
对于摇篮:
repositories {
mavenCentral()
maven { url = uri( " https://s01.oss.sonatype.org/content/repositories/snapshots/ " ) }
}
dependencies {
implementation( " net.pascal-lab:tai-e:0.5.1-SNAPSHOT " )
}
对于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 >
您可以在 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的教育版,其中精心设计了8个编程作业,系统地训练学习者使用各种静态分析技术来分析真实的Java程序。教育版与Tai-e共享大量代码,因此做作业是熟悉Tai-e的好方法。