# Maguyva में Groovy: Gradle और Jenkins कोड के लिए कोड ग्राफ़

Canonical source: https://maguyva.ai/hi/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 पार्सिंग और सिंबल एक्सट्रैक्शन, दोनों उपलब्ध हैं।

## सबसे उपयुक्त

- Groovy में लिखे Gradle बिल्ड, जिनका साझा बिल्ड लॉजिक कई `.gradle` फ़ाइलों में बिखरा है।
- Jenkins पाइपलाइन और साझा लाइब्रेरी, जिन्हें CI बदलने से पहले एजेंट को पढ़ना होता है।
- JVM पर चलने वाले Groovy ऐप्लिकेशन और Spock टेस्ट सूट।

## एजेंट वर्कफ़्लो

- किसी साझा लाइब्रेरी स्टेप के आर्ग्युमेंट बदलने से पहले उसके सभी कॉलर ढूँढना।
- ट्रेस करना कि कौन-सी बिल्ड स्क्रिप्ट किसी साझा `.gradle` फ़ाइल में घोषित हेल्पर को कॉल करती हैं।
- रीफ़ैक्टर से पहले यह मैप करना कि कौन-सी क्लास किसी बेस क्लास से इनहेरिट करती हैं।

## Groovy सतही AI टूल को कहाँ उलझाती है

Groovy अक्सर कॉन्फ़िगरेशन जैसी पढ़ी जाती है। Gradle बिल्ड में `dependencies { implementation ... }` क्लोज़र के साथ मेथड कॉल की एक श्रृंखला है, और डिक्लेरेटिव Jenkinsfile भी ऐसी ही होती है। बिल्डर मनमाने नामों को कॉल में बदल देते हैं, और GDK हर ऑब्जेक्ट में `each` और `collect` जैसे मेथड जोड़ता है। हर कॉल दर्ज करने वाला टूल इस शोर में डूब जाता है।

Maguyva DSL और GDK लेयर को फ़िल्टर करता है, ताकि आपके अपने मेथड और क्लास साफ़ दिखें।

## Maguyva, Groovy से क्या निकालता है

Maguyva `.groovy` और `.gradle` फ़ाइलों और `Jenkinsfile` को कवर करता है। क्लास, फ़ंक्शन और मेथड निकाले जाते हैं, और इम्पोर्ट `import static` तथा `as` एलियस को सामान्यीकृत करते हैं। कॉल के नामों से अंत के क्लोज़र ब्लॉक और `?.` सेफ़-नेविगेशन ऑपरेटर हटा दिए जाते हैं, इसलिए `repo?.save(order) { ... }` को `save` के कॉल के रूप में दर्ज किया जाता है। किसी क्लास के भीतर बिना रिसीवर वाला कॉल उसी क्लास के अपने मेथड पर रिज़ॉल्व होता है।

शोर परतों में फ़िल्टर किया जाता है:

- `dependencies`, `implementation`, `task`, `given`, `when`, `then` और `Mock` जैसे लगभग 140 स्टैंडर्ड लाइब्रेरी, Gradle और Spock नाम।
- `each`, `collect`, `inject` और `eachLine` जैसे लगभग 260 GDK मेथड।
- बिल्डर DSL के नाम, जिनमें `pipeline`, `stage`, `steps` और `sh` जैसे Jenkins स्टेप शामिल हैं, जब वे कोष्ठक के साथ कॉल करने की बजाय बिल्डर शैली में इस्तेमाल हों।
- `@CompileStatic`, `@Immutable` और `@Autowired` जैसे AST-ट्रांसफ़ॉर्म और फ़्रेमवर्क एनोटेशन, जो कभी कॉल के रूप में दर्ज नहीं होते।

ग्राफ़ इनहेरिटेंस, इंस्टैंशिएशन, और रीड तथा राइट भी दर्ज करता है।

## एजेंट प्रॉम्प्ट के उदाहरण

- "`deployToStaging` को कौन कॉल करता है, और किन पाइपलाइन से?" (`find_symbol`, फिर `dependency_search` इनकमिंग)
- "कौन-सी क्लास `BaseIntegrationSpec` से इनहेरिट करती हैं?" (`dependency_search`)
- "समझाओ कि रिलीज़ टास्क आर्टिफ़ैक्ट कैसे बिल्ड और पब्लिश करता है।" (`get_task_context`)

## ज्ञात सीमाएँ

- Groovy मेथड और फ़्री फ़ंक्शन एक ही सिंटैक्स नोड साझा करते हैं, इसलिए `structural_search` में `methods` प्रीसेट कुछ भी नहीं चुनता। इसकी जगह `functions` प्रीसेट या `find_symbol` इस्तेमाल करें।
- आपका कोई मेथड जिसका नाम किसी GDK या DSL मेथड से मेल खाता है, जैसे `collect` या `stage`, उनके साथ फ़िल्टर हो सकता है। अगर कोई कॉलर गायब लगे, तो `text_pattern_search` इस्तेमाल करें।

## अगले कदम

[क्विकस्टार्ट](/hi/docs/quickstart) से रिपॉज़िटरी जोड़ें, फिर सपोर्ट मैट्रिक्स [कम्पैटिबिलिटी पेज](/hi/docs/compatibility) पर देखें। आपके बिल्ड जिस JVM कोड को कंपाइल करते हैं, उसके लिए [Java गाइड](/hi/languages/java) और [Kotlin गाइड](/hi/languages/kotlin) पढ़ें।

## इंजन विवरण

- Groovy सपोर्ट `.groovy`, `.gradle` और `Jenkinsfile` फ़ाइलों को कवर करता है। कॉल के नामों से क्लोज़र ब्लॉक और `?.` सेफ़ नेविगेशन हटा दिए जाते हैं।
- लगभग 140 स्टैंडर्ड लाइब्रेरी, Gradle और Spock नाम और लगभग 260 GDK मेथड संबंधों से फ़िल्टर किए जाते हैं।
- बिल्डर DSL नाम, जिनमें `stage` और `sh` जैसे Jenkins स्टेप शामिल हैं, बिल्डर शैली में इस्तेमाल होने पर फ़िल्टर किए जाते हैं; एनोटेशन कभी कॉल के रूप में दर्ज नहीं होते।

## उपयोगी MCP एंट्री पॉइंट

- `find_symbol`: किसी साझा लाइब्रेरी स्टेप, बिल्ड हेल्पर या क्लास के लिए इस्तेमाल करें जब आपको परिभाषा और कॉलर चाहिए।
- `dependency_search`: यह देखने के लिए इनकमिंग ट्रैवर्सल इस्तेमाल करें कि कौन-सी स्क्रिप्ट और पाइपलाइन किसी बिल्ड हेल्पर को कॉल करती हैं।
- `text_pattern_search`: ग्राफ़ से फ़िल्टर किए गए DSL कॉल और GDK मेथड के लिए इस्तेमाल करें।
