ข้ามไปที่เนื้อหา
cd /languages
  • มรดกงานสคริปต์
  • การเขียนโปรแกรม
  • รองรับ AST และสัญลักษณ์

Perl บน Maguyva: กราฟแพ็กเกจและซับรูทีน

Maguyva รองรับ Perl ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ติดตามแพ็กเกจ ซับรูทีน การนำเข้าด้วย use และ require และคอนสตรักเตอร์ใน Perl รุ่นเก่า

ทำไมมรดก Perl จึงแก้ไขอย่างปลอดภัยได้ยาก

โค้ด Perl หนาแน่น ยืดหยุ่น และมักเขียนโดยคนที่จากไปหลายปีแล้ว sigil เปลี่ยนความหมายของชื่อ แพ็กเกจทำหน้าที่เป็นคลาสด้วย และโมดูลเดียวกันถูกโหลดจากสคริปต์ในหลายไดเรกทอรี การค้นหาข้อความหาสตริงเจอ แต่ไม่ได้บอกเอเจนต์ว่าสคริปต์เรียกซับรูทีนใดจริง

Maguyva ให้แพ็กเกจ ซับรูทีน การนำเข้า และคอนสตรักเตอร์กับเอเจนต์ในรูปของโครงสร้าง เพื่อให้กำหนดขอบเขตการเปลี่ยนแปลงได้ก่อนแตะโค้ด

Maguyva ดึงอะไรจาก Perl ได้บ้าง

Maguyva ครอบคลุม .pl, .pm, .t, .pod และ .perl ซับรูทีนถูกดึงออกมาเป็นฟังก์ชัน และการประกาศ package เป็นคลาส โดย sigil ($, @, %, &, *) ถูกตัดออกจากชื่อนิยาม จึงค้นหาตัวแปรและซับรูทีนด้วยชื่อเปล่าได้

การนำเข้ามาจากคำสั่ง use, require และ package การเรียกเมธอดรูปแบบ Class->new นับเป็นการสร้างอินสแตนซ์ ส่วน bless และ tie ถูกเก็บไว้ในกราฟการเรียกโดยตั้งใจ กราฟยังบันทึกการสืบทอด การ override การอ้างอิงชนิดข้อมูล การอ่านและการเขียน และการโยนเอกซ์เซปชันด้วย

ฟังก์ชันในตัวราว 189 รายการ (print, open, die, warn และอื่น ๆ ทำนองเดียวกัน) ถูกกรองออกจากความสัมพันธ์การเรียก เพื่อให้โค้ดของรีโพซิทอรีโดดเด่นขึ้นมา

ตัวอย่างพรอมต์สำหรับเอเจนต์

  • “สคริปต์ใดใช้ Billing::Invoice และเรียกซับรูทีนใดของแพ็กเกจนี้” (dependency_search ทิศทางขาเข้า)
  • “Report::Monthly ถูกสร้างที่ใด และเกิดอะไรขึ้นหลัง ->new” (find_symbol แล้วตามด้วย get_task_context)
  • “หาไฟล์ทดสอบทั้งหมดที่ทดสอบ Auth::Session” (text_pattern_search แล้วตามด้วย find_symbol)

ข้อจำกัดที่ทราบ

  • เมธอด Perl แบบดั้งเดิมเป็นเพียงการประกาศ sub ภายในแพ็กเกจ ในการค้นหาเชิงโครงสร้าง จึงมีเพียงไวยากรณ์ method แบบเฉพาะที่ใหม่กว่าที่ถูกจัดเป็นเมธอด สำหรับ Perl เชิงวัตถุรุ่นเก่า ให้ใช้พรีเซ็ต functions
  • การเรียกฟังก์ชันในตัวที่ถูกกรองจะไม่ปรากฏเป็นเส้นเชื่อมในกราฟ ใช้ text_pattern_search เมื่อต้องการทุกการเรียก open หรือ print

ขั้นตอนถัดไป

เชื่อมต่อรีโพซิทอรีด้วยคู่มือเริ่มต้นใช้งาน แล้วดูตารางการรองรับได้ที่หน้าความเข้ากันได้ หากมรดกโค้ดกำลังย้ายไปภาษาสคริปต์อื่น ให้เทียบกับคู่มือภาษา Python

