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

لغة Swift في Maguyva: رسوم بيانية للشيفرة في iOS وmacOS

يدعم Maguyva لغة Swift بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع البروتوكولات والامتدادات والمُهيِّئات والمراقِبات في شيفرة iOS وmacOS.

لماذا تحتاج Swift إلى أكثر من البحث في الملفات

توزّع Swift النوع الواحد على أماكن كثيرة. يُصرَّح عن struct في ملف، ويكتسب سلوكًا من امتدادات في ثلاثة ملفات أخرى، ويتوافق مع بروتوكولات معرّفة في حزمة. وتختبئ تغييرات الحالة في الخصائص المحسوبة ومراقِبات willSet / didSet. الوكيل الذي يقرأ ملفًا واحدًا في كل مرة يفوته معظم ذلك.

يفهرس Maguyva هذه البنية، فيرى الوكيل أعضاء النوع وتوافقاته ومستدعيه معًا.

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

يغطي Maguyva الملفات .swift. تشمل الرموز القابلة للاستدعاء الدوال وinit وdeinit والمفهرِسات (subscripts) ودوال الجلب والتعيين للخصائص المحسوبة ومراقِبات willSet / didSet، فتصبح الشيفرة التي تغيّر الحالة قابلة للبحث كرموز بدل أن تضيع داخل أجسام الخصائص.

تُؤهَّل الأعضاء المصرَّح عنها في structs وenums والبروتوكولات والامتدادات بنوعها المالك (مثل CartStore.add)، وتُنسب الأعضاء المضافة في امتداد إلى النوع المُمتَد. وتُحذف المعاملات العامة وقوائم التوافق مع البروتوكولات واللواحق ? / ! من أسماء التعريفات، فتستخدم عمليات البحث الاسم المجرّد. وتحتفظ الاستدعاءات بـ self. وبمؤهِّل الفئة، وتُحتسب الإغلاقات الختامية ضمن عدد وسائط الاستدعاء.

يسجّل الرسم البياني الاستدعاءات والتوافق مع البروتوكولات والوراثة والتجاوزات وإنشاء المثيلات والسمات ومراجع الأنواع والقراءات والكتابات وحواف throw.

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

  • “ما الأنواع التي تتوافق مع PaymentProvider، وأين يُنشأ كل منها؟” (dependency_search)
  • “من يستدعي CartStore.add، ومن أي واجهات عرض؟” (find_symbol ثم dependency_search في الاتجاه الوارد)
  • “اشرح كيف يصل الإشعار الفوري إلى شاشة صندوق الوارد.” (get_task_context)

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

  • لا يُربط إلا الشيفرة المصدرية .swift. ملفات Storyboard وXIB ليست في قائمة الامتدادات، لذا تبقى روابط Interface Builder خارج الرسم البياني.
  • يُستبعد من العلاقات استدعاءات المكتبة القياسية وFoundation مثل print وdebugPrint وNSLog والتأكيدات، لذا فهي ليست حوافَّ في الرسم البياني. استخدم text_pattern_search لها.

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

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

الأنسب لـ

  • > فرق iOS وmacOS ذات أهداف التطبيقات الكبيرة وحزم Swift المشتركة.
  • > قواعد الشيفرة المبنية حول البروتوكولات والامتدادات، حيث يتوزّع سلوك النوع على ملفات كثيرة.
  • > سير عمل الوكلاء الذي يحتاج إلى تحليل الأثر قبل تغيير نموذج أو خدمة أو بروتوكول مشترك.

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

  • > العثور على كل نوع يتوافق مع بروتوكول قبل تغيير أحد متطلباته.
  • > تتبّع من يستدعي أسلوب خدمة عبر ViewModels والمنسّقين والحزم.
  • > العثور على المُهيِّئات والخصائص المحسوبة ومراقِبات `didSet` التي تمسّ حالة ما.

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

  • > تشمل الرموز القابلة للاستدعاء الدوال و`init` و`deinit` والمفهرِسات ودوال الجلب والتعيين للخصائص المحسوبة ومراقِبات `willSet` / `didSet`.
  • > تُؤهَّل أعضاء structs وenums والبروتوكولات والامتدادات بنوعها المالك، مثل `CartStore.add`.
  • > تُحذف المعاملات العامة وقوائم التوافق مع البروتوكولات واللواحق `?` / `!` من أسماء التعريفات، وتحتفظ الاستدعاءات بـ `self.` وبمؤهِّل الفئة.

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

  • find_symbol

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

  • dependency_search

    استخدمه على بروتوكول للعثور على الأنواع المتوافقة، أو في الاتجاه الوارد على أسلوب للعثور على المستدعين.

  • get_task_context

    استخدمه لمطالبات مثل «اشرح كيف يصل الإشعار الفوري إلى شاشة صندوق الوارد».