Tutoriel pour accélérer ses recherches sous Eclipse

| Aurélien Garnier (Soat) | Soat |

Chaque jour, un développeur effectue une bonne quantité de recherches dans ses sources et parfois de façon assez poussée. Trouver son information rapidement et avec des résultats pertinents est une nécessité.

Or, les recherches sous Eclipse peuvent parfois être lentes voire décourageantes, surtout si le nombre de projets et donc le nombre de fichiers est très élevé.

Cet article présente les différentes solutions de recherche dont une proposition d'amélioration qui changera certainement votre quotidien…

Il existe plusieurs types de recherches dans Eclipse, nous allons nous concentrer sur deux des plus courants : la recherche Java et la recherche de texte.

Pour réagir au contenu de cet article, un espace de dialogue vous est proposé sur le forum Commentez .

- Titre : Tutoriel pour accélérer ses recherches sous Eclipse

- Auteurs : Aurélien Garnier (Soat), Soat

- Parution : 17 février 2014

- Licence : Copyright ® 2014 SOAT. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. La recherche d'éléments Java

- II. La recherche de texte

- III. Les ressources dérivées

- III-A. Solution 1 : le script GroovyMonkey

- III-B. Solution 2 : le plugin Eclipse Target Derivator

- IV. Conclusion

- V. Remerciements

I - La recherche d'éléments Java

Pour une recherche d'éléments Java, qui reste à mon avis celle que l'on réalise le plus, il existe plusieurs possibilités.

- La recherche de types (Ctrl + Maj + T). Utile pour trouver une classe dont on connait (à peu près) le nom, merci les wildcards et le camel case !

- Le menu référence, accessible avec clic droit sur un élément dans l'éditeur. Permet de trouver ses occurrences dans le workspace (Ctrl + Maj + G), dans le projet ou dans la hiérarchie.

- La déclaration dans le workspace (Ctrl + G). Pour trouver toutes les occurrences déclarées d'un élément (et non les appels comme le fait le raccourci précédent).

- La outline rapide (Ctrl + O). Pour afficher tous les membres de la classe Java en cours. Note : en appuyant sur O une seconde fois, la outline se complète avec tous les membres Java des classes parentes, terrible non ? ;)

- La hiérarchie de classes (F4 ou Ctrl + T pour la vue rapide).

- L'appel hiérarchique ascendant et descendant de méthodes (Ctrl + Alt + H). Utile pour remonter ou descendre le long de la pile d'appels d'une méthode.

- etc.

Bref, tout un panel de raccourcis et de menus sont là pour nous faciliter la vie.

Il en existe d'autres, on pourra les trouver dans la section Keys des préférences d'Eclipse.

II - La recherche de texte

Le module de recherche de texte d'Eclipse est accessible via le menu Search ou encore avec la combinaison Ctrl + H.

Nous allons nous intéresser plus précisément à l'onglet File search.

Cet onglet permet de trouver une chaîne de caractères, statique ou en mode expression régulière et dispose même dans le second cas, d'un assistant à la composition d'une expression valide (Ctrl + Space).

Le point clé de l'utilisation de ce module est le périmètre de recherche. En effet, le champ File name patterns permet de définir quels seront les types de fichiers dans lesquels la recherche sera effectuée.

Il est possible de saisir plusieurs types pour élargir ses chances de trouver sa chaîne.

