Diagramm (z.B. UML) aus Visual C++ code erzuegen
-
Hallo,
ich bin auf der Suche nach einem Tool, mit dem ich mein VC++ Projekt grafisch darstellen kann. D.h. ich gebe das Projekt oder die sourcdateien an und das tool generiert daraus ein Diagramm mit den Abhänigkeiten.
Gibt es so ein tool, das vielleicht sogar noch Freeware ist?
Gruß
edm
-
Bleistift und Papier 1.0 :p
Ne im ernst: ObjectiF zB, ist aber von der Bedienung her Geschmackssache..
-
Visio!? (zumindest bei VS2003 in der Enterprise-Architekt Version)
-
Man braucht "Visio for Enterprise Architects", welches im MSDN Premium-Abonnement enthalten ist. Das habe ich aber nicht ...
( http://msdn2.microsoft.com/de-de/library/ms182014.aspx )ObjectiF scheint sowas zu können, leider kommt beim importieren eines VC Projets ein Fehler.
-
Also was ObjectiF angeht, klappt das mit VC6 Projecten wunderbar. Neues leeres Project in ObjectiF erstellen und dann dein VC6 Project hinzufügen, dann auf Reversengineering klicken und die einem Klassendiagramm zuordnen, was vorher angelegt worden sein muss.
gruß
McSnoop
-
Welche Version hast du verwendet? Ich habe hier die Enterprise personal Edition 6.1. Geht das mit der? Bei mit funktioniert es jedenfalls nicht. Ich versuche es folgendermaßen:
- neues System anlegen
Vorlage: MFC and ATL Template- Bei System: Rechtsklick->Anpassen->Dateitypen
DSP Project File: Bei Zurückführen Haken setzen- Reverse Engineering->Quellcode:
"DSP Project File" auswählen
Dann gebe ich dort das DSP-File einer ganz einfachen dialogfeldbasierten
Anwendung an.Wenn ich nun auf Analyse klicke, kommt: "Die Analyse hat einen Fehler ergeben"
Die Fehlerreportdatei hat folgenden Inhalt:
-------------------------------------------------------------------------------- Test run of reverse engineering (no persistent object is created) a file 'H:\VC\Test\Test.dsp'... (7):Warning:`Test` not found. (7):Warning:`Win32` not found. (7):ERROR: unexpected `Debug`; expected { Eof RCURLY LSQUARE RSQUARE LPAREN RPAREN COLON SEMICOLON COMMA QUESTIONMARK ELLIPSIS ASSIGNEQUAL TIMESEQUAL DIVIDEEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL SHIFTLEFTEQUAL SHIFTRIGHTEQUAL BITWISEANDEQUAL KEYWORD_BITWISEANDEQUAL BITWISEXOREQUAL KEYWORD_BITWISEXOREQUAL BITWISEOREQUAL KEYWORD_BITWISEOREQUAL OR KEYWORD_OR AND KEYWORD_AND BITWISEOR KEYWORD_BITWISEOR BITWISEXOR KEYWORD_BITWISEXOR AMPERSAND KEYWORD_AMPERSAND EQUAL NOTEQUAL KEYWORD_NOTEQUAL LESSTHAN GREATERTHAN LESSTHANOREQUALTO GREATERTHANOREQUALTO SHIFTLEFT SHIFTRIGHT PLUS MINUS STAR DIVIDE MOD PLUSPLUS MINUSMINUS DOT POINTERTO POINTERTOMBR DOTMBR } (8):Warning:`Zum` not found. (8):ERROR: unexpected `Erstellen`; expected { Eof RCURLY LSQUARE RSQUARE LPAREN RPAREN COLON SEMICOLON COMMA QUESTIONMARK ELLIPSIS ASSIGNEQUAL TIMESEQUAL DIVIDEEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL SHIFTLEFTEQUAL SHIFTRIGHTEQUAL BITWISEANDEQUAL KEYWORD_BITWISEANDEQUAL BITWISEXOREQUAL KEYWORD_BITWISEXOREQUAL BITWISEOREQUAL KEYWORD_BITWISEOREQUAL OR KEYWORD_OR AND KEYWORD_AND BITWISEOR KEYWORD_BITWISEOR BITWISEXOR KEYWORD_BITWISEXOR AMPERSAND KEYWORD_AMPERSAND EQUAL NOTEQUAL KEYWORD_NOTEQUAL LESSTHAN GREATERTHAN LESSTHANOREQUALTO GREATERTHANOREQUALTO SHIFTLEFT SHIFTRIGHT PLUS MINUS STAR DIVIDE MOD PLUSPLUS MINUSMINUS DOT POINTERTO POINTERTOMBR DOTMBR } (11):ERROR: unexpected `"Test.mak"`;; ""Test.mak"" not in { Eof RCURLY LSQUARE RSQUARE LPAREN RPAREN COLON SEMICOLON COMMA QUESTIONMARK ELLIPSIS ASSIGNEQUAL TIMESEQUAL DIVIDEEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL SHIFTLEFTEQUAL SHIFTRIGHTEQUAL BITWISEANDEQUAL KEYWORD_BITWISEANDEQUAL BITWISEXOREQUAL KEYWORD_BITWISEXOREQUAL BITWISEOREQUAL KEYWORD_BITWISEOREQUAL OR KEYWORD_OR AND KEYWORD_AND BITWISEOR KEYWORD_BITWISEOR BITWISEXOR KEYWORD_BITWISEXOR AMPERSAND KEYWORD_AMPERSAND EQUAL NOTEQUAL KEYWORD_NOTEQUAL LESSTHAN GREATERTHAN LESSTHANOREQUALTO GREATERTHANOREQUALTO SHIFTLEFT SHIFTRIGHT PLUS MINUS STAR DIVIDE MOD PLUSPLUS MINUSMINUS TILDE NOT DOT POINTERTO POINTERTOMBR DOTMBR DELETE_ NEW OPERATOR } (12):ERROR: unexpected `!`; expected { TILDE OPERATOR TEMPLATE ID } (14):Warning:`Zum` not found. (14):ERROR: unexpected `Beispiel`; expected { Eof RCURLY LSQUARE RSQUARE LPAREN RPAREN COLON SEMICOLON COMMA QUESTIONMARK ELLIPSIS ASSIGNEQUAL TIMESEQUAL DIVIDEEQUAL MODEQUAL PLUSEQUAL MINUSEQUAL SHIFTLEFTEQUAL SHIFTRIGHTEQUAL BITWISEANDEQUAL KEYWORD_BITWISEANDEQUAL BITWISEXOREQUAL KEYWORD_BITWISEXOREQUAL BITWISEOREQUAL KEYWORD_BITWISEOREQUAL OR KEYWORD_OR AND KEYWORD_AND BITWISEOR KEYWORD_BITWISEOR BITWISEXOR KEYWORD_BITWISEXOR AMPERSAND KEYWORD_AMPERSAND EQUAL NOTEQUAL KEYWORD_NOTEQUAL LESSTHAN GREATERTHAN LESSTHANOREQUALTO GREATERTHANOREQUALTO SHIFTLEFT SHIFTRIGHT PLUS MINUS STAR DIVIDE MOD PLUSPLUS MINUSMINUS DOT POINTERTO POINTERTOMBR DOTMBR } Variable 'CFG' recognized (14):ERROR: unexpected `:`; expected SEMICOLON (15):ERROR: unexpected `!`; expected Eof Test run of reverse engineering (no persistent object is created) of a file 'H:\VC\Test\Test.dsp' completed with 7 error(s). Recommended corrections: a) modify (or create) configuration file to contain macros used in source file(s); b) create packages in objectiF for namespaces; c) remove syntax errors in source file(s) and/or configuration file; d) process basic files first, then files that depend on them. ................................................................................Mit den Tipps am Ende kann ich nichts anfangen.
Wo liegt mein Fehler?
-
Ok,
ich habe das Anwenderhandbuch bemerkt
Da steht drin wie man es machen muss. Man muss noch ein skript einbinden, dann kann man einem package ein VC++ Projekt zuordnen.Sieht zwar irgendwie nicht so hübsch aus wie ich mir das gedacht habe, aber es funktioniert.
-
ich musste hier bei mir kein script einbinden und es ging mit der 4.7 pro version als auch mit der 6.1 die immo zum DL angeboten wird.
gruß
McSnoop
-
Wie machst Du es denn?
Wenn ich so mache wie oben beschrieben kommt die Fehlermeldung. Kann es vielleicht sein, dass in der 4er Version das Skipt vielleicht standardmäßig aktiviert war? Es wird ja mitgeliefert, es ist nur nicht ausgewählt.
Aber wie gesagt, es sieht eh ziemlich chaotisch aus. Bir mir ist es wichtiger, dass man eine Übersicht bekommt, als dass man haargenau weiß welches Modul von was abhängt. Von daher werde ich wohl doch zu der Papier- und Bleistiftmethode greifen
Natürlich in digitaler Form.
-
wie im post zuvor gehts sowohl mit der 4er version als auch mit der 6er. Wichtig ist das vor dem reengineering ein klassendiagramm angelegt sein muss und dann sollte es keine probleme geben. Welches Objectif haste denn installiert? die .Net variante oder die andere?
gruß
McSnoop