UML aus Commandline generieren

Status
Nicht offen für weitere Antworten.

guni

Bekanntes Mitglied
Hi,

ich suche ein Tool (am besten in Windows und Linux) das mir folgende Aufgabe löst:

es soll aus einer Java-Klasse ein UML-Diagramm machen - ABER: in der Kommandozeile.
ich denke da ca an sowas

convertuml *.java *.png

... wobei man als letztes argument neben png noch andere formate (jpg, svg, ...) angeben kann.
kennt irgendwer von euch dazu eine gute freeware?
gibts sowas schon?!

oder muss man das erst schreiben?!

mfg, guni
 

guni

Bekanntes Mitglied
kann mir irgendwer weiterhelfen?!
wär echt toll, wenn ich sowas finden würde; aber google hat mir da auch nicht mehr wirklich weiterhelfen können. (vielleicht habe ich einfach meine frage falsch formuliert ???:L )
auch in den anderen Foren die ich gefunden habe, hat auf einmal eisiges Schweigen geherrscht, wenn dieses Thema angesprochen wurde.

mfg, guni
 

musiKk

Top Contributor
Ich hab sowas zwar nicht benutzt, aber hier ist ne Liste mit Tools. Nach "reverse" suchen. Reverse Engineering wird in diesem Fall mit der Uebersetzung von Code in UML-Diagramme verstanden.
 

tfa

Top Contributor
Es ist wohl eine sehr spezielle Anforderung, das an der Kommandozeile machen zu wollen. Keine Ahnung, ob es da schon was gibt.
Ich habe mal mit MetaPost experimentiert. Das ist eine Programmiersprache mit der man Postscript erzeugen kann. Hierfür gibt es eine Bibliothek names MetaUML, die speziell zur UML-Diagrammgenerierung entwickelt wurde.
Aus dem Quelltext
Code:
input metauml;
beginfig(1);
	Interface.A("HasRevision")	
	("+getChangedAt(): Date",
	 "+getChangedBy(): String",
   );
	
	drawObject(A);
endfig;
end
macht MetaPost folgendes Diagramm:

uml.PNG


Das geht ganz einfach über die Kommandozeile, allerdings werden nur Postscript-Dateien erzeugt. Es gibt aber genug (Kommandozeilen-)Tools, um die z.B. in PDF umzuwandeln.
Du musst dir nur ein Programm schreiben, dass aus deinem Java-Quelltext ein entsprechendes MetaUML-Programm erzeugt. Das sollte leicht mit einer Skriptsprache gehen.

Schwierig kann es werden, wenn du mehr als eine Klasse in einem Klassendiagramm darstellen willst, denn die einzelnen Klassen müssen "von Hand" positioniert werden.
 

BjörnBu

Aktives Mitglied
Ein Tool kenne ich nicht - würde mich aber ehrlich gesagt wundern, wenn es das nicht gebenm würde. Aber es gibt ja definitiv viele UML Tools, die open source sind und reverse enigneering unterstützen. Eine zusätzliche Klasse zu basteln und zum aufruf ein bat/sh file zu machen ist ja sicher nicht das Problem.

Wenn es in 'nen build Prozess eingebunden werden soll halt lieber gleich ein ant task (oder maven plug-in, oder was auch immer man nutzt) statt bat/sh.
 

guni

Bekanntes Mitglied
was meinst du mit "zusätzliche klasse basteln" - ich habe leider kein solches tool gefunden! schade! dabei sagt man immer, dass UML so poplär is, aber dann gibts nicht mal ein reverse engineering auf kommandozeilenebene!!!

ok - nehmen wir an, ich möchte sowas in java selbst schreiben; gibt es da schon fertige klassen, die ich importieren könnte;
z.B. eine Klasse, die mir Java-Code parst?
Oder eine Klasse, die mir Klassendiagramme zeichnet, sobald ich ihr bestimmte Angaben über die Klasse mache, die ich gezeichnet haben möchte?
das könnte ich mir dann warscheinlich schon selbst zsammbasteln.
wenn irgendwer weiter weiß -> HILFE!
 

guni

Bekanntes Mitglied
hmm ... auf das bin ich auch mal gestoßen aber in der Hoffnung, dass es da was anderes gibt hab ich das wieder verworfen.

wie auch immer - hab es jetzt nochmal runtergeladen und mal ein bisschen ernsthafter probiert;
aber wenn ich versuche, mein Klasse umzuwandeln kommt es zu folgendem Fehler:

Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version number in .class file

Woran könnte das liegen und wie kann ich diesen Fehler verhindern?!
 

tfa

Top Contributor
Wenn man Class-Files, die mit Java 1.6 kompiliert wurden, in einer JVM Version 1.5 verwenden will kommt z.B. dieser Fehler.
 

guni

Bekanntes Mitglied
hi,

das nervige an dem modul is, dass es den JAVA-Code zum verifizier versucht und wenn ihm irgendeine Klasse abgeht (aus welchem Grund auch immer), dann erstellt er auch das Klassendiagramm nicht richtig.
...

