Passer au contenu
cd /languages
  • Code à haute intégrité
  • Programmation
  • Prise en charge de l’AST et des symboles

Ada dans Maguyva : spécifications, corps et graphes de paquetages

Maguyva prend en charge Ada avec AST, symboles et graphe, pour que les agents IA suivent spécifications, corps, tâches et types étiquetés dans des systèmes Ada durables.

Pourquoi les dépôts Ada ont besoin d’une carte des dépendances

Ada sépare ce qu’un paquetage promet (.ads) de la manière dont il le réalise (.adb). C’est de la bonne ingénierie, et cela signifie aussi qu’un seul changement touche plusieurs fichiers qu’une recherche textuelle ne reliera pas pour vous. Les systèmes Ada de longue durée ajoutent une couche : génériques, types étiquetés, tâches et objets protégés, dont les relations comptent plus que n’importe quel fichier isolé.

Maguyva donne cette carte des dépendances à l’agent avant qu’il propose une modification, ce qui est l’ordre attendu par une revue à haute intégrité.

Ce que Maguyva extrait en Ada

Maguyva couvre .ads, .adb et .ada. Les corps de sous-programmes ainsi que les spécifications de procédures et de fonctions sont extraits comme symboles appelables, de sorte que la spécification d’une routine et son corps sont tous deux consultables. La correspondance des symboles ignore la casse, comme Ada lui-même.

Les imports proviennent des clauses with et use, le mot-clé étant retiré pour que le graphe stocke le nom du paquetage. Le graphe enregistre aussi les appels, l’héritage et les surcharges sur les types étiquetés, l’instanciation, les références de type, les lectures et écritures, ainsi que les arêtes de levée et de traitement d’exceptions.

Dans la recherche structurelle, les types tâches, types protégés, types articles et types interfaces peuvent être sélectionnés comme définitions de type, et les corps d’entrées comme méthodes.

Exemples de prompts pour agents

  • « Quelles unités dépendent de Flight_Control.Sensors, et lesquels de ses sous-programmes appellent-elles ? » (dependency_search en incoming)
  • « Montre la spécification et le corps de Compute_Trajectory ainsi que tous ses appelants. » (find_symbol)
  • « Explique comment la tâche de télémétrie transmet ses données à l’objet protégé de journalisation. » (get_task_context)

Limites connues

  • Ada utilise la même syntaxe pour certains appels, l’accès aux champs d’articles et l’indexation. Maguyva filtre les types prédéfinis, les paquetages de la bibliothèque standard, les fonctions d’attribut et les opérateurs (environ 113 motifs) pour garder un graphe d’appels propre ; les appels vers la bibliothèque standard ne sont donc pas des arêtes du graphe. L’accès aux champs d’articles et l’indexation se distinguent des appels par leur position dans la grammaire, et non par une liste de noms de champs. Les appels d’E/S texte courants comme Put_Line, Put et Get sont conservés volontairement.
  • Les clauses use modifient la visibilité mais ne sont pas sélectionnées comme imports dans la recherche structurelle ; les clauses with, si.
  • Les nœuds de types articles et interfaces peuvent être des fragments anonymes, que des requêtes structurelles par nom risquent de manquer. Utilisez find_symbol pour les types nommés.

Étapes suivantes

Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge sur la page de compatibilité. Si votre code Ada s’interface avec du C, lisez aussi le guide C.

Idéal pour

  • > Les équipes qui maintiennent de l'Ada de longue date dans l'aérospatial, la défense, le ferroviaire ou d'autres domaines à haute intégrité où chaque changement est revu.
  • > Les bases de code réparties entre spécifications `.ads` et corps `.adb`, où l'interface et l'implémentation vivent dans des fichiers différents.
  • > Les ingénieurs qui utilisent des agents IA pour l'analyse d'impact et la préparation des revues, pas pour générer du code sans relecture.

Workflows d'agent

  • > Trouver toutes les unités qui font un `with` d'un paquetage avant d'en modifier la spécification.
  • > Retracer quels sous-programmes appellent une routine à travers les frontières de paquetages.
  • > Cartographier les types tâches, les types protégés et les hiérarchies de types étiquetés avant un changement de concurrence ou de conception.

Détails du moteur

  • > La prise en charge d'Ada couvre les spécifications `.ads`, les corps `.adb` et `.ada`. Corps et spécifications de sous-programmes sont tous deux des symboles appelables.
  • > La correspondance des symboles ignore la casse, et les clauses `with` et `use` deviennent des relations d'import une fois le mot-clé retiré.
  • > Environ 113 types prédéfinis, paquetages de la bibliothèque standard, fonctions d'attribut et opérateurs sont filtrés des appels ; l'accès aux champs d'articles et l'indexation se distinguent des appels par leur position dans la grammaire, et `Put_Line`, `Put` et `Get` sont conservés volontairement.

Points d'entrée MCP utiles

  • find_symbol

    Utilisez-le pour trouver ensemble la spécification et le corps d'un sous-programme, avec ses références.

  • dependency_search

    Utilisez la traversée incoming sur un paquetage avant de modifier sa spécification pour voir toutes les unités qui en dépendent.

  • get_task_context

    Utilisez-le pour des prompts comme « explique comment la tâche de télémétrie transmet ses données à l'objet protégé de journalisation ».