Μετάβαση στο περιεχόμενο
cd /languages
  • Τυποποιημένη JVM
  • Προγραμματισμός
  • Υποστήριξη AST και συμβόλων

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

Το Maguyva υποστηρίζει τη Scala με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να ακολουθούν γνωρίσματα, αντικείμενα, κλάσεις case και τυποποιημένες κλήσεις σε κώδικα JVM και Spark.

Πού σκοντάφτουν τα επιφανειακά εργαλεία 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 φιλτράρονται από τις αναφορές τύπων.

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

Συνδέστε ένα αποθετήριο με τον γρήγορο οδηγό εκκίνησης και έπειτα δείτε τον πίνακα υποστήριξης στη σελίδα συμβατότητας. Για μικτές βάσεις κώδικα JVM, διαβάστε και τον οδηγό για τη Java και τον οδηγό για την Kotlin.

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

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

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

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

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

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

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

  • find_symbol

    Χρησιμοποιήστε το για ένα trait, αντικείμενο ή μέθοδο υπηρεσίας όταν χρειάζεστε τον ορισμό και τις αναφορές.

  • dependency_search

    Χρησιμοποιήστε εισερχόμενη διάσχιση σε ένα trait ή μέθοδο για να δείτε υλοποιήσεις και καλούντες πριν αλλάξετε μια υπογραφή.

  • get_task_context

    Χρησιμοποιήστε το για προτροπές όπως «ακολούθησε πώς ένα συμβάν παραγγελίας φτάνει στον εγγραφέα του καθολικού».