
Java 및 Android를 위한 배우기/사용하기 쉬운 정적 분석 프레임워크
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 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 프로젝트에 쉽게 통합할 수 있습니다. 안정 버전과 최신 버전 모두 유지 관리하며, 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의 Javadocs도 유용한 참조 자료로 제공됩니다.
Tai-e는 활발히 개발 및 업데이트되고 있으므로, 주요 변경 사항, 특히 새로운 기능과 호환성에 영향을 주는 변경 사항을 CHANGELOG에 기록하고 있습니다. Tai-e 업데이트 후 문제가 발생하면 CHANGELOG에서 유용한 정보를 확인할 수 있습니다.
또한, 실제 Java 프로그램을 분석하기 위해 다양한 정적 분석 기술을 구현하는 방법을 체계적으로 학습할 수 있도록 8개의 프로그래밍 과제가 설계된 교육용 버전의 Tai-e를 개발했습니다. 교육용 버전은 Tai-e와 많은 코드를 공유하므로, 과제를 수행하는 것이 Tai-e에 익숙해지는 좋은 방법이 될 것입니다.