[java] génération automatique des "import" ?

génération automatique des "import" ? [java] - Java - Programmation

Marsh Posté le 14-12-2004 à 16:34:58    

Existe-t-il un programme (sous linux) qui remplacerait les :
import java.util.*;
 
par des import des classes effectivement utilisées dans le .java, par exemple :
 
import java.util.Hashtable;
import java.util.Vector;
...

Reply

Marsh Posté le 14-12-2004 à 16:34:58   

Reply

Marsh Posté le 14-12-2004 à 16:42:16    

Eclipse peut faire ça :
 
 -> Organize Imports

Reply

Marsh Posté le 14-12-2004 à 16:57:17    

Euh il faudrait que j'ouvre les fichiers un par un avec eclipse :|
Sans compter que je n'ai pas Eclipse et je n'aime pas installer de trucs trop lourds et anti-ergonomiques.
Je vais chercher avec "organize imports" comme mots clés, j'aurais ptet plus de chance que précédemment :)

Reply

Marsh Posté le 14-12-2004 à 17:06:22    

ça me dit quelque chose cette histoire... Il me semble que des collègues utilisaient une tâche ant pour "harmoniser" leur code avant de livrer. Je demande.

Reply

Marsh Posté le 14-12-2004 à 17:28:16    

Euh je viens de lancer Eclipse...
Le "Organize Imports" était grisée (inaccessible).
J'ai essayé de regarder dans le menu Preferences voir si on pouvait régler quelque chose.
Comme je ne trouvais pas, je suis retourné sous Mozilla.
Ca a commencé a swapper un peu.
Quand je suis revenu sous Eclipse, le curseur de la souris s'est figé, le disque s'est mis a crier. Quelques secondes plus tard tout est devenu noir : j'ai été deconnecté de ma session X...
Je vais plutôt me faire un pti script perl ou une macro Emacs, ça me prendra même pas une heure.

Reply

Marsh Posté le 14-12-2004 à 18:13:11    

Done.

