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

Swift บน Maguyva: กราฟโค้ดสำหรับ iOS และ macOS

Maguyva รองรับ Swift ด้วย AST สัญลักษณ์ และกราฟ เพื่อให้เอเจนต์ AI ติดตามโพรโทคอล, ส่วนขยาย, อินิเชียลไลเซอร์ และออบเซิร์ฟเวอร์ในโค้ด iOS และ macOS

ทำไม Swift ต้องการมากกว่าการค้นหาไฟล์

Swift กระจายชนิดข้อมูลหนึ่งไปหลายที่ struct ถูกประกาศในไฟล์หนึ่ง ได้รับพฤติกรรมจากส่วนขยายในอีกสามไฟล์ และสอดคล้องกับโพรโทคอลที่นิยามไว้ในแพ็กเกจ การเปลี่ยนสเตตซ่อนอยู่ในพร็อพเพอร์ตีแบบคำนวณ และออบเซิร์ฟเวอร์ willSet / didSet เอเจนต์ที่อ่านทีละไฟล์จะพลาดสิ่งเหล่านี้ไปเกือบหมด

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

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

Maguyva ครอบคลุม .swift สัญลักษณ์ที่เรียกใช้ได้รวมถึงฟังก์ชัน, init และ deinit, subscript, getter และ setter ของพร็อพเพอร์ตีแบบคำนวณ และออบเซิร์ฟเวอร์ willSet / didSet โค้ดที่เปลี่ยนสเตตจึงค้นหาได้ในฐานะสัญลักษณ์ แทนที่จะหายไปในตัวของพร็อพเพอร์ตี

สมาชิกที่ประกาศใน struct, enum, โพรโทคอล และส่วนขยายจะถูกระบุด้วยชนิดข้อมูลเจ้าของ (เช่น CartStore.add) และสมาชิกที่เพิ่มในส่วนขยายจะถูกนับเป็นของชนิดข้อมูลที่ถูกขยาย พารามิเตอร์เจเนอริก รายการการสอดคล้องกับโพรโทคอล และซัฟฟิกซ์ ? / ! ถูกตัดออกจากชื่อนิยาม การค้นหาจึงใช้ชื่อเปล่า การเรียกยังเก็บ self. และตัวระบุคลาสไว้ และโคลเชอร์ท้ายการเรียกถูกนับรวมในจำนวนอาร์กิวเมนต์ของการเรียก

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

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

  • “ชนิดข้อมูลใดสอดคล้องกับ PaymentProvider และแต่ละตัวถูกสร้างที่ใด” (dependency_search)
  • “ใครเรียก CartStore.add และเรียกจากวิวใดบ้าง” (find_symbol แล้วตามด้วย dependency_search ทิศทางขาเข้า)
  • “อธิบายว่าการแจ้งเตือนแบบพุชไปถึงหน้าจอกล่องข้อความได้อย่างไร” (get_task_context)

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

  • มีเพียงซอร์ส .swift ที่ถูกจับคู่ ไฟล์ Storyboard และ XIB ไม่อยู่ในรายการนามสกุลไฟล์ การเชื่อมต่อของ Interface Builder จึงอยู่นอกกราฟ
  • การเรียกไลบรารีมาตรฐานและ Foundation เช่น print, debugPrint, NSLog และแอสเซอร์ชันถูกกรองออกจากความสัมพันธ์ จึงไม่เป็นเส้นเชื่อมในกราฟ ใช้ text_pattern_search สำหรับกรณีเหล่านี้

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

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

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

  • > ทีม iOS และ macOS ที่มี target แอปขนาดใหญ่และแพ็กเกจ Swift ที่ใช้ร่วมกัน
  • > โค้ดเบสที่สร้างรอบโพรโทคอล และส่วนขยายซึ่งพฤติกรรมของชนิดข้อมูลกระจายอยู่ในหลายไฟล์
  • > เวิร์กโฟลว์ของเอเจนต์ที่ต้องวิเคราะห์ผลกระทบก่อนเปลี่ยนโมเดล บริการ หรือโพรโทคอลที่ใช้ร่วมกัน

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

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

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

  • > สัญลักษณ์ที่เรียกใช้ได้รวมถึงฟังก์ชัน, `init`, `deinit`, subscript, getter และ setter ของพร็อพเพอร์ตีแบบคำนวณ และออบเซิร์ฟเวอร์ `willSet` / `didSet`
  • > สมาชิกของ struct, enum, โพรโทคอล และส่วนขยายถูกระบุด้วยชนิดข้อมูลเจ้าของ เช่น `CartStore.add`
  • > พารามิเตอร์เจเนอริก รายการการสอดคล้องกับโพรโทคอล และซัฟฟิกซ์ `?` / `!` ถูกตัดออกจากชื่อนิยาม และการเรียกเก็บ `self.` และตัวระบุคลาสไว้

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

  • find_symbol

    ใช้กับชื่อชนิดข้อมูล โพรโทคอล หรือเมธอด เมื่อต้องการนิยามและการอ้างอิง

  • dependency_search

    ใช้บนโพรโทคอล เพื่อหาชนิดข้อมูลที่สอดคล้อง หรือใช้ทิศทางขาเข้าบนเมธอดเพื่อหาผู้เรียก

  • get_task_context

    ใช้กับพรอมต์อย่าง “อธิบายว่าการแจ้งเตือนแบบพุชไปถึงหน้าจอกล่องข้อความได้อย่างไร”

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

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

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

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

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

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

นามสกุลไฟล์

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

เปิดคู่มือ
JVM ยุคใหม่ การเขียนโปรแกรม

Kotlin บน Maguyva: กราฟโค้ดสำหรับ Android และ JVM

Kotlin ซ่อนการเชื่อมต่อไว้มากมายในรีซีฟเวอร์ และแลมบ์ดา กราฟช่วยให้มองเห็นอีกครั้ง

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

นามสกุลไฟล์

.kt, .kts

เปิดคู่มือ