# Scala i Maguyva: kodgrafer för JVM-tjänster och Spark

Canonical source: https://maguyva.ai/sv/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 stöder Scala med AST, symboler och graf, så att AI-agenter kan följa traits, objects, case classes och typade anrop i JVM- och Spark-kod.

## Stödöversikt

- Nivå: Stöd för AST och symboler
- Programmering
- Filändelser: .sc, .scala
- Riktig AST-parsning för syntaxmedveten sökning och strukturell kontext.
- Namngivna symboler driver semantisk uppslagning och korsreferenser. Grafnavigering är tillgänglig när relationsextraktion är aktiverad.
- Det här språket bidrar med symboler och relationer till grafmedveten sökning; vilka kanttyper som stöds varierar med språkets inbyggda konstruktioner.
- Både AST-parsning och symbolextraktion är tillgängliga.

## Bäst lämpad för

- JVM-tjänster skrivna i Scala, där traits, companion objects och case classes sprider ett begrepp över många filer.
- Spark- och data engineering-jobb som agenter måste läsa tillsammans med de delade bibliotek de anropar.
- Blandade Scala- och Java-repon som agenter behöver söka i som en enda kodbas.

## Agentarbetsflöden

- Hitta alla anropare av en tjänstemetod innan dess signatur ändras.
- Lista vilka klasser och objects som utökar en trait innan en abstrakt medlem läggs till.
- Spåra hur en förfrågan går från en HTTP-route via tjänster till datalagret.

## Där Scala får ytliga AI-verktyg att snubbla

I Scala bär ett namn mycket. En trait, dess companion object och en case class kan dela ett begrepp. Mönstermatchning binder nya namn i `case`-satser, och en metod som anropas utan mottagare inne i en klass är ett anrop på `this`. En agent som läser en fil i taget ser namnen men inte vad de pekar på.

Maguyva löser upp mer av det redan vid indexeringen, så att en agent kan fråga vem som anropar en metod och få ett svar den kan agera på.

## Vad Maguyva extraherar i Scala

Maguyva täcker `.scala`- och `.sc`-filer. Klasser, objects och traits extraheras som typer, och presetet `functions` i `structural_search` omfattar `def`-deklarationer, -definitioner och lambdor. Signaturer registrerar upprepade (`*`) parametrar, och importer tappar prefixet `_root_`.

Anropsrelationer behåller klasskvalificerade namn, och ett anrop utan mottagare inne i en klass slås upp till klassens egen metod. Mottagartypningen följer parametrar, klassparametrar, `val`- och `var`-definitioner, typade mönster och case class-mönster i `case`-satser, returtyper för metoder på klasser, objects och traits, typalias samt `extends`-satser. `new` på en typ med stor begynnelsebokstav räknas som instansiering.

För Scala är ingen relationstyp markerad som ej tillämplig, så grafen registrerar också arv, overrides, typreferenser, läsningar och skrivningar, kontrollflöde och undantagskanter.

## Exempel på prompter för agenter

- "Vem anropar `PaymentService.capture`, och från vilka routes?" (`find_symbol`, sedan `dependency_search` incoming)
- "Vilka klasser och objects utökar `EventHandler`?" (`dependency_search`)
- "Spåra hur en orderhändelse når huvudboksskrivaren." (`get_task_context`)

## Kända begränsningar

- Omkring 320 namn från standardbiblioteket filtreras bort från relationerna: samlingsoperationer som `map`, `flatMap` och `foldLeft`, plus hjälpare från `Option`, `Either`, `Try`, `Future` och `Predef`. Ett anrop på `this`, eller på ett värde vars typ slås upp till en av dina klasser, behålls även om namnet finns på listan. Använd `text_pattern_search` om en anropare fortfarande verkar saknas.
- Korta typparametrar som `A`, `F` och `CC`, och rottyper som `Any`, `Unit` och `Nothing`, filtreras bort från typreferenserna.

## Nästa steg

Anslut ett repo med [snabbstarten](/sv/docs/quickstart) och kontrollera sedan stödmatrisen på [kompatibilitetssidan](/sv/docs/compatibility). För blandade JVM-kodbaser, läs även [guiden för Java](/sv/languages/java) och [guiden för Kotlin](/sv/languages/kotlin).

## Motordetaljer

- Scala-stödet omfattar `.scala` och `.sc`. Klasser, objects och traits är typer, och anrop utan mottagare inne i en klass slås upp till dess egna metoder.
- Mottagartypningen följer parametrar, klassparametrar, `val`- och `var`-definitioner, `case`-mönster, metoders returtyper och `extends`-satser.
- Anrop behåller klasskvalificerade namn, `new` räknas som instansiering, och omkring 320 namn från standardbiblioteket filtreras bort från relationerna.

## Användbara MCP-ingångar

- `find_symbol`: Använd det för en trait, ett object eller en tjänstemetod när du behöver definitionen och referenserna.
- `dependency_search`: Använd incoming-traversering på en trait eller metod för att se implementationer och anropare inför en signaturändring.
- `get_task_context`: Använd det för prompter som "spåra hur en orderhändelse når huvudboksskrivaren".
