Page 1 sur 1

Comparaison de code source...

Posté : 20 mars 2007, 11:05
par zola2
Bonjour,

Est-ce que quelqu'un a déjà coder un comparateur de fichier, qui permet d'indiquer la difference entre 2 fichiers ?

Merci

Posté : 20 mars 2007, 11:19
par titerm
Non, mais les sources du diff unix sont aisément accéssible via le gnu par exemple.

Posté : 20 mars 2007, 11:20
par zola2
Ah, et je peux trouver ca ou ? c'est facile à traduire en php ?

Posté : 20 mars 2007, 12:20
par titerm
1/ ici http://www.gnu.org/software/diffutils/ ou sur un mirror ftp://ftp.cs.univ-paris8.fr/mirrors/ftp ... diffutils/
2/ Non, ca risque d'etre délicat voir très délicat... En même temps, php n'est pas fait pour ca non plus... On plus planter un clou avec un tournevis mais c'est pas forcement l'outil le plus adapté...

Posté : 20 mars 2007, 12:32
par Invité
Merci j'ai trouvé la solution, j'utilise passtrhu(); avec la commande diff et je recupere les infos :)
Trop bien :)

Posté : 22 mars 2007, 19:32
par leila
Bonjour
Dans le même sens de ce post, g besoin d un outil qui prendra en entrée un dossier pho(plusieurs fichers) et une fct et me donnera en sortie ts les fichiers contenant cette fonction, qqun a une idée?

Posté : 22 mars 2007, 20:31
par titerm
Je suis pas sur d'avoir compris ce que tu demandes... Il manque des mots et d'autre sont coupés....

Si tu veux une fonction qui te donne la liste des fichiers d'un repertoire, tu peux par exemple utiliser glob()

Posté : 23 mars 2007, 11:21
par leila
Bonjour, merci pour ta réponse titerm,
moi ce que je veux c'est un outil pas une fonction(soit un package à ajouter dans easyEclipse) qui me permet de chercher l'occurence d'une fonction au sein des fichiers.
Je m'explique davantage: mon but c'est lors d'une maintenance ou correctionde bug d'un code(une fonction par exemple) je veux savoir quels sont les autres traitement ou cette même fct est manipulé pour faciliter les test de regressions.
j espère que c clair mtn.
Merci qd même pour ton aide

Posté : 23 mars 2007, 14:25
par titerm
Ce que tu cherches s'appel grep, c'est dispo sous unix nativement, sinon, tu peux l'avoir sous windows via cygwin ou autre... Ca doit pas etre dur a trouver.

il faut combiner ca avec un find...

j'essairai de te répondre plus précisément plus tard si besoin est

Posté : 23 mars 2007, 19:36
par Invité
J'attend ta réponse titerm, et je te serai trés reconnaissante car j'en ai trés besoin.
Je te remercie encore une fois

Posté : 23 mars 2007, 20:47
par titerm
Bon, voila la réponse plus détaillée.

Soit tu passes par un ou des outils externes, soit tu utilises un editeur avec des fonctions de recherche avancé ( eclipse par exemple avec le package PDT dispo ici)

Dans cet editeur, une fois ton projet créé et tout tes sources importés au sein du projet, tu peux faire une recherche soit sur les déclaration des fonctions, soit sur les occurences via une recherche texte pour laquel tu pourra activer differentes option tel que les regexp.

Soit tu passes par des outils externes et donc par un shell (ou une boite dos sous windows)

Cela suppose que tu ait déjà récupérer des outils. Soit les outils basique en ligne de commande qui sont gratuits (grep et find) soit des outils sous windows qui peuvent etre gratuit ou pas.

La version ligne de commande en supposant que tu cherches la fonction foobar() c'est

find -name *.php -exec grep -l '\Wfoobar\s*?\(' {} \;

ca signfie que tu cherches tous les fichier php et que pour chacun tu execute la fonction grep avec ses paramentre (fin de la fonction délimité par le \; ).
Les argumenst de grep sont -l pour n'avoir que le nom du fichier qui match, une string représentant la regexp que tu cherches et les {} represent le fichier courant trouvé par le find.

http://gnuwin32.sourceforge.net/packages/findutils.htm
http://gnuwin32.sourceforge.net/packages/grep.htm

Dans les outils windows, je suis pas spécialiste mais y a au moins total-commander qui est capable de te faire des recherche avancés
http://www.ghisler.com avec des regexp correcte

Et après, tout ce que google peut te sortir comme outils tel que wingrep http://www.wingrep.com/ and co mais je viens de tester wingrep ou examine32 et je ne suis pas convaincu... Mauvaise gestion des regexps

Pour total commander, tu te met sur le rep qui contient les sources , tu fais alt-f7
*.inc *.php dans la liste des fichiers a matcher
tu coches find texte en bas ainsi que regex
et tu entres dans la pattern a rechercher la regexp que tu souhaites
\Wfoobar\s*?\( par exemple pout trouver les occurences de foobar(
\W signifie tout ce qui n'est pas une lettre ou un chiffre, \s un séparateur (espace, tab newline), le * de 0 a N et le ? fait que l'* matchera la plus petit occurence possible (ungreddy), enfin le \( pour matcher la parenthese

Good luck :)