# Scala στο Maguyva: γράφοι κώδικα για υπηρεσίες JVM και Spark

Canonical source: https://maguyva.ai/el/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 υποστηρίζει τη Scala με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να ακολουθούν γνωρίσματα, αντικείμενα, κλάσεις case και τυποποιημένες κλήσεις σε κώδικα JVM και Spark.

## Στιγμιότυπο υποστήριξης

- Επίπεδο: Υποστήριξη AST και συμβόλων
- Προγραμματισμός
- Επεκτάσεις: .sc, .scala
- Πραγματική ανάλυση AST για αναζήτηση με επίγνωση σύνταξης και δομικό πλαίσιο.
- Τα επώνυμα σύμβολα τροφοδοτούν τη σημασιολογική αναζήτηση και τη διασταύρωση αναφορών. Η πλοήγηση στον γράφο είναι διαθέσιμη όταν είναι ενεργοποιημένη η εξαγωγή σχέσεων.
- Αυτή η γλώσσα συνεισφέρει σύμβολα και σχέσεις στην αναζήτηση με επίγνωση του γράφου· οι υποστηριζόμενοι τύποι ακμών διαφέρουν ανάλογα με τις εγγενείς δομές της.
- Διατίθενται τόσο ανάλυση AST όσο και εξαγωγή συμβόλων.

## Ιδανική χρήση

- Υπηρεσίες JVM γραμμένες σε Scala, όπου γνωρίσματα, συνοδευτικά αντικείμενα και κλάσεις case απλώνουν μια έννοια σε πολλά αρχεία.
- Εργασίες Spark και μηχανικής δεδομένων που οι πράκτορες πρέπει να διαβάζουν μαζί με τις κοινόχρηστες βιβλιοθήκες που καλούν.
- Μικτά αποθετήρια Scala και Java που οι πράκτορες πρέπει να αναζητούν ως μία βάση κώδικα.

## Ροές εργασίας πρακτόρων

- Εύρεση όλων των καλούντων μιας μεθόδου υπηρεσίας πριν αλλάξει η υπογραφή της.
- Καταγραφή των κλάσεων και αντικειμένων που επεκτείνουν ένα trait πριν προστεθεί αφηρημένο μέλος.
- Ανίχνευση του πώς ένα αίτημα κινείται από μια διαδρομή HTTP μέσω των υπηρεσιών έως το επίπεδο δεδομένων.

## Πού σκοντάφτουν τα επιφανειακά εργαλεία AI στη Scala

Στη Scala ένα όνομα κουβαλά πολλά. Ένα trait, το συνοδευτικό του αντικείμενο και μια κλάση case μπορούν να μοιράζονται την ίδια έννοια. Η αντιστοίχιση προτύπων δεσμεύει νέα ονόματα μέσα σε όρους `case`, και μια μέθοδος που καλείται χωρίς δέκτη μέσα σε κλάση είναι στην πραγματικότητα κλήση στο `this`. Ένας πράκτορας που διαβάζει τα αρχεία ένα-ένα βλέπει τα ονόματα, αλλά όχι σε τι επιλύονται.

Το Maguyva επιλύει περισσότερα κατά την ευρετηρίαση, ώστε όταν ο πράκτορας ρωτά ποιος καλεί μια μέθοδο, να παίρνει απάντηση πάνω στην οποία μπορεί να ενεργήσει.

## Τι εξάγει το Maguyva από τη Scala

Το Maguyva καλύπτει αρχεία `.scala` και `.sc`. Οι κλάσεις, τα αντικείμενα και τα γνωρίσματα εξάγονται ως τύποι, και η προεπιλογή `functions` στο `structural_search` καλύπτει δηλώσεις και ορισμούς `def` και lambda. Οι υπογραφές καταγράφουν επαναλαμβανόμενες (`*`) παραμέτρους, και το πρόθεμα `_root_` αφαιρείται από τις εισαγωγές.

