IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Recherche d'appels à une classe


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 16
    Par défaut Recherche d'appels à une classe
    Bonjour,

    J'ai un peu du mal à formuler ma question, sans doute à cause de mon inexpérience avec python et en matière de développement en général, excusez moi si c'est un sujet récurrent que je n'ai pas trouvé via la recherche...

    J'ai un code python (environ 10k lignes de code réparties dans un soixantaine de classes) dans lequel je dois modifier une fonction qui fait appel à un librairie externe (remplacer un appel à du code java par un appel à un librairie python). Cette fonction formate sa sortie à partir du retour du code java. Je ne peux pas, pour diverses raisons, formatter le retour du python de la même manière. Du coup, je dois m'assurer que ce changement ne cassera rien dans le reste du code.

    Je me suis dit que le plus simple serait de retrouver tous les appels à cette fonction pour vérifier que ma modification serait compatible à ce qui est attendu.

    Le problème c'est que des fois c'est la fonction qui est appellée, parfois c'est une classe qui utilise un objet de la classe que je modifie et utilise des variables de cet objet et parfois c'est une classe qui appelle un objet qui provient d'une classe qui elle même utilise un objet de la classe que j'utilise... Bref, un sacré paquet de nouilles

    Est-ce qu'il y a un moyen de remonter, à partir d'une classe, à tous les appels qui lui sont faits, soit via ses méthodes, soit par héritage, soit par appel d'objet? Y'a surement plus simple que de parcourir tout le code manuellement non?

    J'ai essayé avec des profilers (cProfile et kcachegrind) mais ça ne fait pas vraiment ce que je veux, ça me dit qui appelle ais il faut que je trouve moi-même qui est susceptible d'être appellé, ce qui me ramène plus ou moins au point de départ.

    Merci.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Je ne peux pas, pour diverses raisons, formatter le retour du python de la même manière. Du coup, je dois m'assurer que ce changement ne cassera rien dans le reste du code.
    Pourquoi changer l'interface pour tous les appelants plutôt que de la modifier que pour ceux qui en ont besoin et supportent le nouveau format de sortie?

    Est-ce qu'il y a un moyen de remonter, à partir d'une classe, à tous les appels qui lui sont faits, soit via ses méthodes, soit par héritage, soit par appel d'objet? Y'a surement plus simple que de parcourir tout le code manuellement non
    Tous les IDE proposent une fonction plus ou moins fiable(*) permettant de trouver les usages de classe ou fonction.

    A défaut, une utilisation "systématique" de search/grep fonctionne aussi pour trouver les modules qui:
    - "importent" celui ou est définie la fonction,
    - "appellent" la fonction,
    C'est fastidieux si la fonction est appelée par "trop" de modules <=> n'est pas utilisée dans des cas bien définis.
    Mais cela donnera une indication le nombre de "clients" à comprendre, ré-écrire, re-tester si vous changez l'interface pour tous.

    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Appeler une classe dans un autre package
    Par Nasky dans le forum Langage
    Réponses: 6
    Dernier message: 21/02/2007, 16h06
  2. [Débutant][Appli]Appeller une classe.
    Par Rom780 dans le forum Langage
    Réponses: 10
    Dernier message: 18/02/2006, 11h48
  3. [Package] Appel à une classe
    Par GLDavid dans le forum Langage
    Réponses: 2
    Dernier message: 15/02/2006, 12h49
  4. Appeler une classe CSS avec Javascript
    Par p0Kep0K dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/02/2006, 14h50
  5. Réponses: 14
    Dernier message: 15/12/2005, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo