Lumaktaw papunta sa content
cd /languages
  • JVM na may type
  • Programming
  • Support para sa AST at mga simbolo

Scala sa Maguyva: mga code graph para sa JVM service at Spark

Sinusuportahan ng Maguyva ang Scala gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga trait, object, case class at typed call sa JVM at Spark code.

Saan nalilito ang mababaw na AI tool sa Scala

Sa Scala, maraming dinadala ang iisang pangalan. Puwedeng magkahati sa iisang konsepto ang isang trait, ang companion object nito at isang case class. Nagbi-bind ng mga bagong pangalan ang pattern matching sa loob ng mga case clause, at ang method na tinawag nang walang receiver sa loob ng class ay talagang call sa this. Nakikita ng agent na nagbabasa ng mga file isa-isa ang mga pangalan, pero hindi kung saan sila nareresolba.

Mas marami ang nireresolba ng Maguyva sa oras ng pag-index, kaya kapag itinanong ng agent kung sino ang tumatawag sa isang method, nakakakuha ito ng sagot na puwede nitong aksyunan.

Ano ang kinukuha ng Maguyva mula sa Scala

Sakop ng Maguyva ang mga .scala at .sc file. Kinukuha bilang type ang mga class, object at trait, at sakop ng functions preset sa structural_search ang mga def declaration at definition at mga lambda. Itinatala ng mga signature ang mga repeated (*) parameter, at tinatanggal ang _root_ prefix sa mga import.

Pinapanatili ng mga call relationship ang mga pangalang may kasamang class, at nireresolba sa sariling method ng class ang call na walang receiver sa loob nito. Sinusundan ng receiver typing ang mga parameter, class parameter, val at var definition, mga typed pattern at case-class pattern sa mga case clause, return type ng mga method ng class, object at trait, mga type alias, at mga extends clause. Bilang instantiation ang new sa type na nagsisimula sa malaking titik.

Walang relationship type na minarkahang hindi naaangkop para sa Scala, kaya itinatala rin ng graph ang inheritance, mga override, type reference, mga read at write, control flow at mga exception edge.

Mga halimbawang agent prompt

  • “Sino ang tumatawag sa PaymentService.capture, at mula sa aling mga route?” (find_symbol, tapos dependency_search na incoming)
  • “Aling mga class at object ang nag-e-extend ng EventHandler?” (dependency_search)
  • “I-trace kung paano umaabot ang isang order event sa ledger writer.” (get_task_context)

Mga kilalang limitasyon

  • Mga 320 standard-library na pangalan ang nifi-filter mula sa mga relationship: mga collection operation tulad ng map, flatMap at foldLeft, at mga helper na Option, Either, Try, Future at Predef. Pinapanatili ang call sa this, o sa value na nareresolba ang type sa isa sa sarili mong class, kahit nasa listahang iyon ang pangalan. Kung parang may kulang pa ring caller, gamitin ang text_pattern_search.
  • Nifi-filter mula sa mga type reference ang maiikling type parameter tulad ng A, F at CC at ang mga root type tulad ng Any, Unit at Nothing.

Mga susunod na hakbang

Mag-connect ng repository gamit ang quickstart, tapos tingnan ang support matrix sa compatibility page. Para sa mga halo-halong JVM codebase, basahin din ang gabay sa Java at ang gabay sa Kotlin.

Pinakabagay

  • > Mga JVM service na nakasulat sa Scala, kung saan ikinakalat ng mga trait, companion object at case class ang iisang konsepto sa maraming file.
  • > Mga Spark at data-engineering job na kailangang basahin ng agent kasama ang mga shared library na tinatawag nila.
  • > Mga repository na halo ang Scala at Java na kailangang i-search ng agent bilang iisang codebase.

Mga workflow ng agent

  • > Hanapin ang lahat ng tumatawag sa isang service method bago baguhin ang signature nito.
  • > Ilista ang mga class at object na nag-e-extend ng isang trait bago magdagdag ng abstract member.
  • > I-trace kung paano dumadaan ang isang request mula sa HTTP route papunta sa mga service hanggang sa data layer.

Mga detalye ng engine

  • > Sakop ng suporta sa Scala ang mga `.scala` at `.sc` file. Mga type ang class, object at trait; nireresolba sa sariling method ng class ang mga call na walang receiver sa loob nito.
  • > Sinusundan ng receiver typing ang mga parameter, class parameter, `val` at `var` definition, `case` pattern, return type ng method at mga `extends` clause.
  • > Pinapanatili ng mga call ang pangalang may kasamang class, bilang instantiation ang `new`, at mga 320 standard-library na pangalan ang nifi-filter mula sa mga relationship.

Mga kapaki-pakinabang na MCP entry point

  • find_symbol

    Gamitin para sa isang trait, object o service method kapag kailangan mo ang definition at mga reference.

  • dependency_search

    Gumamit ng incoming traversal sa isang trait o method para makita ang mga implementer at caller bago baguhin ang signature.

  • get_task_context

    Gamitin para sa mga prompt tulad ng "i-trace kung paano umaabot ang isang order event sa ledger writer".