Οι σχέσεις κλήσεων διατηρούν ονόματα προσδιορισμένα με την κλάση, και μια κλήση χωρίς δέκτη μέσα σε κλάση επιλύεται στη δική της μέθοδο της κλάσης. Η τυποποίηση δέκτη παρακολουθεί παραμέτρους, παραμέτρους κλάσης, ορισμούς `val` και `var`, τυποποιημένα πρότυπα και πρότυπα κλάσεων case σε όρους `case`, τύπους επιστροφής μεθόδων κλάσεων, αντικειμένων και γνωρισμάτων, ψευδώνυμα τύπων και όρους `extends`. Το `new` σε τύπο με κεφαλαίο αρχικό μετρά ως δημιουργία στιγμιοτύπου.

Κανένας τύπος σχέσης δεν σημειώνεται ως μη εφαρμόσιμος για τη Scala, οπότε ο γράφος καταγράφει επίσης κληρονομικότητα, παρακάμψεις, αναφορές τύπων, αναγνώσεις και εγγραφές, ροή ελέγχου και ακμές εξαιρέσεων.

## Παραδείγματα προτροπών για πράκτορες

- «Ποιος καλεί το `PaymentService.capture` και από ποιες διαδρομές;» (`find_symbol`, μετά `dependency_search` με εισερχόμενη κατεύθυνση)
- «Ποιες κλάσεις και ποια αντικείμενα επεκτείνουν το `EventHandler`;» (`dependency_search`)
- «Ακολούθησε πώς ένα συμβάν παραγγελίας φτάνει στον εγγραφέα του καθολικού.» (`get_task_context`)

## Γνωστοί περιορισμοί

- Περίπου 320 ονόματα της τυπικής βιβλιοθήκης φιλτράρονται από τις σχέσεις: πράξεις συλλογών όπως `map`, `flatMap` και `foldLeft`, και τα βοηθητικά `Option`, `Either`, `Try`, `Future` και `Predef`. Μια κλήση στο `this`, ή σε τιμή της οποίας ο τύπος επιλύεται σε μία από τις κλάσεις σας, διατηρείται ακόμη κι αν το όνομα υπάρχει σε αυτή τη λίστα. Αν ένας καλών εξακολουθεί να φαίνεται ότι λείπει, χρησιμοποιήστε το `text_pattern_search`.
- Σύντομες παράμετροι τύπου όπως `A`, `F` και `CC` και ριζικοί τύποι όπως `Any`, `Unit` και `Nothing` φιλτράρονται από τις αναφορές τύπων.

## Επόμενα βήματα

Συνδέστε ένα αποθετήριο με τον [γρήγορο οδηγό εκκίνησης](/el/docs/quickstart) και έπειτα δείτε τον πίνακα υποστήριξης στη [σελίδα συμβατότητας](/el/docs/compatibility). Για μικτές βάσεις κώδικα JVM, διαβάστε και τον [οδηγό για τη Java](/el/languages/java) και τον [οδηγό για την Kotlin](/el/languages/kotlin).

## Λεπτομέρειες μηχανής

- Η υποστήριξη της Scala καλύπτει αρχεία `.scala` και `.sc`. Οι κλάσεις, τα αντικείμενα και τα γνωρίσματα είναι τύποι· οι κλήσεις χωρίς δέκτη μέσα σε κλάση επιλύονται στις δικές της μεθόδους.
- Η τυποποίηση δέκτη παρακολουθεί παραμέτρους, παραμέτρους κλάσης, ορισμούς `val` και `var`, πρότυπα `case`, τύπους επιστροφής μεθόδων και όρους `extends`.
- Οι κλήσεις διατηρούν ονόματα προσδιορισμένα με την κλάση, το `new` μετρά ως δημιουργία στιγμιοτύπου, και περίπου 320 ονόματα της τυπικής βιβλιοθήκης φιλτράρονται από τις σχέσεις.

## Χρήσιμα σημεία εισόδου MCP

- `find_symbol`: Χρησιμοποιήστε το για ένα trait, αντικείμενο ή μέθοδο υπηρεσίας όταν χρειάζεστε τον ορισμό και τις αναφορές.
- `dependency_search`: Χρησιμοποιήστε εισερχόμενη διάσχιση σε ένα trait ή μέθοδο για να δείτε υλοποιήσεις και καλούντες πριν αλλάξετε μια υπογραφή.
- `get_task_context`: Χρησιμοποιήστε το για προτροπές όπως «ακολούθησε πώς ένα συμβάν παραγγελίας φτάνει στον εγγραφέα του καθολικού».
