• [^] # Re: Oui et Non

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

    Ok, je vois mieux ton besoin :)

    Tu dois être devant une application alien avec 2000 fichiers qui s'incluent dans tous les sens... Toutes mes condoléances !

    Je n'étais pas sûr que tu décrives ce cas, je pensais plutot que tu souhaitait pouvoir afficher un "rapport" des dépendances des fichiers d'une grosse appli à toi (histoire de sortir un beau diagramme hiérarchique dont certains profs de dev raffolent). Le problème était, dans ce cas, plus simple car tu connais les écueils de ton code... Ce qui n'est pas ton cas.

    Sinon, c'est parfaitement possible, à condition de parser le code ; "reste à" bien coder ça pour que ça reste propre.

    Je dirais, moi, que ce n'est pas possible : observe mon exemple (toutes considérations de sécurité complètement mises à part, je me mets dans ta situation en découvrant une application que je ne connais pas encore) :

    les fonctions include() et ini_set() peuvent prendre leurs paramètres depuis des variables. En imaginant que seules ces fonctions peuvent permettre d'agir sur les dépendances entre les différents fichiers qui composent ton programme (ce qui n'est bien sûr pas le cas), l'analyseur de dépendances devrait parser le code à l'envers, en respectant les dépendances, pour traquer toutes les valeurs possibles de ces variables ? ca me parait dingue, voire carrément impossible dans le cas du trou de sécu typique : la variable est directement en provenance de l'utilisateur ($_GET, $_POST, $_COOKIE...).

    Quand à dire que ce genre de code se retrouve souvent, c'est vrai ; malheureusement. C'est crade, spaghettis, et potentiellement dangereux (si c'est mal encadré). Mais comme c'est un avis purement personnel (bien qu'appuyé par l'expérience), on ne va pas en faire un gâteau, hein ? ;-)

    Un de mes avis personnels, motivé par l'expérience : les programmes les plus efficaces en php sont ceux qui exploitent la souplesse des différentes fonctions "coup de bistouri" qui facilitent la vie (explode, implode, include, header...).

    Enfin, si ton appli ne rentre pas dans cette catégorie... On peut espérer qu'un analyseur de dépendances devrait faire très bien son boulot. Mais bonjour l'arrachage de cheveux si tu dois compter dessus et que ce n'est pas le cas !

    Pour info, je suis en train de bosser sur une appli qui intégrerait ce genre de fonctionnalités, voilà pourquoi j'ai bien réfléchi à la question.