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

Groovy στο Maguyva: γράφοι κώδικα για Gradle και Jenkins

Το Maguyva υποστηρίζει τη Groovy με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να ακολουθούν κλάσεις, κλεισίματα και κλήσεις σε εφαρμογές Groovy, μεταγλωττίσεις του Gradle και αρχεία Jenkinsfile.

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

Η Groovy συχνά διαβάζεται σαν ρύθμιση. Σε ένα build του Gradle, το dependencies { implementation ... } είναι αλυσίδα κλήσεων μεθόδων με κλεισίματα, και το ίδιο ισχύει για ένα δηλωτικό Jenkinsfile. Οι δομητές μετατρέπουν αυθαίρετα ονόματα σε κλήσεις, και το GDK προσθέτει μεθόδους όπως each και collect σε κάθε αντικείμενο. Ένα εργαλείο που καταγράφει κάθε κλήση πνίγεται σε αυτόν τον θόρυβο.

Το Maguyva φιλτράρει το επίπεδο DSL και GDK, ώστε να ξεχωρίζουν οι δικές σας μέθοδοι και κλάσεις.

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

Το Maguyva καλύπτει αρχεία .groovy και .gradle καθώς και το Jenkinsfile. Εξάγονται κλάσεις, συναρτήσεις και μέθοδοι, και οι εισαγωγές κανονικοποιούν τα ψευδώνυμα import static και as. Τα τελικά μπλοκ κλεισίματος και ο τελεστής ασφαλούς πλοήγησης ?. αφαιρούνται από τα ονόματα κλήσεων, οπότε το repo?.save(order) { ... } καταγράφεται ως κλήση του save. Μια κλήση χωρίς δέκτη μέσα σε κλάση επιλύεται στη δική της μέθοδο της κλάσης.

Ο θόρυβος φιλτράρεται σε στρώσεις:

  • Περίπου 140 ονόματα της τυπικής βιβλιοθήκης, του Gradle και του Spock, όπως dependencies, implementation, task, given, when, then και Mock.
  • Περίπου 260 μέθοδοι του GDK, όπως each, collect, inject και eachLine.
  • Ονόματα DSL των δομητών, μεταξύ τους βήματα του Jenkins όπως pipeline, stage, steps και sh, όταν χρησιμοποιούνται σε στυλ δομητή αντί να καλούνται με παρενθέσεις.
  • Επισημειώσεις μετασχηματισμού AST και πλαισίων όπως @CompileStatic, @Immutable και @Autowired, που δεν καταγράφονται ποτέ ως κλήσεις.

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

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

  • «Ποιος καλεί το deployToStaging και από ποια pipeline;» (find_symbol, μετά dependency_search με εισερχόμενη κατεύθυνση)
  • «Ποιες κλάσεις κληρονομούν από το BaseIntegrationSpec;» (dependency_search)
  • «Εξήγησε πώς η εργασία έκδοσης χτίζει και δημοσιεύει τα παραδοτέα.» (get_task_context)

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

  • Οι μέθοδοι της Groovy και οι ελεύθερες συναρτήσεις μοιράζονται τον ίδιο συντακτικό κόμβο, οπότε η προεπιλογή methods στο structural_search δεν επιλέγει τίποτα. Χρησιμοποιήστε αντί αυτής την προεπιλογή functions ή το find_symbol.
  • Μια δική σας μέθοδος με το ίδιο όνομα με μέθοδο του GDK ή του DSL, όπως collect ή stage, μπορεί να φιλτραριστεί μαζί τους. Αν φαίνεται να λείπει ένας καλών, χρησιμοποιήστε το text_pattern_search.

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

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

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

  • > Μεταγλωττίσεις του Gradle γραμμένες σε Groovy, με κοινή λογική build διασκορπισμένη σε πολλά αρχεία `.gradle`.
  • > Pipeline του Jenkins και κοινόχρηστες βιβλιοθήκες που οι πράκτορες πρέπει να διαβάσουν πριν αλλάξουν το CI.
  • > Εφαρμογές Groovy στη JVM και σουίτες δοκιμών Spock.

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

  • > Εύρεση όλων των καλούντων ενός βήματος κοινόχρηστης βιβλιοθήκης πριν αλλάξουν τα ορίσματά του.
  • > Ανίχνευση των σεναρίων build που καλούν μια βοηθητική συνάρτηση ορισμένη σε κοινό αρχείο `.gradle`.
  • > Χαρτογράφηση των κλάσεων που κληρονομούν από μια βασική κλάση πριν από αναδιαμόρφωση.

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

  • > Η υποστήριξη της Groovy καλύπτει αρχεία `.groovy`, `.gradle` και `Jenkinsfile`. Τα μπλοκ κλεισίματος και η ασφαλής πλοήγηση `?.` αφαιρούνται από τα ονόματα κλήσεων.
  • > Περίπου 140 ονόματα της τυπικής βιβλιοθήκης, του Gradle και του Spock και περίπου 260 μέθοδοι του GDK φιλτράρονται από τις σχέσεις.
  • > Τα ονόματα DSL των δομητών, μεταξύ τους βήματα του Jenkins όπως `stage` και `sh`, φιλτράρονται όταν χρησιμοποιούνται σε στυλ δομητή· οι επισημειώσεις δεν καταγράφονται ποτέ ως κλήσεις.

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

  • find_symbol

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

  • dependency_search

    Χρησιμοποιήστε εισερχόμενη διάσχιση για να δείτε ποια σενάρια και pipeline καλούν μια βοηθητική συνάρτηση build.

  • text_pattern_search

    Χρησιμοποιήστε το για κλήσεις DSL και μεθόδους GDK που φιλτράρονται από τον γράφο.