aus diesem Grund hab ich jetzt einen anderen Ansatz gewählt (schließlich will ich ja nur "blöde" Klassendiagramme) aus meinen Java-Files erstellen.

Ich hab mir jetzt überlegt, ich schreib einfach ein Skript, das mir solche Diagramme in SVG zeichnet und wandel die dann in PNG um (rsvg)

also, ich hab mit dem Ganzen mal angefangen; hab aba grad irgendwie keine Lust mehr.
Wenn irgendwer weitermachen will / das Ganze verbessern will: hier ist der Code (is aba in Perl geschrieben) ...

aba hey - wenn sich irgendwer findet, der daran arbeiten will, dann sei auch so fair und poste dein Ergebnis wieder hier - ich hab meinen Ansatz schließlich auch "freigegeben" ;-)

Code:
use strict;
use SVG;

my $classname = $ARGV[0];
my @attribs;
my @methods;

open(IN,"<$classname.java");
while(<IN>){
   next if (!/(\s?public|private.*)/||/(.*class.*)/);
   s/\s?//;s/public/\+/;s/private/\-/;s/(.*)(\(.*)(.*)/$1/;
   if (/;/) { push @attribs, $_; } else { push @methods, $_; }
}
close IN;

my $svg = new SVG(width=>200,height=>200);
my $t_class = $svg->text(id=>'t_class', x=>10, y=>10, -cdata=>'$classname');
open(OUT,">$ARGV[0].svg");
print OUT $svg->xmlify;
close OUT;
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Commandline jar mit Java benutzen Allgemeine Java-Themen 11
S Commandline / Prozesse Problem Allgemeine Java-Themen 4
LimDul Eindeutige ID (ala UUID) generieren als numerisch, maximal 16 Stellen Allgemeine Java-Themen 11
R Farbe zu einem Eckpunkt generieren Allgemeine Java-Themen 0
J Sudoku generieren Schwierigkeitsgrad Allgemeine Java-Themen 3
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
D Mail aus GUI generieren Allgemeine Java-Themen 2
J Primzahlen generieren Allgemeine Java-Themen 6
M Serien- / Werksnummern generieren Allgemeine Java-Themen 7
K Java QUIZ-Spiel Fragen und Antworten generieren?! Allgemeine Java-Themen 5
N Zahl mit bestimmter Länge und nur bestimmten Zahlen generieren lassen Allgemeine Java-Themen 7
M Zufälligen String generieren und alle 5 Minuten ändern Allgemeine Java-Themen 2
T Geschwindigkeit beim Generieren erhöhen? Allgemeine Java-Themen 7
DStrohma Verschlüsselung: SALT aus Passwort generieren? Allgemeine Java-Themen 3
darekkay (JUnit) Testdaten generieren - Framework? Allgemeine Java-Themen 2
L Generieren Zufallsdaten aus CSV dateien Allgemeine Java-Themen 11
N String generieren Allgemeine Java-Themen 3
J Hash aus Verzeichniss generieren Allgemeine Java-Themen 2
Eldorado Barcodes mit statischer Breite generieren Allgemeine Java-Themen 3
M aus 3 BufferedImages 1 generieren Allgemeine Java-Themen 5
E Zufallszahl generieren Allgemeine Java-Themen 5
M Shapes mit abgerundeten Ecken generieren Allgemeine Java-Themen 2
T Zufallszahlen generieren und dabei eine Zahl weglassen Allgemeine Java-Themen 4
S Mittels eines Applets Bilder generieren die in einer Webseite angezeigt werden..? Allgemeine Java-Themen 8
MQue List<String> aus List<Object> generieren Allgemeine Java-Themen 2
V Einfache toString() generieren? Allgemeine Java-Themen 6
O .jar Files - Tools zum generieren Allgemeine Java-Themen 25
B PDF generieren. Problem mit PipedStreams. Allgemeine Java-Themen 4
M nicht gleichverteilte Zufallszahlen generieren Allgemeine Java-Themen 6
B Mit Java Powerpoint Reporte und PDF generieren Allgemeine Java-Themen 9
lumo "Exzessiv" dynamisches generieren Allgemeine Java-Themen 6
B Schlüssel von Java automatisch generieren lassen. Allgemeine Java-Themen 4
T Einfachen Ton in Java generieren Allgemeine Java-Themen 4
B String generieren Allgemeine Java-Themen 4
S Datei aller möglich encodings generieren Allgemeine Java-Themen 2
G Char-zufällig-generieren Allgemeine Java-Themen 11
H RTF zu Word-Dokument generieren Allgemeine Java-Themen 5
B Namen eines Objekts generieren? Allgemeine Java-Themen 4
C Laufende Nummer generieren Allgemeine Java-Themen 4
S Dynamisches Feld generieren. Allgemeine Java-Themen 10
N Transaktionsnummer (Tan) generieren? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben