# Scala i Maguyva: kodegrafer for JVM-tjenester og Spark

Canonical source: https://maguyva.ai/nb/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øtter Scala med AST, symboler og graf, slik at AI-agenter kan følge traits, objects, case classes og typede kall i JVM- og Spark-kode.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Programmering
- Filendelser: .sc, .scala
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## Best egnet

- JVM-tjenester skrevet i Scala, der traits, companion objects og case classes sprer ett begrep over mange filer.
- Spark- og data engineering-jobber som agenter må lese sammen med de delte bibliotekene de kaller.
- Blandede Scala- og Java-repositorier som agenter må søke i som én kodebase.

## Agent-arbeidsflyter

- Finne alle kallere av en tjenestemetode før signaturen endres.
- Liste hvilke klasser og objects som utvider en trait før et abstrakt medlem legges til.
- Spore hvordan en forespørsel går fra en HTTP-rute via tjenester til datalaget.

## Der Scala får overfladiske AI-verktøy til å snuble

I Scala bærer ett navn mye. En trait, dens companion object og en case class kan dele ett begrep. Mønstergjenkjenning binder nye navn inne i `case`-ledd, og en metode som kalles uten mottaker inne i en klasse, er et kall på `this`. En agent som leser én fil om gangen, ser navnene, men ikke hva de peker på.

Maguyva løser opp mer av dette allerede ved indeksering, slik at en agent kan spørre hvem som kaller en metode og få et svar den kan handle på.

## Hva Maguyva henter ut i Scala

Maguyva dekker `.scala`- og `.sc`-filer. Klasser, objects og traits hentes ut som typer, og presetet `functions` i `structural_search` dekker `def`-deklarasjoner, -definisjoner og lambdaer. Signaturer registrerer gjentatte (`*`) parametere, og importer mister prefikset `_root_`.

Kallrelasjoner beholder klassekvalifiserte navn, og et kall uten mottaker inne i en klasse slås opp til klassens egen metode. Mottakertypingen følger parametere, klasseparametere, `val`- og `var`-definisjoner, typede mønstre og case class-mønstre i `case`-ledd, returtyper for metoder på klasser, objects og traits, typealiaser og `extends`-ledd. `new` på en type med stor forbokstav teller som instansiering.

For Scala er ingen relasjonstype merket som ikke relevant, så grafen registrerer også arv, overrides, typereferanser, lesinger og skrivinger, kontrollflyt og unntakskanter.

## Eksempler på prompter for agenter

- «Hvem kaller `PaymentService.capture`, og fra hvilke ruter?» (`find_symbol`, deretter `dependency_search` incoming)
- «Hvilke klasser og objects utvider `EventHandler`?» (`dependency_search`)
- «Spor hvordan en ordrehendelse når hovedbokskriveren.» (`get_task_context`)

## Kjente begrensninger

- Rundt 320 navn fra standardbiblioteket filtreres bort fra relasjonene: samlingsoperasjoner som `map`, `flatMap` og `foldLeft`, pluss hjelpere fra `Option`, `Either`, `Try`, `Future` og `Predef`. Et kall på `this`, eller på en verdi med en type som slås opp til en av dine klasser, beholdes selv om navnet står på listen. Bruk `text_pattern_search` hvis en kaller fortsatt ser ut til å mangle.
- Korte typeparametere som `A`, `F` og `CC`, og rottyper som `Any`, `Unit` og `Nothing`, filtreres bort fra typereferansene.

## Neste steg

Koble til et repositorium med [hurtigstarten](/nb/docs/quickstart), og se deretter støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). For blandede JVM-kodebaser bør du også lese [veiledningen for Java](/nb/languages/java) og [veiledningen for Kotlin](/nb/languages/kotlin).

## Motordetaljer

- Scala-støtten dekker `.scala` og `.sc`. Klasser, objects og traits er typer, og kall uten mottaker inne i en klasse slås opp til klassens egne metoder.
- Mottakertypingen følger parametere, klasseparametere, `val`- og `var`-definisjoner, `case`-mønstre, metoders returtyper og `extends`-ledd.
- Kall beholder klassekvalifiserte navn, `new` teller som instansiering, og rundt 320 navn fra standardbiblioteket filtreres bort fra relasjonene.

## Nyttige MCP-inngangspunkter

- `find_symbol`: Bruk det for en trait, et object eller en tjenestemetode når du trenger definisjonen og referansene.
- `dependency_search`: Bruk incoming-traversering på en trait eller metode for å se implementasjoner og kallere før en signaturendring.
- `get_task_context`: Bruk det for prompter som «spor hvordan en ordrehendelse når hovedbokskriveren».
