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

لغة Dart في Maguyva: رسوم بيانية للشيفرة في تطبيقات Flutter وDart

يدعم Maguyva لغة Dart بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع الفئات وmixins والامتدادات والمُنشِئات في شيفرة Flutter وDart.

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

توزّع Dart النوع الواحد على عدة بنى. يمكن للفئة أن ترث من فئة أساس واحدة، وأن تنفّذ عدة واجهات، وأن تمزج سلوكًا عبر with مع mixins. وتُلحق توابع الامتداد أعضاءً بأنواع معرّفة في مكان آخر، بينما تُخفي المُنشِئات المسمّاة ومُنشِئات factory أيّ فئة تُبنى فعلًا. يجد البحث النصي الأسماء، لكنه لا يجد البنية التي خلفها.

يمنح Maguyva الوكيل تلك البنية، فيستطيع تتبّع التغيير من عنصر الواجهة إلى الخدمة التي يعتمد عليها.

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

يغطي Maguyva ملفات .dart. تُستخرج الفئات وmixins والامتدادات بوصفها أنواعًا. ويغطي الإعداد المسبق functions في structural_search الدوال والتوابع والدوال المحلية وتعابير lambda، إضافة إلى المُنشِئات التوليدية ومُنشِئات const وfactory. وتسجّل التواقيع مجموعات المعاملات الموضعية والمسمّاة الاختيارية والأعضاء static، وتُحذف من أسماء التعريفات اللاحقتان ? و!.

توحّد عمليات الاستيراد توجيهات import وpart وlibrary وتحذف منها عبارات show وhide وas. ويبقى في الرسم البياني الاستدعاء عبر بادئة استيراد، مثل http.get بعد import 'package:http/http.dart' as http.

يتتبّع تحديد نوع المستقبِل المعاملات، والمتغيرات ذات النوع المحدد أو المُهيّأة، ودوال الجلب، وحلقات for-in على القوائم والمجموعات والكائنات القابلة للتكرار، ويعامل var وdynamic بوصفهما نوعين مُستنتَجين. وعند تحليل الأعضاء الموروثة تُتتبّع عبارات extends وimplements وwith. ويسجّل الرسم البياني أيضًا إنشاء النُسخ ومراجع الأنواع والقراءة والكتابة وحواف الاستثناءات.

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

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

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

  • يُستبعد من العلاقات نحو 200 اسم من مكتبات Dart الأساسية، منها أدوات المجموعات المساعدة مثل map وwhere وforEach، وتوابع Future وStream مثل then وlisten، ومكتبات dart:. استخدم text_pattern_search لها.
  • تحتفظ عُقد التواقيع في Dart بجسم الدالة بوصفه عقدة شقيقة، لذا قد تتداخل في نتائج structural_search دالة محلية أو تعبير lambda مع الكيان القابل للاستدعاء الذي يحتويه، وتظهر دوال الجلب والتعيين بوصفها تواقيع توابع.

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

اربط مستودعًا عبر دليل البدء السريع، ثم راجع مصفوفة الدعم في صفحة التوافق. ولقواعد شيفرة الأجهزة المحمولة الأخرى، اقرأ دليل لغة Kotlin ودليل لغة Swift.

الأنسب لـ

  • > تطبيقات Flutter التي تستدعي فيها عناصر الواجهة وفئات الحالة والمستودعات والخدمات بعضها بعضًا عبر ملفات كثيرة.
  • > حزم Dart التي تستخدم mixins وتوابع الامتداد لإضافة سلوك إلى أنواع معرّفة في مكان آخر.
  • > شيفرة Dart على الخادم وفي سطر الأوامر التي تشارك النماذج مع عميل Flutter.

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

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

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

  • > يغطي دعم Dart الملفات `.dart`. الفئات وmixins والامتدادات أنواع، وتشمل المُنشِئات الصيغ التوليدية و`const` و`factory`.
  • > توحّد عمليات الاستيراد توجيهات `import` و`part` و`library`، وتبقى في الرسم البياني الاستدعاءات عبر بادئة استيراد.
  • > يتتبّع تحديد نوع المستقبِل المعاملات والمتغيرات ودوال الجلب وحلقات `for`-`in`، ويُستبعد من العلاقات نحو 200 اسم من المكتبات الأساسية.

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

  • find_symbol

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

  • dependency_search

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

  • get_task_context

    استخدمه لمطالبات مثل "تتبّع كيف يصل زر الدفع إلى واجهة المدفوعات البرمجية".