Pourquoi un parc Perl est difficile à modifier sans risque
Le code Perl est dense, souple et souvent écrit par des personnes parties depuis des années. Les sigils changent le sens d’un nom, les paquetages font office de classes, et le même module est chargé par des scripts répartis dans de nombreux répertoires. Une recherche textuelle trouve les chaînes, mais ne dit pas à un agent quelle sous-routine un script appelle réellement.
Maguyva donne à l’agent paquetages, sous-routines, imports et constructeurs sous forme de structure, pour qu’il circonscrive un changement avant de toucher au code.
Maguyva couvre .pl, .pm, .t, .pod et .perl. Les sous-routines sont extraites comme fonctions et les déclarations package comme classes ; les sigils ($, @, %, &, *) sont retirés des noms de définition, de sorte que variables et sous-routines se retrouvent par leur nom nu.
Les imports proviennent des instructions use, require et package. Les appels de méthode de la forme Class->new comptent comme instanciation, et bless et tie sont conservés volontairement dans le graphe d’appels. Le graphe enregistre aussi l’héritage, les surcharges, les références de type, les lectures et écritures, et les levées d’exceptions.
Environ 189 fonctions intégrées (print, open, die, warn et similaires) sont filtrées des relations d’appel pour faire ressortir le code du dépôt.
Exemples de prompts pour agents
- « Quels scripts utilisent
Billing::Invoice, et lesquelles de ses sous-routines appellent-ils ? » (dependency_search en incoming)
- « Où
Report::Monthly est-il construit, et que se passe-t-il après ->new ? » (find_symbol, puis get_task_context)
- « Trouve tous les fichiers de test qui exercent
Auth::Session. » (text_pattern_search, puis find_symbol)
Limites connues
- Les méthodes Perl classiques sont de simples déclarations
sub dans un paquetage ; seule la syntaxe dédiée plus récente method est donc classée comme méthode dans la recherche structurelle. Utilisez le préréglage functions pour le Perl orienté objet plus ancien.
- Les appels aux fonctions intégrées filtrées n’apparaissent pas comme arêtes du graphe. Utilisez
text_pattern_search quand il vous faut chaque appel à open ou print.
É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 le parc migre vers un autre langage de script, comparez avec le guide Python.