
Tai-e(中国語:太阿、発音:[ˈtaɪə:])は、Java 向けの新しい静的解析フレームワークです(詳細は ISSTA 2023 論文 をご覧ください)。このフレームワークは、私たちが提案した新しい設計と、Soot、WALA、Doop、SpotBugs といった古典的なフレームワークの設計から、おそらく「最良」のものを採用しています。Tai-e は学びやすく、使いやすく、効率的で、拡張性が高く、その上で新しい解析を容易に開発できます。
現在、Tai-e は以下の主要な解析コンポーネントを提供しています(さらに多くの解析が追加予定です)。
clone() 検出器)Tai-e は Java で開発されており、Windows、Linux、macOS を含む主要なオペレーティングシステムで動作します。
開発者への礼儀として、研究で Tai-e フレームワークを使用する際には、ISSTA 2023 の論文を 引用 していただくようお願いいたします(CITATION.bib をご参照ください)。
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).
推奨される方法は、GitHub リリース から配布 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 プロジェクトに簡単に統合できます。安定版と最新版の両方を管理しており、以下に 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 の 最新版 に関するものであることに注意してください。特定の安定版のドキュメントが必要な場合は、ドキュメントインデックス を参照してください。また、ドキュメントはリポジトリ内に含まれており、ソースコードとともに管理されています。特定のバージョンの Tai-e のリファレンスドキュメント(AsciiDoc 形式)にアクセスするには、docs/en ディレクトリを参照し、index.adoc から始めてください。これにより、Tai-e のバージョン固有のドキュメントにアクセスできます。
リファレンスドキュメントに加えて、Tai-e の Javadoc も便利なリファレンスリソースとして利用できます。
Tai-e は活発に開発・更新されているため、特に新機能や互換性を損なう変更など、重要な変更を CHANGELOG に記録しています。Tai-e の更新後に問題が発生した場合は、CHANGELOG を確認すると役立つ情報が見つかるかもしれません。
さらに、Tai-e の教育版も開発しており、実際の Java プログラムを解析するためのさまざまな静的解析手法を実装する学習者を体系的にトレーニングするために、8 つのプログラミング課題が慎重に設計されています。教育版は Tai-e と大量のコードを共有しているため、課題に取り組むことは Tai-e に慣れる良い方法です。