
Простая в изучении/использовании платформа статического анализа для Java и Android
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 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).
Рекомендуемый способ — загрузить дистрибутивный ZIP-архив из GitHub Releases. ZIP-архив содержит Tai-e, все зависимости времени выполнения, офлайн-документацию и скрипты запуска для Windows, Linux и macOS.
В качестве альтернативы вы можете собрать последнюю версию Tai-e из исходного кода. Это легко сделать с помощью Gradle (убедитесь, что на вашей системе установлена Java 17 или выше):
./gradlew distZip
Дистрибутивный ZIP-архив будет создан в tai-e/build/distributions/.
После распаковки запустите Tai-e с помощью скрипта запуска:
# on Linux/macOS
./tai-e-<version>/bin/tai-e -h
# on Windows
.\tai-e-<version>\bin\tai-e.bat -h
Для совместимости со старыми релизами и скриптами Tai-e также предоставляет устаревший all-in-one JAR:
./gradlew fatJar
java -jar build/tai-e-all-<version>.jar -h
Tai-e разработан как автономный инструмент, но у вас также есть возможность включить его в свой проект в качестве зависимости. Он доступен в репозиториях Maven, что позволяет легко интегрировать его в ваши Java-проекты с помощью таких инструментов сборки, как Gradle и Maven. Мы поддерживаем как стабильные, так и последние версии 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. Если вам нужна документация для конкретной стабильной версии, пожалуйста, обратитесь к Индексу документации. Кроме того, документация включена в репозиторий и поддерживается вместе с исходным кодом. Вы можете получить доступ к справочной документации для конкретной версии Tai-e (в формате AsciiDoc), изучив каталог docs/en, начиная с index.adoc. Это позволяет вам получить доступ к документации для конкретной версии Tai-e.
В дополнение к справочной документации, Javadocs для Tai-e также доступны как полезный справочный ресурс.
Поскольку мы активно разрабатываем и обновляем Tai-e, мы записываем заметные изменения, особенно новые функции и критические изменения, в CHANGELOG. Если вы обнаружите какие-либо проблемы после обновления Tai-e, возможно, вам стоит проверить CHANGELOG на предмет полезной информации.
Кроме того, мы разработали образовательную версию Tai-e, в которой тщательно разработаны восемь заданий по программированию для систематического обучения учащихся реализации различных методов статического анализа для анализа реальных Java-программ. Образовательная версия использует большую часть кода Tai-e, поэтому выполнение заданий будет хорошим способом познакомиться с Tai-e.