2012-10-19 1 views
4

J'ai une méthode dans ma classe de service qui exécute une mise à jour de mise en veille prolongée pour tout objet de domaine:Y at-il un moyen dans IntelliJ de faire une recherche d'utilisation d'une méthode et de la filtrer par des arguments spécifiques passés à la méthode?

update(Object obj) 

Il est appelé à partir de classes beaucoup dans mon projet pour différents types d'objets. Je voudrais trouver tous les usages de cette méthode quand il est appelé pour un objet de domaine spécifique. C'est à dire. méthodes d'appel en Wich exécute une mise à jour de mon objet Titre:

serviceClass.update(Title title) 

J'utilise IntelliJ comme mon IDE et je me demande s'il y a un moyen de trouver tous ces usages. Est-ce que quelqu'un a une IDEE comment faire cela?

Merci beaucoup à l'avance, Ronny

+1

Avez-vous essayé le [SSR] (http://wiki.jetbrains.net/intellij/Basics_of_working_with_structural_search)? – CrazyCoder

+0

cool, merci pour cet indice! J'ai essayé de créer un modèle de recherche approprié, mais j'ai trouvé une solution pour faire un test 'instance of' sur le paramètre method. Je dois le faire parce que la méthode pourrait être appelée comme 'objectDAO.update (t)' ou 'objectDAO.update (title)' ou tout autre paramètre nommant un de nos programmeurs juste eu à l'esprit ... Toute idée comment je pourrais gérer cela? – rontron

+1

Essayez le modèle existant 'method calls' et modifiez-le [comme ceci] (http://img145.imageshack.us/img145/2333/20121019170202.png). – CrazyCoder

Répondre

5

Je l'ai essayé avec un petit exemple de projet et a pu obtenir le comportement souhaité à l'aide Structural Search and Replace fonction avec le modèle method calls modifié:

enter image description here

$MethodCall$Contraintes textuelles, Le texte/regexp doit être défini sur update. Les méthodes t avec d'autres noms sont ignorées. $Parameter$Nombre d'occurrences, Le nombre minimal doit être défini sur 1 pour ignorer les appels de méthode sans paramètre ou plus.

Résultats:

results

+1

J'ai aussi ajouté une ** contrainte de texte ** _update_ pour la variable $ MethodCall $ n'obtient que des méthodes de mise à jour appelées avec title. Pour une raison quelconque, j'obtiens aussi des méthodes update() avec des arguments emtpy, mais juste quelques unes pour que je puisse vivre avec ça ... – rontron

+0

Merci pour le pointeur, je mettrai à jour la réponse. Si vous définissez le paramètre minimum count sur 1, il ne correspondra pas aux appels de méthode sans paramètres. – CrazyCoder

0

Si vous êtes intéressé par les chaînes d'appel qui fournissent une entrée spécifique dans une méthode donnée, essayez le Analyze-> Flux de données à commande Here.

Cela vous permet de voir quelles valeurs sont transmises, à travers quelles chaînes d'appel. Et, par exemple, où les valeurs null pourraient provenir.

Tout à fait une fonctionnalité puissante, vraiment.

Questions connexes