# لغة Groovy في Maguyva: رسوم بيانية لشيفرة Gradle وJenkins

Canonical source: https://maguyva.ai/ar/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 والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع الفئات والإغلاقات والاستدعاءات في تطبيقات Groovy وعمليات بناء Gradle وملفات Jenkinsfile.

## لمحة عن الدعم

- المستوى: دعم AST والرموز
- البرمجة
- الامتدادات: .gradle, .groovy, .jenkinsfile
- تحليل AST حقيقي لبحث واعٍ بالصياغة النحوية وسياق بنيوي.
- تُغذّي الرموز المسمّاة البحث الدلالي والمراجع المتقاطعة. ويتوفر التنقل عبر الرسم البياني عند تمكين استخراج العلاقات.
- تُسهم هذه اللغة بالرموز والعلاقات في البحث المراعي لبنية الرسم البياني؛ وتختلف أنواع الحواف المدعومة بحسب التراكيب الأصلية في اللغة.
- يتوفر كل من تحليل AST واستخلاص الرموز.

## الأنسب لـ

- عمليات بناء Gradle المكتوبة بلغة Groovy، حيث يتوزّع منطق البناء المشترك على ملفات `.gradle` كثيرة.
- خطوط Jenkins والمكتبات المشتركة التي يحتاج الوكلاء إلى قراءتها قبل تغيير CI.
- تطبيقات Groovy ومجموعات اختبار Spock على JVM.

## سير عمل الوكلاء

- العثور على كل مستدعٍ لخطوة في مكتبة مشتركة قبل تغيير وسائطها.
- تتبّع نصوص البناء التي تستدعي دالة مساعدة معرّفة في ملف `.gradle` مشترك.
- رسم خريطة للفئات التي ترث من فئة أساس قبل إعادة الهيكلة.

## أين تُربك Groovy أدوات الذكاء الاصطناعي السطحية

كثيرًا ما تُقرأ Groovy كأنها ملف إعدادات. في بناء 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`، ومن أي خطوط؟" (`find_symbol` ثم `dependency_search` في الاتجاه الوارد)
- "ما الفئات التي ترث من `BaseIntegrationSpec`؟" (`dependency_search`)
- "اشرح كيف تبني مهمة الإصدار الحِزم المُنتَجة وتنشرها." (`get_task_context`)

## القيود المعروفة

- تتشارك توابع Groovy والدوال الحرة عقدة نحوية واحدة، لذا لا يختار الإعداد المسبق `methods` في `structural_search` شيئًا. استخدم بدلًا منه الإعداد المسبق `functions` أو `find_symbol`.
- قد يُرشَّح مع توابع GDK أو DSL تابعٌ من تعريفك يحمل الاسم نفسه، مثل `collect` أو `stage`. استخدم `text_pattern_search` عندما يبدو أن مستدعيًا مفقود.

## الخطوات التالية

اربط مستودعًا عبر [دليل البدء السريع](/ar/docs/quickstart)، ثم راجع مصفوفة الدعم في [صفحة التوافق](/ar/docs/compatibility). ولشيفرة JVM التي تترجمها عمليات البناء لديك، اقرأ [دليل لغة Java](/ar/languages/java) و[دليل لغة Kotlin](/ar/languages/kotlin).

## تفاصيل المحرك

- يغطي دعم Groovy الملفات `.groovy` و`.gradle` و`Jenkinsfile`. تُحذف من أسماء الاستدعاءات كتل الإغلاق والتنقل الآمن `?.`.
- يُستبعد من العلاقات نحو 140 اسمًا من المكتبة القياسية وGradle وSpock ونحو 260 تابعًا من GDK.
- تُرشَّح أسماء DSL الخاصة بأدوات البناء، ومنها خطوات Jenkins مثل `stage` و`sh`، في أسلوب أدوات البناء، ولا تُسجَّل التوصيفات أبدًا بوصفها استدعاءات.

## نقاط دخول مفيدة عبر MCP

- `find_symbol`: استخدمه لخطوة مكتبة مشتركة أو دالة بناء مساعدة أو فئة عندما تحتاج إلى التعريف والمستدعين.
- `dependency_search`: استخدم الاجتياز الوارد على دالة بناء مساعدة لرؤية النصوص البرمجية وخطوط المعالجة التي تستدعيها.
- `text_pattern_search`: استخدمه لاستدعاءات DSL وتوابع GDK، وهي مستبعدة من الرسم البياني.