Code :
  1. #! /usr/bin/perl -w
  2. # fastjar tvzf toto.jar | grep .class | grep -v '\$' | sed -e "s:.class::" -e "s:/:.:g"
  3. # >> ~/.jmport
  4. #
  5. # Usage: jmport fichier.java
  6. my %t;
  7. my %imp;
  8. my %used;
  9. open (DATA, "$ENV{HOME}/.jmport" );
  10. while (<DATA> ) {
  11.     chop;
  12.     if (/\.([A-Z][^.]+)$/) {
  13. $t{"$1"} = $_;
  14.     }
  15. }
  16. while (<> ) {
  17.     if (/import\s+(\S+)\.\*\s*;/) {
  18. $imp{$1} = 1;
  19.     }
  20.    
  21.     if (/[ \t(]([A-Z][A-Za-z0-9]+)/) {
  22. my $i = $t{$1};
  23. if ($i) {
  24.     $i =~ /^(.*)\.([A-Z][^.]+)$/;
  25.     if ($imp{$1}) {
  26.  $used{$i} = 1;
  27.     }
  28. }
  29.     }
  30. }
  31. foreach my $key (sort keys %used) {
  32.     print "import $key;\n";
  33. }


Reste plus qu'à mettre au propre :)


Message édité par arsunik le 14-12-2004 à 18:14:24
Reply

Marsh Posté le 14-12-2004 à 21:33:50    

je vois pas comment un script perl peut analyser une classe et savoir que c une collection qu'il faut mettre à la place d'un * ...
 
tous les IDE font ce que tu veux...t'a Eclipse, Netbeans, IDEA, jBuilder, etc...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 15-12-2004 à 00:04:32    

Tu oublies jde !
Comme c'est le seul sous Emacs à ma connaissance, c'est le seul que je pourrais avoir envie d'utiliser.
Quant au script perl son principe est simple :
_ construire la liste de tous les import possible.
_ répérer tous les "import *" au début.
_ chercher tous les mots commençant par une majuscule dans le fichier et regarder si ce mot est dans la liste des import. Ensuite on vérifie que cet import était dans les "import *" du début.
 
Bon ok ce n'est pas parfait, ça peut rajouter des imports inutiles et ya meme un bug quand deux classes ont le meme nom dans la liste des imports mais j'avais plus de 50 fichiers à traiter et j'allais pas les ouvrir un par un dans un ide...

Reply

Marsh Posté le 15-12-2004 à 00:46:43    

et pkoi tu bosses pas sous un IDE ??? c très pratique en java...t'a tt sous la main, ca gère le classpath, t'a des fonctions hyper avancées de refactoring, etc...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 15-12-2004 à 07:25:04    

Jubijub a écrit :

et pkoi tu bosses pas sous un IDE ??? c très pratique en java...t'a tt sous la main, ca gère le classpath, t'a des fonctions hyper avancées de refactoring, etc...

ouais, puis après t'es comme un con, parce qu'avec toute la bonne volonté du monde, t'arrives pas à lancer ton application sans passer par ton IDE.

Reply

Marsh Posté le 15-12-2004 à 07:25:04   

Reply

Marsh Posté le 15-12-2004 à 10:03:35    

Jubijub a écrit :

et pkoi tu bosses pas sous un IDE ??? c très pratique en java...t'a tt sous la main, ca gère le classpath, t'a des fonctions hyper avancées de refactoring, etc...


 
Hé ben non, je fais mes ptites fonctions Emacs à la main et je compile avec un Makefile (ant c'est trop lent !). En plus j'utilise jikes et fastjar et bizarrement ça va aussi vite à compiler que du c...

Reply

Marsh Posté le 15-12-2004 à 10:20:41    

objecteering, en mode imports optmisiées ....
 
[:neowen]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 15-12-2004 à 10:26:44    

Taz a écrit :

ouais, puis après t'es comme un con, parce qu'avec toute la bonne volonté du monde, t'arrives pas à lancer ton application sans passer par ton IDE.


 
 :whistle:  
Rien ne t'interdit, une fois développé ton projet sous Eclipse de lancé par toi même l'execution de ton projet.. juste un truc, Eclipse te permet de faire ça en 1 clic et donc tu passes 99% à programmer.
Le gain est d'autant plus enorme quand tu travailles en equipe et simultanement ..etc etc.
 
SHIFT+CTRL+o le raccourci pour organiser les dépendances.
SHIFT+i le raccourci pour indenter le code
SHIFT+d suppression de la ligne courrante
SHIFT+CTRL+c met en commentaire la ligne
...


Message édité par la viper le 15-12-2004 à 10:27:56
Reply

Marsh Posté le 15-12-2004 à 10:45:17    

C'est bien de savoir se démerder avec un éditeur de texte et un shell, c'est même indispensable à mon avis.
Mais travailler tout le temps de cette façon, c'est vraiment perdre un temps dingue ! Ne serait-ce que pour du debugage ...
 
et quand t'es sous un IDE, les imports s'ajoutent automatiquement => tu n'as même plus à t'en soucier !


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-12-2004 à 11:11:53    

Taz a écrit :

ouais, puis après t'es comme un con, parce qu'avec toute la bonne volonté du monde, t'arrives pas à lancer ton application sans passer par ton IDE.


 
j'allais dire que tu avais tort et puis http://forum.hardware.fr/forum2.ph [...] 10#t923628 :/


---------------
IVG en france
Reply

Marsh Posté le 15-12-2004 à 11:38:58    

Pour revenir au sujet de départ, j'ai trouvé des tâches Ant qui peuvent être utiles:
-CleanImports
-Checkstyle  
 
http://ant.apache.org/external.html

Reply

Marsh Posté le 15-12-2004 à 12:00:12    

Merci, j'ai l'impression que CleanImports fait ce que je voulais, je vais regarder ça.
Checkstyle je l'utilise pour vérifier la conformité du code aux standards de programmation sun.
Ya quelques autres outils qui ont l'air sympas sur cette page :)

Reply

Marsh Posté le 15-12-2004 à 17:07:00    

je persiste pour l'IDE...
 
après, si tu bosses proprement en java, tu auras fait un script ant, que rien ne t'empeche de lancer depuis la ligne de commande, via batch ou autre
 
bref, c pas les solutions qui manquent...
 
maintenant si t'a une technique pour faire un gros refactoring qui implique plein de méthodes, avoir les imports auto, la mise en forme auto, les métriques du code, le déploiement auto, le lancement, le débugage, le profiling  en ligne de commande de façon plus rapide qu'avec un IDE, je prends...
 


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 15-12-2004 à 17:37:20    

J'ai bossé au sein d'une équipe ou tout le monde utilisait jbuilder sauf un irréductible qui bossait sous emacs. Il se trouve que son code était aussi nickel que le notre et qu'il respectait les délais autant que nous. En terme de gestion de conf, de production, etc... il n'y avait pas de différences entre son travail et le notre. Je ne vois donc pas pourquoi on l'aurait forcé à ne pas utiliser un outil qu'il maitrise super bien sous prétexte que nous on utilisait un IDE qui fait plein de choses utiles.
 
Par contre siouplait, ça:  

Citation :

t'arrives pas à lancer ton application sans passer par ton IDE


ça n'a pas de sens! C'est vrai que certains peuvent être lobotomisés après  une utilisation trop intensive d'un IDE, mais ce n'est certainement pas une généralité!  :non:

Reply

Marsh Posté le 15-12-2004 à 17:55:51    

le debugage il le faisait sous emacs ? et l'archivage sur le repository en ligne de commande ???  
 
enfin je sais pas ... avec bcp d'entrainement, on peut peut être très bien couper un steack avec un silex, mais pourquoi ne pas utiliser un couteau à steack ?


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-12-2004 à 22:16:17    

ArSuniK a écrit :

Hé ben non, je fais mes ptites fonctions Emacs à la main et je compile avec un Makefile (ant c'est trop lent !). En plus j'utilise jikes et fastjar et bizarrement ça va aussi vite à compiler que du c...


 
si lent que ça ?
 
sous eclipse, j'ai même pas le temps de faire remonter mon index après l'appui sur la touche "B" du ctrl+B à cause de l'inertie, que c'est déjà compilé, et j'ai pas une machine de compet', loin de là
 
 

Jubijub a écrit :

maintenant si t'a une technique pour faire un gros refactoring qui implique plein de méthodes, avoir les imports auto, la mise en forme auto, les métriques du code, le déploiement auto, le lancement, le débugage, le profiling  en ligne de commande de façon plus rapide qu'avec un IDE, je prends...  


+1

eclipse 3.0 a écrit a écrit :

Cher utilisateur. Tu as utilisé une méthode qui n'existe pas. Veux-tu que je la crée pour toi avec les arguments qui vont bien ?


Reply

Marsh Posté le 16-12-2004 à 10:05:21    

attends, je ne dis pas que tout le monde doit se passer d'un IDE. Simplement, sur un projet assez important, j'ai travaillé avec un gars qui coupait son steack avec un silex sans qu'on voit de différences entre son travail et le notre. Chacun son outil. Si il préfère le silex je vais pas lui imposer le couteau à bout rond (jbuilder :D)  
 
Sinon raytaller, t'es sous eclipse donc c'est normal, tout est compilé en live. Maintenant fait un "clean" sur ton projet et compile avec les deux méthodes, tu verras que, pour un projet un peu gros, ben ant est plus lent. Mais bon, avant qu'on vienne me lancer des couteaux  ;) je tiens à préciser que oui, ant c'est bien, mangez-en!  
 
Hm, j'ai l'impression qu'avec "vous" c'est: "Tout le monde sous windows+eclipse. Le premier qui sort du rang on lui coupe le bras. Non mais oh! on sait bosser nous!"  :lol:

Reply

Marsh Posté le 16-12-2004 à 11:13:32    

bha disons que je suis passé par cette phase "emacs&JDE rulez" et que j'ai découvert eclipse ... je pourrais jamais faire marche arrière ...
 
maintenant, dans ma boite, y a des mecs qui jurent que par ultraedit ou emacs pour le dev ... chacun fais ce qu'il veut, mais j'ai du mal à croire que ce soit un gain de temps.
 
peut être que si ton mec passait sur eclipse il serait encore plus rapide [:spamafote]
 
c'est un peu comme tout : faut essayer avant de dire que c'est bien ou pas :)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 16-12-2004 à 11:19:29    

idem : avant je codais sous JEdit ...je suis passé à Eclipse pour java ...un peu de force, je m'explique :  
- pour mon stage de maitrise, g du reprendre une appli codée sous jBuilder très salement...bref, je me perdais partout...et g trouvé la fonction géniale de get Declaration / get Usage d'Eclipse ...(présente sous IDEA et jBuilder il est vrai) ...c magnifique...
 
en fait au début faut pas se le cacher tu perds ton temps...faut comprendre la logique de l'IDE, la méthodologie ...mais une fois que tu l'as, je mets au défi qqn sous Emacs d'etre plus rapide qu'un utilisateur expériementé d'un IDE ...
 
surtout Eclipse qui se bonifie gravement avec le temps


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 16-12-2004 à 11:21:16    

benou a écrit :

le debugage il le faisait sous emacs ? et l'archivage sur le repository en ligne de commande ???  


 
Un programme bien écrit en Java ne bug pas :o
Pour l'archivage, tu parles de cvs ? si oui, ya un mode Emacs très bien fait :)

Reply

Marsh Posté le 16-12-2004 à 11:23:36    

et sous subversion ? ou perforce ? ou autre ?
 
--> pis un programme bien écrit tu peux vouloir le profiler qd meme ;)


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 16-12-2004 à 11:25:17    

raytaller a écrit :

si lent que ça ?


 
Oui, ant+javac c'est lent.
En modifiant seulement quelques fichiers, il lui faut plusieurs dizaines de secondes pour compiler.
Avec jikes, même pas une seconde.

Reply

Marsh Posté le 16-12-2004 à 11:40:17    

benou a écrit :


c'est un peu comme tout : faut essayer avant de dire que c'est bien ou pas :)


 
Cf plus haut, je viens d'essayer Eclipse, ça a fait ramer ma machine à fond (p4 1,6GHz & 256 Mo de RAM) et au bout de 3mn, ça m'a deconnecté de ma section X...
 
