Langkau ke kandungan
cd /languages
  • JVM berjenis
  • Pengaturcaraan
  • Sokongan AST dan simbol

Scala dalam Maguyva: graf kod untuk perkhidmatan JVM dan Spark

Maguyva menyokong Scala dengan AST, simbol dan graf, supaya ejen AI boleh menjejak trait, objek, case class dan panggilan berjenis dalam kod JVM dan Spark.

Di mana Scala memerangkap alat AI yang cetek

Dalam Scala, satu nama memikul banyak beban. Sebuah trait, objek pengiringnya dan sebuah case class boleh berkongsi satu konsep. Padanan corak mengikat nama baharu di dalam klausa case, dan kaedah yang dipanggil tanpa penerima di dalam kelas sebenarnya ialah panggilan pada this. Ejen yang membaca fail satu demi satu melihat nama-nama itu, tetapi tidak melihat ke mana ia diselesaikan.

Maguyva menyelesaikan lebih banyak perkara semasa pengindeksan, supaya apabila ejen bertanya siapa yang memanggil sesuatu kaedah, ia mendapat jawapan yang boleh terus diambil tindakan.

Apa yang diekstrak oleh Maguyva daripada Scala

Maguyva merangkumi fail .scala dan .sc. Kelas, objek dan trait diekstrak sebagai jenis, dan pratetap functions dalam structural_search merangkumi pengisytiharan dan takrifan def serta lambda. Tandatangan merekodkan parameter berulang (*), dan awalan _root_ dibuang daripada import.

Hubungan panggilan mengekalkan nama yang dilayakkan dengan kelas, dan panggilan tanpa penerima di dalam kelas diselesaikan kepada kaedah kelas itu sendiri. Penjenisan penerima menjejak parameter, parameter kelas, takrifan val dan var, corak berjenis dan corak case class dalam klausa case, jenis pulangan kaedah kelas, objek dan trait, alias jenis serta klausa extends. new pada jenis berhuruf besar dikira sebagai instansiasi.

Tiada jenis hubungan yang ditanda sebagai tidak berkenaan untuk Scala, jadi graf juga merekodkan pewarisan, penggantian, rujukan jenis, bacaan dan tulisan, aliran kawalan dan tepi pengecualian.

Contoh gesaan ejen

  • “Siapa yang memanggil PaymentService.capture, dan daripada laluan mana?” (find_symbol, kemudian dependency_search arah masuk)
  • “Kelas dan objek mana yang melanjutkan EventHandler?” (dependency_search)
  • “Jejaki bagaimana peristiwa pesanan sampai ke penulis lejar.” (get_task_context)

Had yang diketahui

  • Kira-kira 320 nama pustaka standard ditapis daripada hubungan: operasi koleksi seperti map, flatMap dan foldLeft, serta pembantu Option, Either, Try, Future dan Predef. Panggilan pada this, atau pada nilai yang jenisnya diselesaikan kepada salah satu kelas anda, dikekalkan walaupun namanya ada dalam senarai itu. Jika seorang pemanggil masih kelihatan hilang, gunakan text_pattern_search.
  • Parameter jenis pendek seperti A, F dan CC serta jenis akar seperti Any, Unit dan Nothing ditapis daripada rujukan jenis.

Langkah seterusnya

Sambungkan repositori dengan panduan permulaan pantas, kemudian semak matriks sokongan di halaman keserasian. Untuk pangkalan kod JVM bercampur, baca juga panduan Java dan panduan Kotlin.

Paling sesuai

  • > Perkhidmatan JVM yang ditulis dalam Scala, di mana trait, objek pengiring dan case class menyebarkan satu konsep ke banyak fail.
  • > Kerja Spark dan kejuruteraan data yang perlu dibaca ejen bersama pustaka dikongsi yang dipanggilnya.
  • > Repositori campuran Scala dan Java yang perlu dicari oleh ejen sebagai satu pangkalan kod.

Aliran kerja ejen

  • > Mencari semua pemanggil kaedah perkhidmatan sebelum mengubah tandatangannya.
  • > Menyenaraikan kelas dan objek yang melanjutkan sesuatu trait sebelum menambah ahli abstrak.
  • > Menjejak bagaimana permintaan bergerak daripada laluan HTTP melalui perkhidmatan ke lapisan data.

Butiran enjin

  • > Sokongan Scala merangkumi fail `.scala` dan `.sc`. Kelas, objek dan trait ialah jenis; panggilan tanpa penerima di dalam kelas diselesaikan kepada kaedah kelas itu sendiri.
  • > Penjenisan penerima menjejak parameter, parameter kelas, takrifan `val` dan `var`, corak `case`, jenis pulangan kaedah dan klausa `extends`.
  • > Panggilan mengekalkan nama yang dilayakkan dengan kelas, `new` dikira sebagai instansiasi, dan kira-kira 320 nama pustaka standard ditapis daripada hubungan.

Titik masuk MCP yang berguna

  • find_symbol

    Gunakan untuk trait, objek atau kaedah perkhidmatan apabila anda memerlukan takrifan dan rujukannya.

  • dependency_search

    Gunakan penelusuran arah masuk pada trait atau kaedah untuk melihat pelaksana dan pemanggil sebelum mengubah tandatangan.

  • get_task_context

    Gunakan untuk gesaan seperti "jejaki bagaimana peristiwa pesanan sampai ke penulis lejar".