Lumaktaw papunta sa content
cd /languages
  • Code na high-integrity
  • Programming
  • Support para sa AST at mga simbolo

Ada sa Maguyva: mga spec, body at package graph

Sinusuportahan ng Maguyva ang Ada gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga package spec, body, task at tagged type sa mga matagal nang Ada system.

Bakit kailangan ng dependency map ang mga Ada repository

Pinaghihiwalay ng Ada ang ipinapangako ng isang package (.ads) at kung paano nito ito tinutupad (.adb). Magandang engineering iyon, at ibig sabihin din nito na ang isang pagbabago ay humahawak sa maraming file na hindi pagdudugtungin ng text search para sa iyo. May dagdag pang layer ang matatagal nang Ada system: mga generic, tagged type, task at protected object, na mas mahalaga ang mga relationship kaysa sa alinmang file nang mag-isa.

Ibinibigay ng Maguyva sa agent ang dependency map na ito bago ito magmungkahi ng pagbabago, sa mismong pagkakasunod na inaasahan ng isang high-integrity na review.

Ano ang kinukuha ng Maguyva mula sa Ada

Sakop ng Maguyva ang .ads, .adb at .ada. Kinukuha bilang mga callable symbol ang mga subprogram body pati ang mga procedure at function spec, kaya mahahanap mo pareho ang spec at body ng isang routine. Case-insensitive ang symbol matching, gaya ng Ada mismo.

Galing ang mga import sa mga with at use clause; tinatanggal ang keyword para pangalan ng package ang naka-store sa graph. Itinatala rin ng graph ang mga call, inheritance at override sa mga tagged type, instantiation, mga type reference, read at write, at mga edge ng pag-raise at pag-handle ng exception.

Sa structural search, puwedeng piliin ang mga task type, protected type, record type at interface type bilang type definition, at ang mga entry body bilang method.

Mga halimbawang agent prompt

  • “Aling mga unit ang umaasa sa Flight_Control.Sensors, at aling mga subprogram nito ang tinatawag nila?” (dependency_search na incoming)
  • “Ipakita ang spec at body ng Compute_Trajectory at ang bawat tumatawag dito.” (find_symbol)
  • “Ipaliwanag kung paano ipinapasa ng telemetry task ang data sa logging protected object.” (get_task_context)

Mga kilalang limitasyon

  • Iisang syntax ang gamit ng Ada para sa ilang call, record field access at indexing. Nifi-filter ng Maguyva ang mga built-in type, standard-library package, attribute function at operator (mga 113 pattern) para manatiling malinis ang call graph, kaya hindi nagiging graph edge ang mga call sa standard library. Nakikilala ang record field access at indexing mula sa mga call ayon sa posisyon nila sa grammar, hindi sa isang listahan ng mga field name. Sadyang pinapanatili ang mga karaniwang text I/O call tulad ng Put_Line, Put at Get.
  • Binabago ng mga use clause ang visibility pero hindi pinipili bilang import sa structural search; pinipili ang mga with clause.
  • Puwedeng walang pangalang fragment ang mga record at interface type node, kaya puwedeng ma-miss sila ng mga name-based na structural search. Gamitin ang find_symbol para sa mga may pangalang type.

Mga susunod na hakbang

Mag-connect ng repository gamit ang quickstart, tapos tingnan ang support matrix sa compatibility page. Kung nakakonekta sa C ang Ada mo, basahin din ang gabay sa C.

Pinakabagay

  • > Mga team na nagme-maintain ng matagal nang Ada sa aerospace, defense, riles o iba pang high-integrity na domain kung saan nire-review ang bawat pagbabago.
  • > Mga codebase na hati sa `.ads` na spec at `.adb` na body, kung saan magkaibang file ang interface at implementation.
  • > Mga engineer na gumagamit ng AI agent para sa impact analysis at paghahanda ng review, hindi para sa code generation na walang bantay.

Mga workflow ng agent

  • > Hanapin ang bawat unit na nag-`with` ng isang package bago magbago ang spec nito.
  • > I-trace ang mga subprogram na tumatawag sa isang routine lampas sa hangganan ng mga package.
  • > I-map ang mga task type, protected type at tagged-type hierarchy bago ang isang pagbabago sa concurrency o design.

Mga detalye ng engine

  • > Sakop ng Ada support ang `.ads` na spec, `.adb` na body at mga `.ada` file. Parehong callable symbol ang mga subprogram body at spec.
  • > Case-insensitive ang symbol matching, at nagiging import relationship ang mga `with` at `use` clause pagkatanggal ng keyword.
  • > Mga 113 built-in type, standard library package, attribute function at operator ang nifi-filter mula sa mga call; nakikilala ang record field access at indexing mula sa mga call ayon sa posisyon nila sa grammar, at sadyang pinapanatili ang `Put_Line`, `Put` at `Get`.

Mga kapaki-pakinabang na MCP entry point

  • find_symbol

    Gamitin para sabay na mahanap ang spec at body ng isang subprogram, kasama ang mga reference nila.

  • dependency_search

    Gumamit ng incoming traversal sa isang package bago magbago ang spec nito, para makita ang bawat umaasang unit.

  • get_task_context

    Gamitin para sa mga prompt tulad ng “ipaliwanag kung paano ipinapasa ng telemetry task ang data sa logging protected object”.