PyReverse, wie geht das?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Hallo Leute,

ich bin mal wieder zu doof, wie es scheint: Auch ich habe den Wunsch, UML Diagramme aus vorhandenem Code zu bauen. Ein Tool habe ich gefunden, aber damit ließen sich die Bildchen nicht abspeichern...

Also PyReverse, der Versuch, das alles zu installieren hält mich jetzt schon etwas länger auf:

Ich habe mir pyreverse, logilab-common und logilab-astng runtergeladen und nach Anweisung installiert (python setup.py install).

PyXML wollte ich installieren, leider scheiterte das:
- Die Sourceversion klappt nicht, weil ich kein Visual Studio 7.x installiert habe.
- Die Version 2.4 konnte ich nicht installieren, weil das Installationsprogramm schlau ist, es prüft nämlich, ob Python 2.4 installiert ist, wenn nicht, passiert gar nichts. Was machen die Deppen, die 2.5.1 installiert haben???

Ok, ich hoffe, daß auf wundersame Weise die Sachen von PyXML schon in der Standardinstallation drin sind.

Also wollte ich das Tool pyargo starten, einfach so aus der Kommandozeile. Das bricht ab mit der folgenden Fehlermeldung:

Code: Alles auswählen

  File "E:\programs\python\Lib\site-packages\pyreverse\pyargo.py", line 22, in <module>
    from pyreverse.utils import RunHelper
  File "E:\programs\python\lib\site-packages\pyreverse\utils.py", line 24, in <module>
    from logilab.common.astng.utils import is_interface, is_exception, \
ImportError: No module named astng.utils
Das Modul ist tatsächlich nicht da, wo es erwartet wird, sondern parallel zu "common". wenn man es reinkopiert, dann klappt es auch nicht, weil dann der Name "is_interface" fehlt.

Die ganze Sache fing schon schief an, beim setup.py sollte die Zeile

Code: Alles auswählen

from __future__ import nested_scopes
ganz am Dateianfang stehen, was sie nicht tat. Irgendwie paßt hier eines nicht zu anderen.

Was mache ich falsch? Hat irgendjemand diese Hürden schon mal umschifft?

Gruß und Danke,

Christoph
BlackJack

Wird PyReverse überhaupt noch entwickelt? Das machte auf mich mal einen relativ toten Eindruck.
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

BlackJack hat geschrieben:Wird PyReverse überhaupt noch entwickelt? Das machte auf mich mal einen relativ toten Eindruck.
Sollte das nicht egal sein? Wenn es mal funktioniert hat, warum sollte es dann nicht weiter funktionieren? Es sei denn wegen irgendwelcher Inkompatibilitäten. Aber das, was ich da sehe, sind Bugs oder Unfähigkeit meinerseits.

Gibt es denn ein anderes brauchbares Tool, das unter Windows läuft?

Gruß und Danke,

Christoph
BlackJack

Denke nicht, dass es an Deiner Unfähigkeit liegt. ;-) Es gibt zum Beispiel im aktuellen `logilab.astng.utils` weder `is_interface()` noch `is_exception()`. `astng` ist wichtig für `pylint`, wird aktiv weiterentwickelt und verändert sich anscheinend. PyReverse ist laut Homepage vor ca. einem Jahr in den Status "asleep" versetzt worden.
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

BlackJack hat geschrieben:Denke nicht, dass es an Deiner Unfähigkeit liegt. ;-) Es gibt zum Beispiel im aktuellen `logilab.astng.utils` weder `is_interface()` noch `is_exception()`. `astng` ist wichtig für `pylint`, wird aktiv weiterentwickelt und verändert sich anscheinend. PyReverse ist laut Homepage vor ca. einem Jahr in den Status "asleep" versetzt worden.
Danke für Dein Vertrauen ;).

Es ist natürlich schade, daß es nicht weiterentwickelt wird, aber da so wenig Feedback auf die Frage kommt, scheint das Interesse an dem Thema eh nicht so groß zu sein.

Wie aufwendig wäre es wohl, PyReverse auf den neuesten Stand zu bringen? Zu erst müßte man wohl rausfinden, ob es überhaupt das richtige Tool ist, das wollte ich ja gerade tun. Dann wäre interessant, warum es schläft. Und dann? Fröhliches entwanzen...

Gruß,

Christoph
BlackJack

Bei mir hält sich das Interesse in Grenzen weil UML offenbar hauptsächlich für statische, klassenfixierte Sprachen entworfen wurde. Die grossen Interface- und Vererbungshierarchien bei Sprachen wie Java gibt es in Python nicht, damit auch weniger Bedarf an Übersichtsbildern davon.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ChrisGTJ hat geschrieben:Es ist natürlich schade, daß es nicht weiterentwickelt wird, aber da so wenig Feedback auf die Frage kommt, scheint das Interesse an dem Thema eh nicht so groß zu sein.

Wie aufwendig wäre es wohl, PyReverse auf den neuesten Stand zu bringen? Zu erst müßte man wohl rausfinden, ob es überhaupt das richtige Tool ist, das wollte ich ja gerade tun. Dann wäre interessant, warum es schläft. Und dann? Fröhliches entwanzen...
Das Interesse von meiner Seite ist ebenso gering, da für mich UML-Diagramme ähnlich langweilig und arbeitsaufwendig wie Struktogramme sind. Sie bringen kaum (wenn überhaupt) Mehrwert aber man verschwendet Zeit wenn man sie generiert und verstehen muss. In Python sind die Klassenstrukturen in der Regel sowieso nicht dermaßen kompliziert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Moin,

ich habe mir mal die Demoversion von Visual Paradigm runtergeladen. Zum Spaß habe ich mal eine Klasse in dem Teil kreiert und finde es reichlich zeitaufwendig und vorallem viel klicki-klacki mit der Maus. Den Code direkt zu schreiben finde ich schon besser.

Allerdings finde ich das reverse engineering einen guten Weg, um mal eben schnell (und tatsächlich, es geht "mal eben schnell" mit dem Tool) einen Überblick über die tatsächlichen Zusammenhänge zu gewinnen. Wie macht Ihr das?

Die Klassenzusammenhänge sind tatsächlich nicht sooo komplex, aber 120 Klassen tummeln sich da doch schon herum, ist das ein Designfehler (jetzt wird's richtig off topic ;) )? Da ist überblick schon mal eine feine Sache.

Gruß,

Christoph
BlackJack

Die Anzahl der Klassen sagt ja noch nichts über die Komplexität der Zusammenhänge aus. Und ich nehme mal an, die 120 Klassen sind auch noch einmal in Module und vielleicht Packages unterteilt und dokumentiert!? Dann bekommt man mit `pydoc` oder `epydoc` einen Überblick.
ChrisGTJ
User
Beiträge: 105
Registriert: Mittwoch 22. August 2007, 15:45

Sicher sind sie das. Wir nutzen DoxyGen, was aber leider auch noch ein paar Schwächen hat.

Gruß,

Christoph
Antworten