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

Swift στο Maguyva: γράφοι κώδικα για iOS και macOS

Το Maguyva υποστηρίζει Swift με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να παρακολουθούν πρωτόκολλα, επεκτάσεις, αρχικοποιητές και παρατηρητές σε κώδικα iOS και macOS.

Γιατί η Swift χρειάζεται κάτι περισσότερο από αναζήτηση σε αρχεία

Η Swift απλώνει έναν τύπο σε πολλά σημεία. Ένα struct δηλώνεται σε ένα αρχείο, παίρνει συμπεριφορά από επεκτάσεις σε τρία άλλα και συμμορφώνεται σε πρωτόκολλα που ορίζονται σε ένα πακέτο. Οι αλλαγές κατάστασης κρύβονται σε υπολογιζόμενες ιδιότητες και σε παρατηρητές willSet / didSet. Ένας πράκτορας που διαβάζει ένα αρχείο τη φορά χάνει τα περισσότερα από αυτά.

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

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

Το Maguyva καλύπτει .swift. Τα καλέσιμα σύμβολα περιλαμβάνουν συναρτήσεις, init και deinit, subscripts, getters και setters υπολογιζόμενων ιδιοτήτων, καθώς και παρατηρητές willSet / didSet, ώστε ο κώδικας που αλλάζει κατάσταση να αναζητείται ως σύμβολο και όχι να χάνεται μέσα στα σώματα των ιδιοτήτων.

Τα μέλη που δηλώνονται σε structs, enums, πρωτόκολλα και επεκτάσεις προσδιορίζονται από τον τύπο-κάτοχό τους (για παράδειγμα CartStore.add), και τα μέλη που προστίθενται σε μια επέκταση αποδίδονται στον τύπο που επεκτείνεται. Από τα ονόματα ορισμών αφαιρούνται οι γενικές παράμετροι, οι λίστες συμμόρφωσης σε πρωτόκολλα και οι κατάληξεις ? / !, οπότε οι αναζητήσεις χρησιμοποιούν το απλό όνομα. Οι κλήσεις διατηρούν το self. και τον προσδιορισμό κλάσης, και τα τελικά κλεισίματα μετρούν στον αριθμό ορισμάτων της κλήσης.

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

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

  • «Ποιοι τύποι συμμορφώνονται στο PaymentProvider και πού δημιουργείται ο καθένας;» (dependency_search)
  • «Ποιος καλεί το CartStore.add και από ποιες προβολές;» (find_symbol, μετά dependency_search incoming)
  • «Εξήγησε πώς μια ειδοποίηση ώθησης φτάνει στην οθόνη των εισερχομένων.» (get_task_context)

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

  • Αντιστοιχίζεται μόνο πηγαίος κώδικας .swift. Τα αρχεία Storyboard και XIB δεν περιλαμβάνονται στη λίστα επεκτάσεων, οπότε οι συνδέσεις του Interface Builder μένουν εκτός γράφου.
  • Οι κλήσεις της τυπικής βιβλιοθήκης και του Foundation, όπως print, debugPrint, NSLog και ισχυρισμοί, φιλτράρονται από τις σχέσεις, οπότε δεν είναι ακμές του γράφου. Για αυτές χρησιμοποιήστε το text_pattern_search.

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

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

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

  • > Ομάδες iOS και macOS με μεγάλα targets εφαρμογών και κοινόχρηστα πακέτα Swift.
  • > Βάσεις κώδικα χτισμένες γύρω από πρωτόκολλα και επεκτάσεις, όπου η συμπεριφορά ενός τύπου είναι σκορπισμένη σε πολλά αρχεία.
  • > Ροές εργασίας πρακτόρων που χρειάζονται ανάλυση επιπτώσεων πριν αλλάξει ένα κοινόχρηστο μοντέλο, μια υπηρεσία ή ένα πρωτόκολλο.

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

  • > Εύρεση κάθε τύπου που συμμορφώνεται σε ένα πρωτόκολλο πριν αλλάξει κάποια από τις απαιτήσεις του.
  • > Εντοπισμός όσων καλούν μια μέθοδο υπηρεσίας σε ViewModels, συντονιστές και πακέτα.
  • > Εύρεση των αρχικοποιητών, των υπολογιζόμενων ιδιοτήτων και των παρατηρητών `didSet` που αγγίζουν μια κατάσταση.

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

  • > Τα καλέσιμα σύμβολα περιλαμβάνουν συναρτήσεις, `init`, `deinit`, subscripts, getters και setters υπολογιζόμενων ιδιοτήτων και παρατηρητών `willSet` / `didSet`.
  • > Τα μέλη των structs, των enums, των πρωτοκόλλων και των επεκτάσεων προσδιορίζονται από τον τύπο-κάτοχό τους, όπως το `CartStore.add`.
  • > Από τα ονόματα ορισμών αφαιρούνται οι γενικές παράμετροι, οι λίστες συμμόρφωσης σε πρωτόκολλα και οι καταλήξεις `?` / `!`, ενώ οι κλήσεις διατηρούν το `self.` και τον προσδιορισμό κλάσης.

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

  • find_symbol

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

  • dependency_search

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

  • get_task_context

    Χρησιμοποιήστε το για προτροπές όπως «εξήγησε πώς μια ειδοποίηση ώθησης φτάνει στην οθόνη των εισερχομένων».