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

Canonical source: https://maguyva.ai/el/languages/groovy

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 υποστηρίζει τη Groovy με AST, σύμβολα και γράφο, ώστε οι πράκτορες AI να ακολουθούν κλάσεις, κλεισίματα και κλήσεις σε εφαρμογές Groovy, μεταγλωττίσεις του Gradle και αρχεία Jenkinsfile.

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

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

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

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

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

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

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

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

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

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

- Η υποστήριξη της 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 που φιλτράρονται από τον γράφο.
