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

لغة Ada في Maguyva: المواصفات والأجسام ورسوم الحزم البيانية

يدعم Maguyva لغة Ada بشجرة AST والرموز والرسم البياني، ليتمكن وكلاء الذكاء الاصطناعي من تتبّع مواصفات الحزم وأجسامها والمهام والأنواع الموسومة في أنظمة Ada طويلة العمر.

لماذا تحتاج مستودعات Ada إلى خريطة اعتماديات

تفصل Ada بين ما تعد به الحزمة (.ads) وكيفية تنفيذه (.adb). هذه هندسة جيدة، لكنها تعني أيضًا أن تغييرًا واحدًا يمسّ ملفات كثيرة لن يربط البحث النصي بينها نيابةً عنك. وتضيف أنظمة Ada طويلة العمر طبقة أخرى: الأنواع العامة والأنواع الموسومة والمهام والكائنات المحمية، وعلاقاتها أهم من أي ملف بمفرده.

يمنح Maguyva الوكيل خريطة الاعتماديات هذه قبل أن يقترح تغييرًا، أي بالترتيب الذي تتوقعه مراجعة عالية السلامة.

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

يغطي Maguyva الملفات .ads و.adb و.ada. تُستخرج أجسام البرامج الفرعية ومواصفات الإجراءات والدوال رموزًا قابلة للاستدعاء، فيمكنك البحث عن مواصفة الإجراء وجسمه معًا. ومطابقة الرموز لا تميّز بين الأحرف الكبيرة والصغيرة، تمامًا مثل Ada نفسها.

تأتي الاستيرادات من عبارات with وuse، وتُحذف الكلمة المفتاحية ليخزّن الرسم البياني اسم الحزمة. ويسجّل الرسم البياني أيضًا الاستدعاءات، والوراثة والتجاوزات في الأنواع الموسومة، وإنشاء المثيلات، ومراجع الأنواع، والقراءات والكتابات، وحواف إطلاق الاستثناءات ومعالجتها.

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

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

  • “ما الوحدات التي تعتمد على Flight_Control.Sensors، وأيّ برامجه الفرعية تستدعي؟” (dependency_search في الاتجاه الوارد)
  • “اعرض مواصفة Compute_Trajectory وجسمه وكل من يستدعيه.” (find_symbol)
  • “اشرح كيف تسلّم مهمة القياس عن بُعد البيانات إلى الكائن المحمي الخاص بالتسجيل.” (get_task_context)

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

  • تستخدم Ada الصياغة نفسها لبعض الاستدعاءات ولوصول حقول السجلات وللفهرسة. يستبعد Maguyva الأنواع المدمجة وحزم المكتبة القياسية ودوال السمات والعوامل (نحو 113 نمطًا) ليبقى الرسم البياني للاستدعاءات نظيفًا، لذا لا تصبح الاستدعاءات إلى المكتبة القياسية حوافَّ في الرسم البياني. ويُميَّز الوصول إلى حقول السجلات والفهرسة عن الاستدعاءات بحسب موضعها في القواعد النحوية، لا بقائمة من أسماء الحقول. وتُستبقى عمدًا استدعاءات إدخال وإخراج النصوص الشائعة مثل Put_Line وPut وGet.
  • تغيّر عبارات use نطاق الرؤية، لكنها لا تُختار استيرادًا في البحث البنيوي، أما عبارات with فتُختار.
  • قد تكون عقد أنواع السجلات والواجهات أجزاءً مجهولة الاسم، لذا قد تفوتها عمليات البحث البنيوي المعتمدة على الاسم. استخدم find_symbol للأنواع المسمّاة.

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

اربط مستودعًا عبر دليل البدء السريع، ثم راجع مصفوفة الدعم في صفحة التوافق. وإذا كانت شيفرة Ada مرتبطة بلغة C، فاقرأ أيضًا دليل لغة C.

الأنسب لـ

  • > الفرق التي تصون شيفرة Ada طويلة العمر في الطيران والفضاء والدفاع والسكك الحديدية أو غيرها من المجالات عالية السلامة، حيث يُراجَع كل تغيير.
  • > قواعد الشيفرة المقسّمة إلى مواصفات `.ads` وأجسام `.adb`، حيث تقع الواجهة والتنفيذ في ملفات مختلفة.
  • > المهندسون الذين يستخدمون وكلاء الذكاء الاصطناعي لتحليل الأثر وتحضير المراجعات، لا لتوليد الشيفرة دون رقابة.

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

  • > العثور على كل وحدة تستخدم حزمة عبر `with` قبل تغيير مواصفتها.
  • > تتبّع البرامج الفرعية التي تستدعي إجراءً عبر حدود الحزم.
  • > رسم خريطة أنواع المهام والأنواع المحمية وهرميات الأنواع الموسومة قبل تغيير في التزامن أو التصميم.

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

  • > يغطي دعم Ada مواصفات `.ads` وأجسام `.adb` وملفات `.ada`. أجسام البرامج الفرعية ومواصفاتها كلاهما رموز قابلة للاستدعاء.
  • > مطابقة الرموز لا تميّز بين الأحرف الكبيرة والصغيرة، وتصبح عبارات `with` و`use` علاقات استيراد بعد حذف الكلمة المفتاحية.
  • > يُستبعد من الاستدعاءات نحو 113 من الأنواع المدمجة وحزم المكتبة القياسية ودوال السمات والعوامل؛ ويُميَّز الوصول إلى حقول السجلات والفهرسة عن الاستدعاءات بحسب موضعها في القواعد النحوية، ويُستبقى `Put_Line` و`Put` و`Get` عمدًا.

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

  • find_symbol

    استخدمه للعثور على مواصفة البرنامج الفرعي وجسمه معًا مع مراجعهما.

  • dependency_search

    استخدم التتبّع في الاتجاه الوارد على حزمة قبل تغيير مواصفتها، لرؤية كل وحدة معتمدة عليها.

  • get_task_context

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