تخطَّ إلى المحتوى
cd /languages
  • برمجة نصية على JVM
  • البرمجة
  • دعم AST والرموز

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

يدعم Maguyva لغة Groovy بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع الفئات والإغلاقات والاستدعاءات في تطبيقات Groovy وعمليات بناء Gradle وملفات Jenkinsfile.

أين تُربك 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 عندما يبدو أن مستدعيًا مفقود.

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

اربط مستودعًا عبر دليل البدء السريع، ثم راجع مصفوفة الدعم في صفحة التوافق. ولشيفرة JVM التي تترجمها عمليات البناء لديك، اقرأ دليل لغة Java ودليل لغة Kotlin.

الأنسب لـ

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

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

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

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

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

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

  • find_symbol

    استخدمه لخطوة مكتبة مشتركة أو دالة بناء مساعدة أو فئة عندما تحتاج إلى التعريف والمستدعين.

  • dependency_search

    استخدم الاجتياز الوارد على دالة بناء مساعدة لرؤية النصوص البرمجية وخطوط المعالجة التي تستدعيها.

  • text_pattern_search

    استخدمه لاستدعاءات DSL وتوابع GDK، وهي مستبعدة من الرسم البياني.