• # Grosse bidouille

    Posté par . En réponse au journal graphe de dépendances d'un source php. Évalué à 4.

    Salut,

    J'ai fait un script Perl très sale pour réaliser ce genre de chose à l'époque ou je développais du PHP en stage (y'a 2, 3 ans maintenant). En gros j'avais une applii assez grosse dans laquelle j'avais des problèmes de doubles inclusion de fichier à différent niveau.

    En gros, le code Perl est vraiment une honte : utilisation d'un algo maison pour le parsing des arguments (au lieu d'utiliser GetOpt), code GTK mélangé au code de recherche ... Et j'ai un peu la flemme de le refaire propre :) (d'autant plus que je ne fais plus de PHP).

    Voici comment il marche, tu lui passes en paramètre le répertoire racine de ton projet, il va parser tous les fichiers '.php', regarder les 'include|require|require_only|....' (si tu veux en rajouter va voir ligne 360). S'il y a une variable dans le include du genre 'include("$toto/titi.php")' il va te demander de rentrer la valeur de $toto et la stockera jusqu'à la fin de la génération des arbres (attention à ne pas avoir deux fois le même nom de variable avec des valeurs différentes). Au final, il aura construit les arbres d'inclusions et de dépendances, ces arbres peuvent être générés au format ASCII ou LaTeX (pratique pour les rapports) ou bien être affichés dans une fenêtre GTK. Je te conseille ce dernier mode bien plus pratique. Enfin l'application te demande si tu veux enregistrer la configuration des variables dans un fichier afin d'éviter de retaper toutes les variables de type $toto la prochaine fois (option -c ).

    Tu trouveras l'archive de ReqInc sur http://msalvat.free.fr/reqinc.tar.gz(...) . Il n'y a que deux fichiers. Pour lancer le script reqinc.pl je te conseille de te placer dans le répertoire de ton site. Voici la ligne de commande qui a servi à générer ce screenshot http://msalvat.free.fr/reqinc.png(...) :
    perl -I /où/est/decompréssé/l/archive/ /où/est/decompréssé/l/archive/reqinc.pl ./ -c /tmp/mon-site.cfg -t gtk

    Bien sûr le fichier /tmp/mon-site.cfg a été généré avant par l'application en mode interactif. Dans l'interface GTK il faut bien faire attention : dans le screenshot on a l'arbre d'inclusion (voir titre de la fenêtre) il faut appuyer sur le bouton "Arbre de dépendance" pour switcher sur l'arbre de dépendance, et vice versa.

    En espérant que ça te serve ... bien sûr je met se fichier sous GPL si qqun à envie de le modifier (bonne chance pour comprendre le code) :).