Ein Kollege möchte UML-Klassendiagramme aus Haufen von Python-Quellcode generieren. Er interessiert sich hauptsächlich für die Vererbungsbeziehungen und leicht für kompositorische Beziehungen und kümmert sich nicht viel um Klassenattribute, die nur Python-Primitive sind.
Der Quellcode ist ziemlich einfach und nicht besonders böse - er macht zum Beispiel keine ausgefallene Metaklassen-Magie. (Es ist größtenteils aus den Tagen von Python 1.5.2, mit einigen Spritzer "modernen" 2.3ish-Materials.)
Was ist die beste zu empfehlende Lösung?
Antworten:
Möglicherweise haben Sie von Pylint gehört , mit dessen Hilfe Python-Code statisch überprüft werden kann. Nur wenige Leute wissen, dass es ein Tool namens Pyreverse enthält , das UML-Diagramme aus dem gelesenen Python-Code zeichnet. Pyreverse verwendet Graphviz als Backend.
quelle
Epydoc ist ein Tool zum Generieren von API-Dokumentation aus Python-Quellcode. Es generiert auch UML-Klassendiagramme, wobei Graphviz auf ausgefallene Weise verwendet wird. Hier ist ein Beispiel eines Diagramms, das aus dem Quellcode von Epydoc selbst generiert wurde.
Da Epydoc sowohl Objekt-Introspektion als auch Quell-Parsing durchführt, kann es mehr Informationen zu statischen Code-Analysatoren wie Doxygen sammeln: Es kann eine ganze Reihe dynamisch generierter Klassen und Funktionen untersuchen, aber auch Kommentare oder nicht zugewiesene Zeichenfolgen als Dokumentationsquelle verwenden, z für Variablen und öffentliche Klassenattribute.
quelle
epydoc
scheint es nicht möglich zu sein, Diagramme zu generieren. Schauen Sie sich diesen Fehlerbericht an .Überprüfen Sie diese Liste von sieben uml-Tools für Python
quelle
Bestimmte Klassen von gut erzogenen Programmen können grafisch dargestellt werden, im allgemeinen Fall ist dies jedoch nicht möglich. Python-Objekte können zur Laufzeit erweitert werden, und Objekte eines beliebigen Typs können einer beliebigen Instanzvariablen zugewiesen werden. Um herauszufinden, auf welche Klassen ein Objekt Zeiger auf (Komposition) enthalten kann, muss das Laufzeitverhalten des Programms vollständig verstanden werden.
Aufgrund der Metaklassenfunktionen von Python erfordert das Nachdenken über die Vererbungsstruktur auch ein umfassendes Verständnis des Laufzeitverhaltens des Programms.
Um zu beweisen, dass dies unmöglich ist, argumentieren Sie, dass Sie, wenn ein solcher UML-Diagrammer existiert, ein beliebiges Programm verwenden, "halt" -Anweisungen in Anweisungen konvertieren könnten, die sich auf das UML-Diagramm auswirken würden, und den UML-Diagrammer verwenden könnten, um das Stoppproblem zu lösen. was bekanntlich unmöglich ist.
quelle
Wenn Sie Eclipse verwenden, möglicherweise PyUML . Ich habe es aber nicht benutzt.
quelle
.zip
Archiv installieren .Es ist erwähnenswert, Gaphor . Ein Python-Modellierungs- / UML-Tool.
quelle
Umbrello macht das auch. Gehen Sie im Menü zu Code -> Projekt importieren und zeigen Sie dann auf das Stammverzeichnis Ihres Projekts. dann kehrt es den Code für dich um ...
quelle
vipera ist ein kleiner Anwendungsdesigner, und uml ist enthalten. Sie können es sehen in:
Vipera
Freundliche Grüße.
quelle
Die SPE- IDE verfügt über einen integrierten UML-Ersteller. Öffnen Sie einfach die Dateien in SPE und klicken Sie auf die Registerkarte UML.
Ich weiß nicht, wie umfassend es für Ihre Anforderungen ist, aber es erfordert keine zusätzlichen Downloads oder Konfigurationen, um es zu verwenden.
quelle
Sparx ' Enterprise Architect führt eine Rundauslösung der Python-Quelle durch. Sie haben eine kostenlose zeitlich begrenzte Testversion.
quelle