# Scala in Maguyva: codegrafen voor JVM-services en Spark

Canonical source: https://maguyva.ai/nl/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).

Maguyva ondersteunt Scala met AST, symbolen en graaf, zodat AI-agents traits, objects, case classes en getypeerde aanroepen volgen in JVM- en Spark-code.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .sc, .scala
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

## Beste toepassing

- JVM-services in Scala waarin traits, companion objects en case classes één concept over veel bestanden verspreiden.
- Spark- en data-engineeringjobs die agents samen met de gedeelde bibliotheken moeten lezen die ze aanroepen.
- Gemengde Scala- en Java-repositories die agents als één codebase moeten doorzoeken.

## Agentworkflows

- Alle aanroepers van een servicemethode vinden voordat de signatuur verandert.
- Opsommen welke klassen en objects een trait uitbreiden voordat er een abstract member bij komt.
- Volgen hoe een request van een HTTP-route via services naar de datalaag gaat.

## Waar Scala oppervlakkige AI-tools laat struikelen

In Scala draagt één naam veel. Een trait, zijn companion object en een case class kunnen één concept delen. Pattern matching bindt nieuwe namen in `case`-clausules, en een methode die binnen een klasse zonder receiver wordt aangeroepen, is een aanroep op `this`. Een agent die één bestand tegelijk leest, ziet de namen maar niet waarnaar ze verwijzen.

Maguyva lost daar meer van op bij het indexeren, zodat een agent kan vragen wie een methode aanroept en een antwoord krijgt waarmee hij verder kan.

## Wat Maguyva in Scala extraheert

Maguyva dekt `.scala`- en `.sc`-bestanden. Klassen, objects en traits worden als types geëxtraheerd, en de preset `functions` in `structural_search` omvat `def`-declaraties, -definities en lambda's. Signaturen leggen herhaalde (`*`) parameters vast, en imports verliezen het prefix `_root_`.

Aanroeprelaties behouden klasse-gekwalificeerde namen, en een aanroep zonder receiver binnen een klasse wordt opgelost naar de eigen methode van die klasse. Receiver-typering volgt parameters, klasseparameters, `val`- en `var`-definities, getypeerde en case-class-patterns in `case`-clausules, de returntypes van methoden op klassen, objects en traits, type-aliassen en `extends`-clausules. `new` op een type met een hoofdletter telt als instantiatie.

Voor Scala is geen relatietype als niet van toepassing gemarkeerd, dus de graaf legt ook overerving, overrides, typereferenties, lees- en schrijfacties, control flow en exception-edges vast.

## Voorbeeldprompts voor agents

- "Wie roept `PaymentService.capture` aan, en vanuit welke routes?" (`find_symbol`, daarna `dependency_search` incoming)
- "Welke klassen en objects breiden `EventHandler` uit?" (`dependency_search`)
- "Volg hoe een order-event de grootboekschrijver bereikt." (`get_task_context`)

## Bekende beperkingen

- Ongeveer 320 namen uit de standaardbibliotheek worden uit de relaties gefilterd: collectie-operaties zoals `map`, `flatMap` en `foldLeft`, plus helpers uit `Option`, `Either`, `Try`, `Future` en `Predef`. Een aanroep op `this`, of op een waarde waarvan het type naar een van je eigen klassen wordt opgelost, blijft behouden, ook als de naam op die lijst staat. Gebruik `text_pattern_search` als een aanroeper nog steeds lijkt te ontbreken.
- Korte typeparameters zoals `A`, `F` en `CC`, en roottypes zoals `Any`, `Unit` en `Nothing`, worden uit de typereferenties gefilterd.

## Volgende stappen

Koppel een repository via de [snelstart](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Lees voor gemengde JVM-codebases ook de [Java-gids](/nl/languages/java) en de [Kotlin-gids](/nl/languages/kotlin).

## Enginedetails

- Scala-ondersteuning omvat `.scala` en `.sc`. Klassen, objects en traits zijn types, en aanroepen zonder receiver binnen een klasse worden opgelost naar de eigen methoden.
- Receiver-typering volgt parameters, klasseparameters, `val`- en `var`-definities, `case`-patterns, returntypes van methoden en `extends`-clausules.
- Aanroepen behouden klasse-gekwalificeerde namen, `new` telt als instantiatie, en ongeveer 320 namen uit de standaardbibliotheek worden uit de relaties gefilterd.

## Nuttige MCP-instappunten

- `find_symbol`: Gebruik het voor een trait, object of servicemethode wanneer je de definitie en referenties nodig hebt.
- `dependency_search`: Gebruik incoming-traversal op een trait of methode om implementaties en aanroepers te zien voor een signatuurwijziging.
- `get_task_context`: Gebruik het voor prompts als "volg hoe een order-event de grootboekschrijver bereikt."
