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 โดยใช้ประโยชน์จากการออกแบบที่ดีของคลาสสิก ใน Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA '23), 17–21 กรกฎาคม 2023, ซีแอตเทิล, วอชิงตัน, สหรัฐอเมริกา (pdf, bibtex)
วิธีที่ง่ายที่สุดคือดาวน์โหลดจาก GitHub Releases
หรือคุณอาจสร้าง Tai-e ล่าสุดด้วยตัวเองจากซอร์สโค้ด ซึ่งสามารถทำได้ง่ายๆ ผ่าน Gradle (ต้องแน่ใจว่า Java 17 (หรือเวอร์ชันที่สูงกว่า) มีอยู่ในระบบของคุณ) คุณเพียงแค่ต้องรันคำสั่ง gradlew fatJar
จากนั้น jar ที่รันได้จะถูกสร้างขึ้นใน tai-e/build/
ซึ่งรวมถึง Tai-e และการขึ้นต่อกันทั้งหมด
Tai-e ได้รับการออกแบบให้เป็นเครื่องมือแบบสแตนด์อโลน แต่คุณยังมีตัวเลือกในการรวมไว้ในโปรเจ็กต์ของคุณเป็นการพึ่งพา มีอยู่ในที่เก็บ Maven ซึ่งช่วยให้คุณสามารถรวมเข้ากับโปรเจ็กต์ Java ของคุณได้อย่างง่ายดายโดยใช้เครื่องมือสร้างเช่น Gradle และ Maven เรารักษา Tai-e ทั้งเวอร์ชันเสถียรและเวอร์ชันล่าสุด และนี่คือพิกัดที่สอดคล้องกันในรูปแบบสคริปต์ Gradle และ Maven:
สำหรับเกรเดิล:
dependencies {
implementation( " net.pascal-lab:tai-e:0.2.2 " )
}
สำหรับมาเวน:
< 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 " )
}
สำหรับมาเวน:
< 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 เวอร์ชันล่าสุด หากคุณต้องการเอกสารประกอบสำหรับเวอร์ชันเสถียร โปรดดูที่ดัชนีเอกสารประกอบ นอกจากนี้ เอกสารประกอบยังรวมอยู่ในพื้นที่เก็บข้อมูลและดูแลรักษาควบคู่ไปกับซอร์สโค้ด คุณสามารถเข้าถึงเอกสารอ้างอิงสำหรับ 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