# Scala i Maguyva: kodegrafer til JVM-services og Spark

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

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .sc, .scala
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- JVM-services skrevet i Scala, hvor traits, companion objects og case classes spreder ét begreb over mange filer.
- Spark- og data engineering-jobs, som agenter skal læse sammen med de delte biblioteker, de kalder.
- Blandede Scala- og Java-repositories, som agenter skal søge i som én kodebase.

## Agent-arbejdsgange

- Finde alle kaldere af en servicemetode, før dens signatur ændres.
- Liste hvilke klasser og objects der udvider en trait, før et abstrakt medlem tilføjes.
- Spore hvordan en forespørgsel går fra en HTTP-route via services til datalaget.

## Hvor Scala får overfladiske AI-værktøjer til at snuble

I Scala bærer ét navn meget. En trait, dens companion object og en case class kan dele ét begreb. Mønstermatchning binder nye navne inde i `case`-led, og en metode, der kaldes uden modtager inde i en klasse, er et kald på `this`. En agent, der læser én fil ad gangen, ser navnene, men ikke hvad de peger på.

Maguyva løser mere af det allerede ved indeksering, så en agent kan spørge, hvem der kalder en metode, og få et svar, den kan handle på.

## Hvad Maguyva udtrækker i Scala

Maguyva dækker `.scala`- og `.sc`-filer. Klasser, objects og traits udtrækkes som typer, og presettet `functions` i `structural_search` dækker `def`-deklarationer, -definitioner og lambdaer. Signaturer registrerer gentagne (`*`) parametre, og imports mister præfikset `_root_`.

Kaldrelationer beholder klassekvalificerede navne, og et kald uden modtager inde i en klasse slås op til klassens egen metode. Modtagertypningen følger parametre, klasseparametre, `val`- og `var`-definitioner, typede mønstre og case class-mønstre i `case`-led, returtyper for metoder på klasser, objects og traits, typealiaser og `extends`-led. `new` på en type med stort begyndelsesbogstav tæller som instansiering.

For Scala er ingen relationstype markeret som ikke relevant, så grafen registrerer også nedarvning, overrides, typereferencer, læsninger og skrivninger, kontrolflow og undtagelseskanter.

## Eksempler på prompts til agenter

- "Hvem kalder `PaymentService.capture`, og fra hvilke routes?" (`find_symbol`, derefter `dependency_search` incoming)
- "Hvilke klasser og objects udvider `EventHandler`?" (`dependency_search`)
- "Spor hvordan en ordrehændelse når hovedbogsskriveren." (`get_task_context`)

## Kendte begrænsninger

- Omkring 320 navne fra standardbiblioteket filtreres fra relationerne: samlingsoperationer som `map`, `flatMap` og `foldLeft` plus hjælpere fra `Option`, `Either`, `Try`, `Future` og `Predef`. Et kald på `this`, eller på en værdi, hvis type slås op til en af dine klasser, beholdes, også selvom navnet står på listen. Brug `text_pattern_search`, hvis en kalder stadig ser ud til at mangle.
- Korte typeparametre som `A`, `F` og `CC` og roottyper som `Any`, `Unit` og `Nothing` filtreres fra typereferencerne.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). For blandede JVM-kodebaser kan du også læse [guiden til Java](/da/languages/java) og [guiden til Kotlin](/da/languages/kotlin).

## Motordetaljer

- Scala-understøttelsen dækker `.scala` og `.sc`. Klasser, objects og traits er typer, og kald uden modtager inde i en klasse slås op til dens egne metoder.
- Modtagertypningen følger parametre, klasseparametre, `val`- og `var`-definitioner, `case`-mønstre, metoders returtyper og `extends`-led.
- Kald beholder klassekvalificerede navne, `new` tæller som instansiering, og omkring 320 navne fra standardbiblioteket filtreres fra relationerne.

## Nyttige MCP-indgange

- `find_symbol`: Brug det til en trait, et object eller en servicemetode, når du har brug for definitionen og referencerne.
- `dependency_search`: Brug incoming-traversering på en trait eller metode for at se implementeringer og kaldere før en signaturændring.
- `get_task_context`: Brug det til prompts som "spor hvordan en ordrehændelse når hovedbogsskriveren".
