Forum Programmation.autre Recherche des appels

Posté par  .
Étiquettes : aucune
1
26
déc.
2011

Bonjour,

je programme à mes heures perdues et je n'ai pas certains automatismes et certaines méthodes.
En ce moment je modifie un logiciel PHP qui est écrit plus ou moins en objet.
Parmi toutes les classes, beaucoup ont des fonctions membres avec des noms identiques. Par exemple dbaccess::open et usercase::open et smtp::open

Je veux modifier usercase::open
Avant cela je veux voir où est utilisé cette fonction. Alors je fais un grep et j'ai plein de résultats qui n'ont rien à voir avec la fonction voulue. Je suis obligé de vérifier manuellement chaque ligne issue de grep.
Si c'est une ligne $smtp->open je l'ignore, même si rien ne garanti que le nom ne soit pas trompeur.
Mais $id->open m'oblige à aller dans le fichier correspondant pour voir de quoi il s'agit. Avec 50 lignes comme ça, c'est carrément chiant.

Vous utilisez quelle méthode pour ce genre de chose ?

  • # IDE ?

    Posté par  . Évalué à 2.

    peut-être qu'un IDE évolué tel que Eclipse ou NetBeans serait capable de te montrer ça ?

    Envoyé depuis mon Archlinux

    • [^] # Re: IDE ?

      Posté par  . Évalué à 4.

      Netbeans, définitivement.

      • [^] # Re: IDE ?

        Posté par  . Évalué à 2.

        Merci pour l'info.
        Je viens de tester et ça n'est pas mieux que grep. Sauf que ça prends 44 Mo.

        Lorsque je lui demande de m'indiquer tous les appels à send() de la classe toto, il m'affiche les appels aux fonctions send() de toutes les classes.

        • [^] # Re: IDE ?

          Posté par  . Évalué à 2.

          il ne faut pas utiliser la focntionnalité de recherche de l'IDE, mais les notions de refactoring comme indiqué (rapidement) dans un autre commentaire :

          • ouvre le source de ta classe
          • clic droit sur le nom de la fonction/méthode que tu as l'intention de modifier
          • clic sur "Find usage"

          ça devrait te montrer tous les endroits où cette fonction/méthode est appelée dans ton projet

          Envoyé depuis mon Archlinux

          • [^] # Re: IDE ?

            Posté par  . Évalué à 2.

            C'est bien ce que j'ai fait.
            Ca me liste tout ce qui ressemble à xxx->send() et xxx::send() sans aucune distinction.
            Ca me sort par exemple:

            $count += $transport->send($message, $failedRecipients);
            $email->send($to,$subject,$message);
            
            

            La première ligne est un appel à la librairie Swift Mailer.
            La seconde ligne est un appel à la librairie PEAR.
  • # refactoring

    Posté par  (site web personnel) . Évalué à 4.

    Le mot clé est « refactoring ». C'est comme ça que les IDE appelle ce genre de fonctionnalité.

    Si rien n'existe déjà, il te reste à écrire un parser de PHP qui puisse te permettre de le faire.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

  • # Semantique?

    Posté par  (site web personnel) . Évalué à 3.

    Ce qu'il faut c'est un grep semantique. Je sais qu'il en existe un pour le C (Coccigrep).

    Peut-etre peut il etre etendu?

    Sinon, perso. je travaille avec des grep "recursif", en identifiant les noms des differentes instances qui m'interessent et en filtrant dessus, ou alors par inverse en faisant des greps inverses.

    PS: Excusez l'absence d'accent, clavier americain..

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.