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

Scala บน Maguyva: กราฟโค้ดสำหรับเซอร์วิส JVM และ Spark

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

จุดที่ Scala ทำให้เครื่องมือ AI แบบผิวเผินสะดุด

ใน Scala ชื่อเดียวแบกภาระไว้มาก trait ออบเจกต์คู่ของมัน และเคสคลาสอาจใช้แนวคิดเดียวกัน การจับคู่รูปแบบผูกชื่อใหม่ภายในอนุประโยค case และเมธอดที่ถูกเรียกโดยไม่มีรีซีฟเวอร์ภายในคลาสก็คือการเรียกบน this จริง ๆ เอเจนต์ที่อ่านไฟล์ทีละไฟล์จะเห็นชื่อ แต่ไม่เห็นว่าชื่อเหล่านั้นรีโซลฟ์ไปยังอะไร

Maguyva รีโซลฟ์สิ่งเหล่านี้ได้มากขึ้นตั้งแต่ตอนทำดัชนี เมื่อเอเจนต์ถามว่าใครเรียกเมธอดหนึ่ง จึงได้คำตอบที่นำไปลงมือได้ทันที

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

Maguyva ครอบคลุมไฟล์ .scala และ .sc คลาส ออบเจกต์ และ trait ถูกดึงออกมาเป็นไทป์ และพรีเซ็ต functions ใน structural_search ครอบคลุมการประกาศและนิยาม def รวมถึงแลมบ์ดา ซิกเนเจอร์บันทึกพารามิเตอร์แบบซ้ำ (*) และคำนำหน้า _root_ จะถูกตัดออกจากการอิมพอร์ต

ความสัมพันธ์การเรียกเก็บชื่อที่ระบุคลาสไว้ และการเรียกที่ไม่มีรีซีฟเวอร์ภายในคลาสจะถูกรีโซลฟ์ไปยังเมธอดของคลาสนั้นเอง การระบุชนิดของรีซีฟเวอร์ติดตามพารามิเตอร์ พารามิเตอร์ของคลาส นิยาม val และ var รูปแบบที่มีไทป์และรูปแบบเคสคลาสในอนุประโยค case ไทป์ที่คืนกลับของเมธอดในคลาส ออบเจกต์ และ trait นามแฝงไทป์ และอนุประโยค extends ส่วน new บนไทป์ที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่นับเป็นการสร้างอินสแตนซ์

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

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

  • “ใครเรียก PaymentService.capture และเรียกจากเส้นทางไหนบ้าง” (find_symbol จากนั้น dependency_search ทิศทางขาเข้า)
  • “คลาสและออบเจกต์ใดบ้างที่ขยาย EventHandler” (dependency_search)
  • “ติดตามว่าอีเวนต์คำสั่งซื้อไปถึงตัวเขียนบัญชีแยกประเภทได้อย่างไร” (get_task_context)

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

  • ชื่อจากไลบรารีมาตรฐานประมาณ 320 ชื่อถูกกรองออกจากความสัมพันธ์ ได้แก่การดำเนินการกับคอลเลกชันอย่าง map, flatMap และ foldLeft และตัวช่วย Option, Either, Try, Future และ Predef การเรียกบน this หรือบนค่าที่ไทป์รีโซลฟ์ไปยังคลาสหนึ่งของคุณ จะถูกเก็บไว้แม้ชื่อจะอยู่ในรายการนั้น หากยังดูเหมือนผู้เรียกหายไป ให้ใช้ text_pattern_search
  • พารามิเตอร์ไทป์สั้น ๆ อย่าง A, F และ CC และไทป์รากอย่าง Any, Unit และ Nothing ถูกกรองออกจากการอ้างอิงไทป์

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

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

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

  • > เซอร์วิส JVM ที่เขียนด้วย Scala ซึ่ง trait ออบเจกต์คู่ และเคสคลาส กระจายแนวคิดเดียวไปหลายไฟล์
  • > งาน Spark และวิศวกรรมข้อมูลที่เอเจนต์ต้องอ่านควบคู่กับไลบรารีที่ใช้ร่วมกันซึ่งงานเหล่านั้นเรียก
  • > รีโพซิทอรีที่ผสม Scala และ Java ซึ่งเอเจนต์ต้องค้นหาเหมือนเป็นโค้ดเบสเดียว

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

  • > ค้นหาผู้เรียกทั้งหมดของเมธอดในเซอร์วิสก่อนเปลี่ยนซิกเนเจอร์
  • > แสดงรายการคลาสและออบเจกต์ที่ขยาย trait ก่อนเพิ่มสมาชิกแบบนามธรรม
  • > ติดตามว่าคำขอเดินทางจากเส้นทาง HTTP ผ่านเซอร์วิสไปยังเลเยอร์ข้อมูลอย่างไร

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

  • > การรองรับ Scala ครอบคลุมไฟล์ `.scala` และ `.sc` คลาส ออบเจกต์ และ trait เป็นไทป์ การเรียกที่ไม่มีรีซีฟเวอร์ภายในคลาสจะถูกรีโซลฟ์ไปยังเมธอดของคลาสนั้นเอง
  • > การระบุไทป์ของรีซีฟเวอร์ติดตามพารามิเตอร์ พารามิเตอร์ของคลาส นิยาม `val` และ `var` รูปแบบ `case` ไทป์ที่คืนกลับของเมธอด และอนุประโยค `extends`
  • > การเรียกเก็บชื่อที่ระบุคลาสไว้ `new` นับเป็นการสร้างอินสแตนซ์ และชื่อจากไลบรารีมาตรฐานประมาณ 320 ชื่อถูกกรองออกจากความสัมพันธ์

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

  • find_symbol

    ใช้กับ trait ออบเจกต์ หรือเมธอดของเซอร์วิสเมื่อต้องการนิยามและการอ้างอิง

  • dependency_search

    ใช้การท่องกราฟขาเข้าบน trait หรือเมธอดเพื่อดูผู้อิมพลีเมนต์และผู้เรียกก่อนเปลี่ยนซิกเนเจอร์

  • get_task_context

    ใช้กับพรอมต์อย่าง "ติดตามว่าอีเวนต์คำสั่งซื้อไปถึงตัวเขียนบัญชีแยกประเภทได้อย่างไร"

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

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

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

การรองรับ Java ใน Maguyva: โค้ดอินเทลลิเจนซ์สำหรับรีโพซิทอรีระดับองค์กร

มีประโยชน์เมื่อรีโพเต็มไปด้วย Spring service, เฟรมเวิร์กภายใน และโค้ดที่รอดผ่านหลายยุคขององค์กร

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

นามสกุลไฟล์

.java

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

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

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

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

นามสกุลไฟล์

.kt, .kts

เปิดคู่มือ