PHP-Unterstützung in Maguyva: Langlebige Web-Apps ohne blinde Änderungen
Relevant, wenn eine PHP-Codebase noch immer Umsatz bringt, aber niemand will, dass sich ein Agent darin frei austobt.
Dateiendungen
.php, .php3, .php4, .php5, +2 weitere
Maguyva unterstützt Ruby mit AST, Symbolen und Graph, damit KI-Agenten Klassen, Module, Singleton-Methoden und Konstruktoraufrufe in Rails- und Ruby-Codebasen verfolgen.
Ruby setzt stark auf Konventionen und Metaprogrammierung. Methoden entstehen durch attr_accessor, Klassen werden in anderen Dateien wieder geöffnet, und Namespaces verschachteln mehrere Module tief. Die gut lesbare Oberfläche verbirgt, welche Methode ein Aufruf tatsächlich erreicht, und eine stumpfe Textsuche liefert jedes call und perform der App.
Maguyva gibt einem Agenten Klassen, Module, Methoden und ihre Aufrufer als Struktur, damit er eine Änderung durch die App verfolgen kann, statt zu raten.
Maguyva deckt .rb-, .rbw-, .rake- und .gemspec-Dateien sowie Gemfile und Rakefile ab. Instanzmethoden und Singleton-Methoden (def self.call) werden extrahiert, wobei Singleton-Methoden als statisch markiert werden. attr_reader-, attr_writer- und attr_accessor-Deklarationen zählen als Accessor-Methoden, und Symbole werden mit ihrem Modul- und Klassen-Namespace qualifiziert.
ClassName.new und Namespace::ClassName.new zählen als Instanziierung, und die Receiver-Typisierung folgt lokalen Zuweisungen und @instance_variables, sodass ein Aufruf auf einem zugewiesenen Objekt zu seiner Klasse aufgelöst werden kann. Der Graph erfasst außerdem Vererbung, Modul-Einbindung, Overrides, raise- und rescue-Kanten sowie Lese- und Schreibzugriffe.
Metaprogrammierungs-Aufrufe (define_method, send, method_missing, class_eval und ähnliche), Sorbets T::-Typhelfer und gängige Enumerable-Aufrufe (each, collect, reject und ähnliche) werden aus den Beziehungen gefiltert, damit der Anwendungscode hervortritt.
Billing::ChargeCustomer.call auf, und aus welchen Jobs und Controllern?“ (find_symbol, dann dependency_search incoming)ApplicationRecord und binden Auditable ein?“ (dependency_search)get_task_context)require und load sind in Ruby gewöhnliche Methodenaufrufe, daher wählt das Preset imports in structural_search nichts aus. Verwende text_pattern_search, um sie aufzulisten.define_method erzeugt oder von method_missing behandelt werden, werden nicht als Symbole extrahiert, und diese Aufrufe werden als Metaprogrammierungs-Rauschen gefiltert.Verbinde ein Repository über den Schnellstart und prüfe dann die Unterstützungsmatrix auf der Kompatibilitätsseite. Für andere Repositories in dynamischen Sprachen vergleiche mit dem Python-Leitfaden.
Am besten geeignet
Agentenabläufe
Engine-Einordnung
Nützliche MCP-Einstiegspunkte
Nutz es für eine Klasse, ein Modul oder eine Methode mit Namespace wie `Billing::ChargeCustomer.call`.
Nutz vor einer Änderung die eingehende Traversierung auf einem Model oder Service-Objekt, um Aufrufer und Unterklassen zu sehen.
Nutz es für `require`-Pfade, Routen-Strings und dynamisch definierte Methoden, die der Graph nicht sieht.
Verwandte Guides
Relevant, wenn eine PHP-Codebase noch immer Umsatz bringt, aber niemand will, dass sich ein Agent darin frei austobt.
Dateiendungen
.php, .php3, .php4, .php5, +2 weitere
Nützlich, wenn sich Python-Codebasen über Services, Skripte, Type Stubs und operativen Klebecode erstrecken.
Dateiendungen
.py, .pyi, .pyw