เหมาะที่สุดสำหรับ

  • > ทีมที่รับช่วงบริการ Perl แอป CGI หรือสคริปต์งาน batch และรายงานที่ยังทำงานอยู่ในโปรดักชัน
  • > โค้ดเบสที่ใช้โมดูลเป็นหลัก ซึ่งแพ็กเกจ `.pm` ถูกใช้ร่วมกันในสคริปต์และไฟล์ทดสอบจำนวนมาก
  • > งานย้ายระบบหรือปลดระวาง ซึ่งคำถามแรกคือสคริปต์ใดพึ่งพาโมดูลใด

เวิร์กโฟลว์ของเอเจนต์

  • > แสดงรายการทุกสคริปต์และโมดูลที่ใช้แพ็กเกจที่ใช้ร่วมกัน ก่อนแก้ไขแพ็กเกจนั้น
  • > หาว่าคลาสถูกสร้างด้วย `->new` ที่ใด และหลังจากนั้นเรียกซับรูทีนใด
  • > ติดตามรายงานหรืองานหนึ่ง ตั้งแต่สคริปต์เริ่มต้นผ่านโมดูลที่สคริปต์โหลด

รายละเอียดเอนจิน

  • > การรองรับ Perl ครอบคลุม `.pl`, `.pm`, `.t`, `.pod` และ `.perl` ซับรูทีนเป็นฟังก์ชัน และการประกาศ `package` เป็นคลาส
  • > sigil ถูกตัดออกจากชื่อนิยาม `use` และ `require` กลายเป็นการนำเข้า และ `Class->new` นับเป็นการสร้างอินสแตนซ์
  • > ฟังก์ชันในตัวราว 189 รายการ เช่น `print`, `open` และ `die` ถูกกรองออกจากการเรียก ขณะที่ `bless` และ `tie` ยังอยู่ในกราฟ

จุดเริ่มต้น MCP ที่มีประโยชน์

  • find_symbol

    ใช้กับชื่อแพ็กเกจหรือซับรูทีน sigil ถูกตัดออกแล้ว จึงค้นหาด้วยชื่อเปล่า

  • dependency_search

    ใช้การท่องกราฟทิศทางขาเข้าบนโมดูลที่ใช้ร่วมกัน เพื่อดูว่าสคริปต์และแพ็กเกจใดพึ่งพาอยู่

  • text_pattern_search

    ใช้กับฟังก์ชันในตัวที่ถูกกรอง คีย์การตั้งค่า และสตริง SQL ที่อยู่นอกกราฟการเรียก

คู่มือที่เกี่ยวข้อง

ส่วนอื่นของรีโพที่เกี่ยวข้อง

ดูคู่มือทั้งหมด
เว็บเก่า แรงกดดันใหม่ การเขียนโปรแกรม

การรองรับ PHP ใน Maguyva: เว็บแอปที่อยู่มายาวนานโดยไม่ต้องแก้ไขแบบไม่เข้าใจโค้ด

เกี่ยวข้องเมื่อโค้ดเบส PHP ยังคงสร้างรายได้อยู่ แต่ไม่มีใครอยากปล่อยให้เอเจนต์แก้ไขไปตามใจ

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.php, .php3, .php4, .php5, +อีก 2

เปิดคู่มือ
ระบบไดนามิก การเขียนโปรแกรม

การรองรับ Python ใน Maguyva: ค้นหาโค้ดและรีแฟกเตอร์ด้วย AI

มีประโยชน์เมื่อโค้ดเบส Python กระจายไปทั่ว service, สคริปต์, stub ชนิดข้อมูล และโค้ดที่เชื่อมโยงส่วนต่างๆ ในการปฏิบัติงาน

รองรับ AST และสัญลักษณ์ การแยกวิเคราะห์ AST การสกัดสัญลักษณ์ ความสัมพันธ์ในกราฟ

นามสกุลไฟล์

.py, .pyi, .pyw

เปิดคู่มือ