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

Java Discussion :

Récupération de méthodes


Sujet :

Java

  1. #21
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Citation Envoyé par Nehmé Voir le message
    Si t'as beaucoup de temps, je pense que une façon de faire serai d'utiliser JavaCC pour créer un parseur qui te permettera d'analyser le corps de tes méthodes et voir quels sont les attributs modifiés.
    Tu pourras probablement trouver beaucoup de parseurs et grammaire existants pour Java mais tu dois les adapter pour ton besoin.
    Ensuite tu pourras combiner l'utilisation de la réflexion et ton parseur pour trouver ce que tu veux.

    Bon la parler c'est facile, je ne suis pas expert dans ce domaine mais je suis sure que ca se fais avec ca (peut être après que tu aies lu un livre sur les compilateurs ).
    Je pense qu'on parlede trouver ca au runtime et dans ce cas on n'a pas les sources -> ton javacc est inutilisable mais il faut analyser le bytecode.

  2. #22
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    bonjour,

    après pour analyser le bytecode tu a des outil pas mal comme ASM.
    mais bon tous ca reste quand même pas mal complexe ..

  3. #23
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Alors quelqu'un a une solution ?
    thelvin: arrête de philosopher

  4. #24
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Citation Envoyé par hibour Voir le message
    Je pense qu'on parlede trouver ca au runtime et dans ce cas on n'a pas les sources -> ton javacc est inutilisable mais il faut analyser le bytecode.
    Si c'est pour faire un plugin Eclipse, le code source est accessible.
    Il y a une API qui s'appelle JDT:
    http://help.eclipse.org/galileo/inde...w-summary.html
    très utile pour analyser le code java. (Merci à yann2 de me l'avoir montré)

  5. #25
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    Citation Envoyé par hibour Voir le message
    Alors quelqu'un a une solution ?
    thelvin: arrête de philosopher
    voila la solution:
    Citation Envoyé par Pill_S Voir le message
    Aucune chance... il faudrait analyser le bytecode de la méthode en question pour voir si (sous certaines conditions) elles peuvent faire muter l'objet.
    :p

  6. #26
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    De nombreux cas me semblent impossible à analyser, ne serait-ce qu'à cause de l'héritage.

    Tu analyse une méthode toto qui appelle une méthode machin qui ne fait aucune modification.
    Tu vas donc conclure que toto ne fait aucune modif non plus.

    Manque de bol, dans une classe fille, la méthode machin est redéfinie et modifie l'état. Donc toto n'est plus "clean" dans cette classe fille.

    A mon avis, tu pourras ne tirer de conclusions qu'avec des contraintes très strictes (pas d'appels à des méthodes non final ou non private).

  7. #27
    Membre très actif Avatar de unknow0
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 452
    Par défaut
    oO je ne vois pas le problème il faut de toute manière analyser chaque méthode pour toute les classes (hériter ou pas) et tirer des conclusion pour chaque class a pars
    ainsi la méthode toto sera clean dans la class mère est non-clean dans la class fille indépendamment l'une de l'autre.

  8. #28
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    Aucune chance... il faudrait analyser le bytecode de la méthode en question pour voir si (sous certaines conditions) elles peuvent faire muter l'objet.

    Mais théoriquement, toutes les méthodes qui ne renvoient pas de résultat font muter un objet. Car une méthode qui ne fait pas muter l'objet ni ne renvoie de résultat ne fait rien!
    La question étant de savoir si on fait muter l'objet sur lequel s'applique la méthode, c'est plutôt faux, ça peut modifier l'état d'un autre objet, ou faire du log par exemple.

  9. #29
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    La question étant de savoir si on fait muter l'objet sur lequel s'applique la méthode, c'est plutôt faux, ça peut modifier l'état d'un autre objet, ou faire du log par exemple.
    faire muter l'object courant c'est faire muter une de ses propriétés... après, la mutation peut être directe (affectation d'un champ) ou indirecte, mais ça reste une mutation...

    de toute façon c'est un faux débat, car le but étant de lister les méthodes qu'on doit tester car elles peuvent potentiellement changer l'état d'un objet, c'est pas vraiment exploitable dans le monde réel. Une méthode doit être testée si le code qu'elle contient est suffisament complexe pour risquer d'être incorrect (not "too simple to fail"). Enfin bon j'ai peut-être mal compris le but de ce post, mais perso je n'y vois aucun intérêt...

  10. #30
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 338
    Par défaut
    Je pense que la question posée est pertinente, son cas d'utilisation pour les tests est un peu absurde car le programmeur sait ce qui doit être testé ou non, mais on pourrai avoir besoin d'une tel opération pour savoir si une méthode est threadsafe par exemple (si on ne modifie aucune propriété par une méthode alors pas de risque de problème d'exclusion mutuelle)

Discussions similaires

  1. [MySQL] récupération id méthode get
    Par totot dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 04/06/2013, 19h18
  2. Méthode GET > Récupération avec des variables dynamiques
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 30/03/2007, 15h28
  3. Probleme de récupération méthode $POST
    Par cyberdevelopment dans le forum Langage
    Réponses: 8
    Dernier message: 18/07/2006, 16h08
  4. Réponses: 6
    Dernier message: 28/02/2006, 17h41
  5. Méthode récupération jeu de résultats en PHP
    Par Death83 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 15/01/2006, 13h58

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