# Scala v Maguyva: grafy kódu pro služby JVM a Spark

Canonical source: https://maguyva.ai/cs/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 podporuje Scalu s AST, symboly a grafem, takže AI agenti sledují traity, objekty, case třídy a typovaná volání v kódu JVM a Spark.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Programování
- Přípony: .sc, .scala
- Skutečné parsování AST pro vyhledávání citlivé na syntaxi a strukturální kontext.
- Pojmenované symboly napájejí sémantické vyhledávání a křížové odkazy. Navigace v grafu je k dispozici, když je povolena extrakce vztahů.
- Tento jazyk přispívá symboly a vztahy do vyhledávání využívajícího graf; podporované typy hran se liší podle jeho nativních konstrukcí.
- K dispozici je parsování AST i extrakce symbolů.

## Nejlépe se hodí pro

- Služby JVM psané ve Scale, kde traity, doprovodné objekty a case třídy rozkládají jeden pojem do mnoha souborů.
- Úlohy Spark a datového inženýrství, které musí agenti číst spolu se sdílenými knihovnami, které volají.
- Smíšené repozitáře Scaly a Javy, které musí agenti prohledávat jako jednu kódovou základnu.

## Workflow agentů

- Najít všechna volání metody služby před změnou její signatury.
- Vypsat třídy a objekty, které rozšiřují trait, než do něj přibude abstraktní člen.
- Vysledovat, jak požadavek prochází od HTTP routy přes služby do datové vrstvy.

## Kde Scala podráží povrchní AI nástroje

Ve Scale nese jedno jméno hodně. Trait, jeho doprovodný objekt a case třída mohou sdílet jeden pojem. Pattern matching váže nová jména uvnitř klauzulí `case` a metoda volaná bez příjemce uvnitř třídy je voláním na `this`. Agent, který čte jeden soubor po druhém, vidí jména, ale ne to, na co se rozlišují.

Maguyva z toho rozliší víc už při indexaci, takže se agent může zeptat, kdo volá metodu, a dostane odpověď, podle které může jednat.

## Co Maguyva ve Scale extrahuje

Maguyva pokrývá soubory `.scala` a `.sc`. Třídy, objekty a traity se extrahují jako typy a preset `functions` v `structural_search` pokrývá deklarace a definice `def` i lambdy. Signatury zaznamenávají opakované (`*`) parametry a importy ztrácejí prefix `_root_`.

Relace volání zachovávají jména kvalifikovaná třídou a volání bez příjemce uvnitř třídy se rozliší na vlastní metodu této třídy. Typování příjemců sleduje parametry, parametry třídy, definice `val` a `var`, typované vzory a vzory case tříd v klauzulích `case`, návratové typy metod tříd, objektů a traitů, typové aliasy a klauzule `extends`. `new` na typu s velkým počátečním písmenem se počítá jako vytvoření instance.

Pro Scalu není žádný typ relace označen jako nepoužitelný, takže graf zaznamenává také dědičnost, přepisy, odkazy na typy, čtení a zápisy, tok řízení a hrany výjimek.

## Ukázkové prompty pro agenty

- „Kdo volá `PaymentService.capture` a z kterých rout?“ (`find_symbol`, pak `dependency_search` incoming)
- „Které třídy a objekty rozšiřují `EventHandler`?“ (`dependency_search`)
- „Vysleduj, jak se událost objednávky dostane k zápisu do hlavní knihy.“ (`get_task_context`)

## Známá omezení

- Asi 320 názvů ze standardní knihovny se z relací odfiltruje: operace nad kolekcemi jako `map`, `flatMap` a `foldLeft` a pomocné funkce z `Option`, `Either`, `Try`, `Future` a `Predef`. Volání na `this` nebo na hodnotě, jejíž typ se rozliší na některou z vašich tříd, se zachová, i když je jeho jméno na tomto seznamu. Pokud stále chybí nějaké volání, použijte `text_pattern_search`.
- Krátké typové parametry jako `A`, `F` a `CC` a kořenové typy jako `Any`, `Unit` a `Nothing` se z odkazů na typy odfiltrují.

## Další kroky

Připojte repozitář podle [rychlého startu](/cs/docs/quickstart) a pak si prohlédněte matici podpory na [stránce kompatibility](/cs/docs/compatibility). U smíšených kódových základen JVM si přečtěte i [průvodce jazykem Java](/cs/languages/java) a [průvodce jazykem Kotlin](/cs/languages/kotlin).

## Podrobnosti enginu

- Podpora Scaly pokrývá `.scala` a `.sc`. Třídy, objekty a traity jsou typy a volání bez příjemce uvnitř třídy se rozliší na její vlastní metody.
- Typování příjemců sleduje parametry, parametry třídy, definice `val` a `var`, vzory `case`, návratové typy metod a klauzule `extends`.
- Volání zachovávají jména kvalifikovaná třídou, `new` se počítá jako vytvoření instance a asi 320 názvů ze standardní knihovny se z relací odfiltruje.

## Užitečné vstupní body MCP

- `find_symbol`: Použijte ho pro trait, objekt nebo metodu služby, když potřebujete definici a odkazy.
- `dependency_search`: Použijte incoming procházení na traitu nebo metodě, abyste před změnou signatury viděli implementace a volající.
- `get_task_context`: Použijte ho pro prompty jako „vysleduj, jak se událost objednávky dostane k zápisu do hlavní knihy“.
