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

لغة Kotlin في Maguyva: رسوم بيانية للشيفرة في Android وJVM

يدعم Maguyva لغة Kotlin بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع الفئات ودوال الامتداد والروتينات المشتركة في شيفرة Android وJVM.

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

Kotlin موجزة لأنها تُخفي الروابط. تغيّر apply وlet وalso وrun وwith معنى this وit. وتضيف دوال الامتداد سلوكًا إلى أنواع معرّفة في مكان آخر. وتنقل الروتينات المشتركة العمل بين launch وasync وwithContext. الوكيل الذي يقرأ ملفًا واحدًا في كل مرة يرى الاستدعاءات، لكنه لا يرى المستقبِلات التي خلفها.

يحلّ Maguyva جزءًا أكبر من هذه البنية وقت الفهرسة، فيستطيع الوكيل أن يسأل عمّن يستدعي دالة ويحصل على الإجابة الحقيقية.

ما الذي يستخرجه Maguyva من Kotlin

يغطي Maguyva الملفات .kt و.kts. تُستخرج الدوال والفئات والكائنات والكائنات المرافقة، وتسجّل توقيعات الدوال مستقبِلات الامتداد وأسماء المعاملات والقيم الافتراضية ومعاملات vararg.

تحتفظ علاقات الاستدعاء بالأسماء المؤهَّلة بالفئة، فلا يختلط OrderRepository.save بـ save آخر. ويتتبّع تحديد نوع المستقبِل this داخل apply وrun، وit داخل let وalso، ووسيط with، فتُحَلّ الاستدعاءات داخل دوال النطاق إلى النوع الصحيح. وتُستبقى عمدًا في الرسم البياني بانيات الروتينات المشتركة ومعاملات Flow (launch وasync وwithContext وcoroutineScope وsupervisorScope وflow وemit وdelay وChannel).

ويسجّل الرسم البياني أيضًا الوراثة وتنفيذ الواجهات والتجاوزات وإنشاء المثيلات والتعليقات التوضيحية (annotations) ومراجع الأنواع والقراءات والكتابات وحواف رمي الاستثناءات والتقاطها.

أمثلة على مطالبات الوكلاء

  • “من يستدعي CheckoutUseCase.invoke، ومن أي ViewModels؟” (find_symbol ثم dependency_search في الاتجاه الوارد)
  • “تتبّع تدفق المزامنة من SyncWorker إلى عميل الشبكة.” (get_task_context)
  • “ما الفئات التي تنفّذ PaymentGateway؟” (dependency_search)

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

  • يُستبعد من العلاقات نحو 250 استدعاءً من المكتبة القياسية لـ Kotlin والمنصة، لذا فإن الأدوات المساعدة مثل listOf وmap وfilter وprintln ليست حوافَّ في الرسم البياني. استخدم text_pattern_search لها.

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

اربط مستودعًا عبر دليل البدء السريع، ثم راجع مصفوفة الدعم في صفحة التوافق. ولقواعد الشيفرة المختلطة، اقرأ أيضًا دليل لغة Java.

الأنسب لـ

  • > فرق Android ذات التطبيقات الكبيرة متعددة الوحدات، حيث تستدعي ViewModels والمستودعات وحالات الاستخدام بعضها بعضًا عبر حدود الوحدات.
  • > Kotlin على الخادم وخدمات Kotlin/JVM التي تمزج Kotlin بشيفرة Java أقدم.
  • > عمليات بناء Gradle المكتوبة بسكربت Kotlin (`.kts`)، والتي يحتاج الوكلاء إلى قراءتها مع شيفرة التطبيق.

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

  • > العثور على كل من يستدعي فئة مستودع أو حالة استخدام قبل تغيير واجهتها البرمجية.
  • > تتبّع تدفق الروتينات المشتركة من `launch` في ViewModel، عبر `withContext`، وصولًا إلى طبقة البيانات.
  • > رسم خريطة الفئات التي تنفّذ واجهة أو تتجاوز أسلوبًا أساسيًا قبل إعادة الهيكلة.

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

  • > يغطي دعم Kotlin الملفات `.kt` و`.kts`. تسجّل التوقيعات مستقبِلات الامتداد وأسماء المعاملات والقيم الافتراضية ومعاملات `vararg`.
  • > يتتبّع تحديد نوع المستقبِل `this` في `apply` و`run`، و`it` في `let` و`also`، ووسيط `with`، وتحتفظ الاستدعاءات بالأسماء المؤهَّلة بالفئة.
  • > تبقى في الرسم البياني بانيات الروتينات المشتركة ومعاملات Flow مثل `launch` و`withContext` و`flow`، بينما يُستبعد نحو 250 استدعاءً من المكتبة القياسية.

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

  • find_symbol

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

  • dependency_search

    قبل تغيير الواجهة البرمجية، استخدم التتبّع في الاتجاه الوارد على مستودع أو واجهة لرؤية المستدعين والتنفيذات.

  • get_task_context

    استخدمه لمطالبات مثل «تتبّع تدفق المزامنة من `SyncWorker` إلى عميل الشبكة».