同僚がPythonソースコードのヒープからUMLクラス図を生成しようとしています。彼は主に継承関係に興味があり、構成関係にやや興味があり、単にPythonプリミティブであるクラス属性についてはあまり気にしません。
ソースコードは非常に単純であり、それほど悪ではありません。たとえば、派手なメタクラスマジックは実行しません。 (ほとんどがPython 1.5.2の時代のもので、「モダンな」2.3ishのものが散りばめられています。)
推奨する既存の最適なソリューションは何ですか?
正常に動作するプログラムの特定のクラスは図式化できますが、一般的なケースでは実行できません。 Pythonオブジェクトは実行時に拡張でき、任意のタイプのオブジェクトを任意のインスタンス変数に割り当てることができます。オブジェクトがどのクラス(構成)へのポインタを含むことができるかを理解するには、プログラムの実行時の動作を完全に理解する必要があります。
Pythonのメタクラス機能により、継承構造についての推論には、プログラムの実行時の動作を完全に理解する必要があります。
これらが不可能であることを証明するために、そのようなUMLダイヤグラムが存在する場合、任意のプログラムを使用し、「停止」ステートメントをUMLダイアグラムに影響するステートメントに変換し、UMLダイヤグラムを使用して停止問題を解決できると主張します。私たちが知っているようにそれは不可能です。
Eclipseを使用している場合は、おそらく PyUML です。ただし、使用していません。
Gaphor に言及する価値があります。 Pythonモデリング/ UMLツール。
Sparxの Enterprise Architect は、Pythonソースのラウンドトリップを実行します。無料の期間限定トライアル版があります。
SPE IDEにはUMLクリエーターが組み込まれています。 SPEでファイルを開き、UMLタブをクリックするだけです。
私はそれがあなたのニーズにとってどれほど包括的かわかりませんが、使用するために追加のダウンロードや構成を必要としません。
Umbrelloもそれを行います。メニューで[コード]-> [プロジェクトのインポート]に移動し、プロジェクトのルートdeirectoryをポイントします。次に、yaのコードを逆にします...