De toute façon, je suis quelque peu dépendant du Emacs-lisp :)
Et puis ça ressemblait à un clicodrome ce truc, je vois pas bien l'intérêt d'avoir des fenetres partout comme ça, yavait 30% de la surface seulement utilisée pour le code. Je me doute que ça se configure mais ça ne me donne pas une bonne première impression.
Bon ok, c'est pas un test très poussé :) Faudrait que je fasse un pti projet avec.

Reply

Marsh Posté le 16-12-2004 à 11:45:06    

Jubijub a écrit :

et sous subversion ? ou perforce ? ou autre ?


 
Je sais pas mais au pire suffit d'écrire un pti mode Emacs :D

Reply

Marsh Posté le 16-12-2004 à 11:51:11    

--> oui donc c ce qu'on se tue à te dire : Eclipse faut s'y habituer (tu peux passer en 1 double clic à 100% de la zone en code...)...pis les fenetre c l'outline, la console, enfin plein de trucs super utiles...
 
-->pis franchement, sauf ton respect, c une réponse à la con ;) : si en un temps donné tu dois faire un projet avec Perforce, tu devras prendre sur ce temps pour écrire ton mode ...sous eclipse tu fais le find plugin qui va bien ...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le 16-12-2004 à 12:09:17    

Oui mais ensuite tu diffuses le mode Emacs, chaque développeur dans le monde ne va s'amuser a refaire le sien !
 