Enfin le champ Scope va permettre de restreindre le périmètre de la recherche (you don't say ?)

Les items proposés sont les suivants :

- Workspace va cibler l'ensemble des projets : sera donc plus lent que les autres ;

- Selected resources va cibler uniquement la ressource en surbrillance d'une vue active, qui peut être un fichier, un package, un projet, un working set ou simplement le fichier source en cours d'édition ;

- Enclosing projet est bien utile lorsqu'on est dans un fichier source, et que l'on ne veut pas rechercher plus loin que le projet conteneur ;

- enfin, Working set permet de sélectionner les éléments qui regroupent des projets de façon logique (par exemple : Front, Back, Database, etc).

III - Les ressources dérivées

Passons maintenant à la petite subtilité du module : l'exclusion de ressources dérivées.

La notion ‘derived' est matérialisée par un flag positionné sur un fichier ou un dossier du workspace et qui signifie que l'élément ne fait pas partie des sources et a été généré par un processus (build, compilation, transformation, etc).

On peut retrouver ce flag en accédant aux propriétés de l'élément, section Resource.

La recherche de texte décrite dans le paragraphe précédent permet de tenir compte de cette notion.

Par défaut, tout ce qui est dérivé ne sera pas inclus dans les résultats de recherche, ce qui est plutôt souhaité.

Cependant, on aimerait certainement exclure quelques dossiers de type target, build ou encore out des recherches.

Lors d'un clean install avec Maven par exemple, ces répertoires sont recréés, sans le flag Derived coché…

Il est évident que le développeur ne va pas cocher chaque flag Derived de chaque répertoire, surtout que l'opération devra être répétée à chaque exécution de maven (autrement dit, plusieurs fois par jour).

Je propose donc 2 solutions pour remédier à cela : l'utilisation d'un script python et un plugin déjà tout fait. À vous de choisir !

III-A - Solution 1 : le script GroovyMonkey

Cette approche consiste à exécuter un script, qui va repérer un ensemble de ressources et les marquer comme Derived.

Elle a l'avantage de pouvoir définir autant de règles que souhaitées pour cibler cet ensemble.

Premièrement, il est nécessaire d'installer le plugin Eclipse Groovy Monkey avec l'URL : http://groovy-monkey.sourceforge.net/update

Une fois l'installation et le redémarrage effectués, un menu est apparu : Groovy Monkey.

Créer un nouveau script nommé MakeTargetDerived_Script.gm et y coller le code suivant :

1. /*

2. * Menu: New Groovy Monkey Script

3. * Script-Path: /TestGroovyMonkey/MakeTargetDerived_Script.gm

4. * Kudos: aga

5. * License: EPL 1.0

6. * LANG: Python

7. */

8. # Install GroovyMonkey from :

9. # http://groovy-monkey.sourceforge.net/update

11. files = resources.filesMatching(".*/pom\\.xml")

13. for file in files:

15. targetFolder = file.eclipseObject.parent.findMember("target")

16. outFolder = file.eclipseObject.parent.findMember("out")

18. if targetFolder != None:

19. targetFolder.setDerived(True)

20. if outFolder != None:

21. outFolder.setDerived(True)

Dans cet exemple, on va sélectionner tous les fichiers pom.xml et trouver toutes les ressources nommées “target” et “out”. Ensuite chaque item sera marqué Derived.

Pour l'exécuter, clic droit puis Run Script. That's it !

Ma préférence va à cette solution, pour sa plus grande flexibilité offerte par le scripting.

III-B - Solution 2 : le plugin Eclipse Target Derivator

Télécharger et installer le plugin depuis cet emplacement.

Redémarrer Eclipse, un nouveau bouton est apparu.

Un simple clic sur dernier et tous les dossiers générés par maven seront marqués Derived.

En fouillant un peu dans le source du plugin, on peut voir que la liste exhaustive des répertoires marqués est la suivante :

- target ;

- tmp ;

- temp ;

- bin ;

- bin-test ;

- test-output ;

- precompiled.

Après utilisation d'une de ces deux solutions, les recherches sont quasi instantanées !

IV - Conclusion

Nous venons de voir qu'il est possible de bien travailler ses recherches avec Eclipse, que ce soit par des raccourcis, des menus, des options ou encore des plugins. L'important est d'utiliser le bon outil pour trouver les bonnes ressources.

Connaître ses raccourcis peut également s'avérer très utile et permettra d'accroître sa productivité.

Bonnes recherches !

V - Remerciements

Cet article a été publié avec l'aimable autorisation de la société Soat.

Nous tenons à remercier Cédric Duprez pour sa relecture attentive de cet article et Mickaël Baron pour la mise au gabarit.