
إطار عمل تحليل ثابت سهل التعلم/الاستخدام لجافا وأندرويد
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. تحتوي التوزيعة على 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، مما يسمح لك بدمجه بسهولة في مشاريع 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.