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


Anmelden zum Antworten