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

Ada บน Maguyva: สเปก บอดี และกราฟแพ็กเกจ

Maguyva รองรับ Ada ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ติดตามสเปกแพ็กเกจ บอดี ทาสก์ และแท็กด์ไทป์ในระบบ Ada ที่ใช้งานมายาวนาน

ทำไมรีโพซิทอรี Ada ต้องมีแผนที่การพึ่งพา

Ada แยกสิ่งที่แพ็กเกจสัญญาไว้ (.ads) ออกจากวิธีที่แพ็กเกจทำตามสัญญา (.adb) นี่คือวิศวกรรมที่ดี และก็หมายความว่าการเปลี่ยนแปลงเพียงครั้งเดียวจะแตะหลายไฟล์ที่การค้นหาข้อความจะไม่เชื่อมโยงให้คุณ ระบบ Ada ที่ใช้งานมายาวนานยังมีอีกชั้นหนึ่ง ได้แก่ เจเนอริก, แท็กด์ไทป์, ทาสก์ และออบเจกต์แบบโพรเทกเต็ดซึ่งความสัมพันธ์ระหว่างกันสำคัญกว่าไฟล์ใดไฟล์หนึ่ง

Maguyva ให้แผนที่การพึ่งพานี้กับเอเจนต์ก่อนที่จะเสนอการเปลี่ยนแปลง ซึ่งตรงกับลำดับที่การรีวิวระบบความน่าเชื่อถือสูงคาดหวัง

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

Maguyva ครอบคลุม .ads, .adb และ .ada บอดีของซับโปรแกรม รวมถึงสเปกของโพรซีเยอร์และฟังก์ชัน ถูกดึงออกมาเป็นสัญลักษณ์ที่เรียกใช้ได้ คุณจึงค้นหาได้ทั้งสเปกและบอดีของรูทีน การจับคู่สัญลักษณ์ไม่สนตัวพิมพ์เล็กใหญ่ เหมือนกับตัว Ada เอง

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

ในการค้นหาเชิงโครงสร้าง เลือกไทป์แบบทาสก์, ไทป์แบบโพรเทกเต็ด, ไทป์เรคคอร์ด และไทป์อินเทอร์เฟซเป็นนิยามชนิดข้อมูลได้ และเลือกบอดีของเอนทรีเป็นเมธอดได้

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

  • “หน่วยใดพึ่งพา Flight_Control.Sensors และเรียกซับโปรแกรมใดของแพ็กเกจนี้” (dependency_search ทิศทางขาเข้า)
  • “แสดงสเปกและบอดีของ Compute_Trajectory พร้อมผู้เรียกทั้งหมด” (find_symbol)
  • “อธิบายว่าทาสก์ด้านเทเลเมทรีส่งข้อมูลให้ออบเจกต์แบบโพรเทกเต็ดของการบันทึกล็อกอย่างไร” (get_task_context)

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

  • Ada ใช้ไวยากรณ์เดียวกันสำหรับการเรียกบางอย่าง การเข้าถึงฟิลด์ของเรคคอร์ด และการเข้าถึงด้วยดัชนี Maguyva จึงกรองชนิดข้อมูลในตัว แพ็กเกจไลบรารีมาตรฐาน ฟังก์ชันแอตทริบิวต์ และตัวดำเนินการ (ราว 113 รูปแบบ) เพื่อให้กราฟการเรียกสะอาด การเรียกไลบรารีมาตรฐานจึงไม่กลายเป็นเส้นเชื่อมในกราฟ การเข้าถึงฟิลด์ของเรคคอร์ดและการเข้าถึงด้วยดัชนีแยกออกจากการเรียกด้วยตำแหน่งในไวยากรณ์ ไม่ใช่ด้วยรายชื่อฟิลด์ ส่วนการเรียก I/O ข้อความที่พบบ่อยอย่าง Put_Line, Put และ Get ถูกเก็บไว้โดยตั้งใจ
  • อนุประโยค use เปลี่ยนการมองเห็น แต่ไม่ถูกเลือกเป็นการนำเข้าในการค้นหาเชิงโครงสร้าง ขณะที่อนุประโยค with ถูกเลือก
  • โหนดของไทป์เรคคอร์ดและไทป์อินเทอร์เฟซอาจเป็นส่วนที่ไม่มีชื่อ การค้นหาเชิงโครงสร้างตามชื่อจึงอาจพลาดไป ใช้ find_symbol สำหรับชนิดข้อมูลที่มีชื่อ

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

เชื่อมต่อรีโพซิทอรีด้วยคู่มือเริ่มต้นใช้งาน แล้วดูตารางการรองรับได้ที่หน้าความเข้ากันได้ หาก Ada ของคุณเชื่อมกับภาษา C ให้อ่านคู่มือภาษา C ด้วย

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

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

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

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

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

  • > การรองรับ Ada ครอบคลุมสเปก `.ads` บอดี `.adb` และไฟล์ `.ada` ทั้งบอดีและสเปกของซับโปรแกรมเป็นสัญลักษณ์ที่เรียกใช้ได้
  • > การจับคู่สัญลักษณ์ไม่สนตัวพิมพ์เล็กใหญ่ และอนุประโยค `with` กับ `use` กลายเป็นความสัมพันธ์การนำเข้าหลังตัดคีย์เวิร์ดออก
  • > ชนิดข้อมูลในตัว แพ็กเกจไลบรารีมาตรฐาน ฟังก์ชันแอตทริบิวต์ และตัวดำเนินการราว 113 รายการถูกกรองออกจากการเรียก การเข้าถึงฟิลด์ของเรคคอร์ดและการเข้าถึงด้วยดัชนีแยกออกจากการเรียกด้วยตำแหน่งในไวยากรณ์ และ `Put_Line`, `Put` และ `Get` ถูกเก็บไว้โดยตั้งใจ

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

  • find_symbol

    ใช้เพื่อหาสเปกและบอดีของซับโปรแกรมพร้อมกัน รวมถึงการอ้างอิง

  • dependency_search

    ใช้การท่องกราฟทิศทางขาเข้าบนแพ็กเกจก่อนเปลี่ยนสเปก เพื่อดูทุกหน่วยที่พึ่งพา

  • get_task_context

    ใช้กับพรอมต์อย่าง “อธิบายว่าทาสก์ด้านเทเลเมทรีส่งข้อมูลให้ออบเจกต์แบบโพรเทกเต็ดของการบันทึกล็อกอย่างไร”

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

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

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

C บน Maguyva: กราฟการเรียกสำหรับโค้ดระบบและโค้ดฝังตัว

ในภาษา C กราฟการเรียกคือสถาปัตยกรรม เอเจนต์ควรอ่านมันก่อนแก้ไข

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

นามสกุลไฟล์

.c, .h

เปิดคู่มือ
เนทีฟโค้ดในระดับใหญ่ การเขียนโปรแกรม

C++ บน Maguyva: กราฟคลาสและการเรียกสำหรับโค้ดเบสขนาดใหญ่

C++ ซ่อนเป้าหมายจริงของการเรียกไว้หลัง namespace, โอเวอร์โหลด และการดิสแพตช์แบบเสมือน กราฟช่วยให้เอเจนต์หาเจอ

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

นามสกุลไฟล์

.c, .c++, .cc, .cpp, +อีก 6

เปิดคู่มือ