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

Canonical source: https://maguyva.ai/fil/languages/scala

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

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.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .sc, .scala
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## 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.

## 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](/fil/docs/quickstart), tapos tingnan ang support matrix sa [compatibility page](/fil/docs/compatibility). Para sa mga halo-halong JVM codebase, basahin din ang [gabay sa Java](/fil/languages/java) at ang [gabay sa Kotlin](/fil/languages/kotlin).

## 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".