D'ailleurs Eclipse c'est un logiciel libre ? Si oui, le plugin Eclipse qui va bien a surement été developpé par quelqu'un qui en avait eu besoin un jour :)


Message édité par arsunik le 16-12-2004 à 12:11:39
Reply

Marsh Posté le 16-12-2004 à 13:45:53    

Sinon tu fais ctrl+M pour avoir la fenetre en 100% sous eclipse, c tres pratique

Reply

Marsh Posté le 16-12-2004 à 15:12:06    

patachou a écrit :

Sinon tu fais ctrl+M pour avoir la fenetre en 100% sous eclipse, c tres pratique


 
Oh puree je connaissais pas, je continuais a double-cliquer sur le tab :D
 
Tant qu'on y est, t'aurais pas un truc pour avoir plus d'une ligne de tabs en haut ?

Reply

Marsh Posté le 16-12-2004 à 15:33:00    

Gonzoide a écrit :

Oh puree je connaissais pas, je continuais a double-cliquer sur le tab :D
 
Tant qu'on y est, t'aurais pas un truc pour avoir plus d'une ligne de tabs en haut ?


 
J'avoue que je l'ai trouvé par hasard ce racourci en me plantant  :D Des fois ca a du bon de se tromper...
Sinon je connais pas de "truc" pour mettre sur plus d'une ligne les tabs...

Reply

Marsh Posté le 16-12-2004 à 19:25:27    

c pas une préférence ?
 
sinon je connaissais pas le CTRL+M


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed