[résolu] Javadoc : 3000 sources à parser dans 125 répertoires

Javadoc : 3000 sources à parser dans 125 répertoires [résolu] - Java - Programmation

Marsh Posté le 15-09-2003 à 12:26:16    

Coucou les gens [:ohello]
 
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 :

Citation :

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 [:boidleau] 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 :

Citation :

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 [:ddr555]
 
Voilou, en espérant des suggestions nombreuses et constructives :sweat:
 
EDIT pour Mouinmouin : pour "relevant" on peut dire "avisé" ou "judicieux" :o
 
EDIT : modif du titre :o


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.
Reply

Marsh Posté le 15-09-2003 à 12:26:16   

Reply

Marsh Posté le 15-09-2003 à 12:59:09    

[HS]
C'est quoi cette signature ?

Citation :

MELANGEZ MOUIN MOUIN >(


:lol:
[/HS]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

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 ?  :D

Reply

Marsh Posté le 15-09-2003 à 13:04:34    

matthias a écrit :


ça sent la retro doc d'une usine à gaz non modélisée et developpée la tete dans le guidon, non ?  :D  


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.


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 13:19:07    

Taiche a écrit :


y a 125 répertoires de sources


 
c'est hallucinant que les 125 rep soient pas decouper en API qd meme  :heink: , 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 )  :(  

Reply

Marsh Posté le 15-09-2003 à 14:01:48    

matthias a écrit :


c'est hallucinant que les 125 rep soient pas decouper en API qd meme  :heink: ,


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 :


 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 )  :(  


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).


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 14:37:31    

peut etre en passant par ANT :o
 
 
si t as un probleme de memoire c'est fort possible qu'il reprennent la ou il s'etait arrété :o
 

Reply

Marsh Posté le 15-09-2003 à 14:42:54    

veryfree a écrit :

peut etre en passant par ANT :o
 
 
si t as un probleme de memoire c'est fort possible qu'il reprennent la ou il s'etait arrété :o


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 [:banzai] 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 [:spamafote]


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 14:45:12    

ça fait jamais que 4x que je te le repete :sarcastic:
 
 
sinon c'est ptet ton "prog" qu'est foireux aussi :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

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 :sarcastic:
 
 
sinon c'est ptet ton "prog" qu'est foireux aussi :o


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 [:joce]). Le prog stagne à partir du moment où j'appelle la classe de Sun [:spamafote]
Bon ba j'vais voir pour Ant, alors :o Y a un tuto bien fait quelque part ?
 
(pis ça fait que 2 fois que tu l'dis, pas 4 :kaola:)


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 14:47:11   

Reply

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
 
 

Reply

Marsh Posté le 15-09-2003 à 14:52:29    


 
[:totoz]
 
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-09-2003 à 14:53:09    

Reply

Marsh Posté le 15-09-2003 à 14:53:28    


Ba quand on voit l'auteur du fichier, de toute façon... :o
 
veryfree : merci ;)


---------------
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.
Reply

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 ? [:mlc] 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 :heink:


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 15:30:51    


 
qu'est ce qu'il a mon build hein :o
t'es en admiration c'est ca? :o


---------------
Just because you feel good does not make you right
Reply

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 ? [:mlc] 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 :heink:


 
y a un répertoire racine qd même? [:mlc]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-09-2003 à 15:36:08    

DarkLord a écrit :


y a un répertoire racine qd même? [:mlc]


Ouais, c'est pas sur 125 machines différentes [:ddr555]
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.


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 15:39:23    

Taiche a écrit :


Ouais, c'est pas sur 125 machines différentes [:ddr555]
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.


 
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 [:totoz]
 
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 [:meganne]


Message édité par darklord le 15-09-2003 à 15:40:25

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 15-09-2003 à 15:43:39    

DarkLord a écrit :


euh mais il n'empeche tu n'as pas, à un moment donné
 
com
  ta_boite
    package1
     
    package2
    ....
org
  ot_chose
    ....


Non justement, j'ai pas ça [:boidleau]
Sinon j'me ferais pas chier à construire la ligne de commande récursivement, hein :o
 

DarkLord a écrit :


et lancer javadoc à partir de ce rép là? parce que bon 125 rep différents aussi [:totoz]


C'est exactement mon problème [:dawa]
L'arborescence est du type :
[Repertoire]
  [Fils1]
    [src]
      [com]
        [maboite]
          ...
  [Fils2]
    [src]
      [com, etc...]
  [Fils3]
    [src]
      [com, etc...]
 
Voilou [:ddr555] C'est que du bonheur en bâton :o


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 15:44:30    

DarkLord a écrit :


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 [:meganne]


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 [:spamafote]


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 16:01:18    

Taiche a écrit :

L'arborescence est du type :
[Repertoire]
  [Fils1]
    [src]
      [com]
        [maboite]
          ...
  [Fils2]
    [src]
      [com, etc...]
  [Fils3]
    [src]
      [com, etc...]
 
Voilou [:ddr555] C'est que du bonheur en bâton :o


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" ?


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 15-09-2003 à 16:02:24    

Krueger a écrit :


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" ?


cf mon premier post :o
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 :sweat:


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 16:15:37    

Taiche a écrit :


cf mon premier post :o
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 :sweat:


 
 
mais pourquoi ont il fait ca [:mlc]

Reply

Marsh Posté le 15-09-2003 à 16:17:49    

veryfree a écrit :


mais pourquoi ont il fait ca [:mlc]


C'est l'organisation des sources de la boîte, cherche pas [:ddr555]
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 :fuck:


---------------
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.
Reply

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) ?

Reply

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 :jap:


---------------
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.
Reply

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 ?

Reply

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 [:ddr555]


---------------
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.
Reply

Marsh Posté le 15-09-2003 à 18:20:10    

Taiche a écrit :


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 [:ddr555]


:/ faudrait un -debug ....

Reply

Marsh Posté le 15-09-2003 à 18:23:14    

R3g a écrit :


:/ faudrait un -debug ....


C'est pile c'que j'ai pensé la semaine dernière :lol:
Au pire j'irai poser la question chez Sun :o 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 [:kunks]


---------------
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.
Reply

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 [:boidleau]) 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 :o
 
Merci à tous ceux qui m'ont suggéré quelques pistes :jap:
 
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 [:joce]
 
J'le f'rai tourner la nuit, hein [:ddr555]


---------------
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.
Reply

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 [:boidleau]) 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 :o
 
Merci à tous ceux qui m'ont suggéré quelques pistes :jap:
 
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 [:joce]
 
J'le f'rai tourner la nuit, hein [:ddr555]


 
leger a charger dans le navigateur [:kunks]

Reply

Marsh Posté le 15-09-2003 à 19:39:59    

chrisbk a écrit :


leger a charger dans le navigateur [:kunks]


C'est clair, j'ai pas encore osé :lol:
 
En direct live, voici les dernières stats du truc qui tourne sans planter :
avec un -Xmx256m le truc tourne en 1 min 30 :ouch:
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 [:kunks] Demain sera fun [:ddr555]


Message édité par Taiche le 15-09-2003 à 19:42:16

---------------
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.
Reply

Marsh Posté le 15-09-2003 à 19:57:06    

Taiche a écrit :


3200 fichiers générés dont le fameux index-all.html
Total : 70 Mo


 
une minute de silence pour le gars qui devra lire c'te doc  :lol:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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