Javadoc : 3000 sources à parser dans 125 répertoires [résolu] - Java - Programmation
Marsh Posté le 15-09-2003 à 12:59:09
[HS]
C'est quoi cette signature ?
Citation : MELANGEZ MOUIN MOUIN >( |
[/HS]
Marsh Posté le 15-09-2003 à 13:01:57
Taiche a écrit : j'ai 125 répertoires contenant un total de 3000 sources java. |
ça sent la retro doc d'une usine à gaz non modélisée et developpée la tete dans le guidon, non ?
Marsh Posté le 15-09-2003 à 13:04:34
matthias a écrit : |
Non. Enfin ui, c'est une usine à gaz mal foutue et tout, mais c'est absolument pas ça qui fait qu'il y a 125 répertoires de sources. C'est lié aux contraintes de dev de ma boîte.
Marsh Posté le 15-09-2003 à 13:19:07
Taiche a écrit : |
c'est hallucinant que les 125 rep soient pas decouper en API qd meme , sinon pour resoudre ton pb je crois qu'il n'existe malheureusement pas d'equivalent à l'argument -Xmx (redefinir la taille du heap) de la JVM pour javadoc, donc je vois pas trop comment faire ... a part faire du refactoring de l'usine ... mais bon c'est mission impossible à mon avis (sauf si tu as tt ton temps pour ça )
Marsh Posté le 15-09-2003 à 14:01:48
matthias a écrit : |
Rah mais si, y a des packages et tout, c'est juste que les sources sont pas tous dans le même rep ! Au runtime, c'est OK, tout est dans des joulis .jar avec des joulis packages mais au build time, c'est l'enfer.
matthias a écrit : |
Ui non mais ce que je fais c'est lancer un prog Java qui appelle com.sun.tools.javadoc.Main donc le problème de mémoire vient de mon prog à moi. Ca c'est pas le souci, j'peux bouger la taille. Mais ce qui m'inquiète c'est le temps que l'utilitaire passe dessus (25 heures pour 3000 sources, faut pas déconner).
Marsh Posté le 15-09-2003 à 14:37:31
peut etre en passant par ANT
si t as un probleme de memoire c'est fort possible qu'il reprennent la ou il s'etait arrété
Marsh Posté le 15-09-2003 à 14:42:54
veryfree a écrit : peut etre en passant par ANT |
Ba j'ai pas essayé ant mais le souci c'est que mes 125 répertoires de sources ils font péter la ligne de commande Y a trop de caractères dans ma ligne de commande pour qu'elle soit exécutée correctement donc plantage.
Maintenant si Ant permet de s'affranchir de ça, pourquoi pas
Marsh Posté le 15-09-2003 à 14:45:12
ça fait jamais que 4x que je te le repete
sinon c'est ptet ton "prog" qu'est foireux aussi
Marsh Posté le 15-09-2003 à 14:47:11
the real moins moins a écrit : ça fait jamais que 4x que je te le repete |
Ba non, j'printe la ligne de commande qui est censée faire le taf et je la trouve correcte (j'vous épargne le copier/coller ). Le prog stagne à partir du moment où j'appelle la classe de Sun
Bon ba j'vais voir pour Ant, alors Y a un tuto bien fait quelque part ?
(pis ça fait que 2 fois que tu l'dis, pas 4 )
Marsh Posté le 15-09-2003 à 14:48:01
voila ce qu'on a fait pour jchatirc http://cvs.sourceforge.net/cgi-bin [...] /build.xml
Marsh Posté le 15-09-2003 à 14:52:29
veryfree a écrit : voila ce qu'on a fait pour jchatirc http://cvs.sourceforge.net/cgi-bin [...] /build.xml |
Marsh Posté le 15-09-2003 à 14:53:28
Ba quand on voit l'auteur du fichier, de toute façon...
veryfree : merci
Marsh Posté le 15-09-2003 à 15:08:50
Bon ba c'est gentil Ant mais à première vue, dans le noeud sourcepath, l'attribut "path" je lui mets quoi comme valeur ? Passke si j'dois récupérer les 125 répertoires de sources, ça revient au même que de le lancer tout seul, hein
Marsh Posté le 15-09-2003 à 15:30:51
qu'est ce qu'il a mon build hein
t'es en admiration c'est ca?
Marsh Posté le 15-09-2003 à 15:31:14
Taiche a écrit : Bon ba c'est gentil Ant mais à première vue, dans le noeud sourcepath, l'attribut "path" je lui mets quoi comme valeur ? Passke si j'dois récupérer les 125 répertoires de sources, ça revient au même que de le lancer tout seul, hein |
y a un répertoire racine qd même?
Marsh Posté le 15-09-2003 à 15:36:08
DarkLord a écrit : |
Ouais, c'est pas sur 125 machines différentes
J'ai tous mes sources dans un répertoire. Mais javadoc, si on lui file le rep racine, il envoie chier en disant qu'il trouve pas com.maboite.package.MaClasse.java. Forcément.
Marsh Posté le 15-09-2003 à 15:39:23
Taiche a écrit : |
euh mais il n'empeche tu n'as pas, à un moment donné
com
ta_boite
package1
package2
....
org
ot_chose
....
et lancer javadoc à partir de ce rép là? parce que bon 125 rep différents aussi
Edit: et non ant ne va pas, par magie te trouver tes répertoires, c'est un peu normal. Cela dit y a peut etre moyen de les définir proprement avec une boucle ou un fileset
Marsh Posté le 15-09-2003 à 15:43:39
DarkLord a écrit : |
Non justement, j'ai pas ça
Sinon j'me ferais pas chier à construire la ligne de commande récursivement, hein
DarkLord a écrit : |
C'est exactement mon problème
L'arborescence est du type :
[Repertoire]
[Fils1]
[src]
[com]
[maboite]
...
[Fils2]
[src]
[com, etc...]
[Fils3]
[src]
[com, etc...]
Voilou C'est que du bonheur en bâton
Marsh Posté le 15-09-2003 à 15:44:30
DarkLord a écrit : |
J'me doutais qu'y avait pas de magie, mais bon, vu l'insistance de la foule en délire, j'y ai cru un bref moment
Marsh Posté le 15-09-2003 à 16:01:18
Taiche a écrit : L'arborescence est du type : |
Bah du coup, si chacun des fils étaient indépendants les un des autres, pourquoi ne pas les traiter séparément ? S'ils sont par contre interdépendants, pourquoi ne pas en "fusionner" ?
Marsh Posté le 15-09-2003 à 16:02:24
Krueger a écrit : |
cf mon premier post
Y a des sources qui vont dans le même package que d'autres mais qui sont dans deux répertoires fils différents. La teuf, quoi
Marsh Posté le 15-09-2003 à 16:15:37
Taiche a écrit : |
mais pourquoi ont il fait ca
Marsh Posté le 15-09-2003 à 16:17:49
veryfree a écrit : |
C'est l'organisation des sources de la boîte, cherche pas
On est 3000-4000 à livrer du code tous les jours donc y a une organisation différente qui fait que c'est plutôt bien foutu pour les livraisons, les synchros, etc... mais pour la génération de doc c'est
Marsh Posté le 15-09-2003 à 18:07:02
Et juste pour être un peu lourd : tu pourrais pas tout simplement faire une copie du source avec une arbirescence plus simple (c'est à dire copier le contenu des fils1 fils2... dans un même rep) ?
Marsh Posté le 15-09-2003 à 18:11:55
R3g a écrit : Et juste pour être un peu lourd : tu pourrais pas tout simplement faire une copie du source avec une arbirescence plus simple (c'est à dire copier le contenu des fils1 fils2... dans un même rep) ? |
Mmmmm... p'têt bin qu'oui, faut voir
J'expérimente un autre truc là (j'me demande si c'est pas l'option -subpackages qui met tout par-terre) donc j'verrai après. Merci
Marsh Posté le 15-09-2003 à 18:16:28
ah ouais et juste un truc aussi : si tu virais le "-quiet", tu pourrais pas en savoir un peu plus sur ce qui se passe ?
Marsh Posté le 15-09-2003 à 18:19:00
R3g a écrit : ah ouais et juste un truc aussi : si tu virais le "-quiet", tu pourrais pas en savoir un peu plus sur ce qui se passe ? |
Ba non, justement, passke j'avais foutu l'option -verbose et ça m'avait pas mis plus de traces (toujours scotchage à 100% CPU) mais par contre, les erreurs de javadoc (genre "j'ai pas trouvé telle classe, etc..." ), j'en ai eu à la pelle
Marsh Posté le 15-09-2003 à 18:20:10
Taiche a écrit : |
faudrait un -debug ....
Marsh Posté le 15-09-2003 à 18:23:14
R3g a écrit : |
C'est pile c'que j'ai pensé la semaine dernière
Au pire j'irai poser la question chez Sun Si c'que je tente fonctionne, c'est que c'est l'option -subpackages (présente depuis la 1.4 seulement... donc peut-être pas encore optimisée) qui se vautre bêtement et là hop, bug report chez Sun
Marsh Posté le 15-09-2003 à 19:34:20
Bon alors j'crois qu'c'est résolu : au lieu de l'option -subpackages, j'ai collé les noms des packages un par un et là il a l'air de s'y faire. En tout cas, ça me bouffe de la mémoire comme pas permis (140 Mo environ, faut foutre un gros heap sinon le process se viande ) et tout, mais ça tourne
J'vais aller frapper chez Sun pour voir s'ils sont au courant du problème ou si c'est normal pis on verra bien
Merci à tous ceux qui m'ont suggéré quelques pistes
Quelques chiffres pour le fun :
125 répertoires de sources, 2966 fichiers sources, un index-all.html de 10 724 Ko (:sol, temps de gén╬ration de 15 min environ (enfin ça c'était le coup où j'ai eu une OutOfMemoryError ; je pense que ça dépassera pas la demi-heure pour la totalité). Il me faut l'option -Xmx256m pour lancer mon prog qui lance l'utilitaire de doc sinon ça se vautre
J'le f'rai tourner la nuit, hein
Marsh Posté le 15-09-2003 à 19:36:06
Taiche a écrit : Bon alors j'crois qu'c'est résolu : au lieu de l'option -subpackages, j'ai collé les noms des packages un par un et là il a l'air de s'y faire. En tout cas, ça me bouffe de la mémoire comme pas permis (140 Mo environ, faut foutre un gros heap sinon le process se viande ) et tout, mais ça tourne |
leger a charger dans le navigateur
Marsh Posté le 15-09-2003 à 19:39:59
chrisbk a écrit : |
C'est clair, j'ai pas encore osé
En direct live, voici les dernières stats du truc qui tourne sans planter :
avec un -Xmx256m le truc tourne en 1 min 30
3200 fichiers générés dont le fameux index-all.html
Total : 70 Mo
Et ça c'était que pour le premier des deux produits... celui pour lequel y a le moins de doc à générer Demain sera fun
Marsh Posté le 15-09-2003 à 19:57:06
Taiche a écrit : |
une minute de silence pour le gars qui devra lire c'te doc
Marsh Posté le 15-09-2003 à 12:26:16
Coucou les gens
Alors vala : j'ai 125 répertoires contenant un total de 3000 sources java. J'ai tous ces fichiers en local sur ma machine qui est un P4 2,4 GHz et 1 Go de RAM et je veux générer la doc de tout ce petit monde. Donc je lance la ligne de commande :
javadoc -quiet -d E:\MonRepertoireDeDestination -sourcepath <insérer ici les 125 répertoires de sources> -subpackages com: org
Et là, le process part en 100% CPU (sans bloquer le PC, hein), j'le laisse tourner 25 heures et paf, OutOfMemoryError Pour la mémoire, c'est pas grave, ça s'change mais :
* pourquoi 25 plombes pour 3000 sources alors que pour une centaine ça prend même pas une minute ?
* y a-t-il un moyen autre que ce que je fais pour générer cette doc ? J'me plante peut-être à un endroit dans la ligne de commande ou autre mais j'vois pas.
Remarques :
* pour ceux qui me diraient de couper la doc en plusieurs bouts, la réponse est : "ce n'est pas possible parce que du coup je perds les liens entre classes et javadoc ne permet pas actuellement de merger les différents bouts".
* sur le même sujet, réponse de mouinmouin qui dit :
d'un autre côté, je suis pas sur qu'il soit "relevant" (en français???) de generer de la doc pour 3000 classes à la fois. a priori là dedans doit y'avoir plusieurs api (normalement) bien séparées, et il me semblerait plus sain d'en avoir les docs séparées.
Je suis d'accord mais pas dans ce cas. Je n'ai aucun moyen de détecter quels sont les bouts qui vont "ensemble" et les autres. Il peut très bien y avoir deux sources d'un même package dans 2 répertoires complètement différent
Voilou, en espérant des suggestions nombreuses et constructives
EDIT pour Mouinmouin : pour "relevant" on peut dire "avisé" ou "judicieux"
EDIT : modif du titre
Message édité par Taiche le 15-09-2003 à 19:35:21
---------------
Everyone thinks of changing the world, but no one thinks of changing himself | It is the peculiar quality of a fool to perceive the faults of others and to forget his own | Early clumsiness is not a verdict, it’s an essential ingredient.