一位同事希望从大量的Python源代码中生成UML类图。 他主要对继承关系感兴趣,对组合关系稍有兴趣,不太关心仅仅是Python原语的类属性。
源代码非常简单,也不是特别邪恶——例如,它没有使用任何花哨的元类魔法。(它主要来自Python 1.5.2时代,有一些“现代”2.3之类的东西。)
现有的最好的解决方案是什么?
一位同事希望从大量的Python源代码中生成UML类图。 他主要对继承关系感兴趣,对组合关系稍有兴趣,不太关心仅仅是Python原语的类属性。
源代码非常简单,也不是特别邪恶——例如,它没有使用任何花哨的元类魔法。(它主要来自Python 1.5.2时代,有一些“现代”2.3之类的东西。)
现有的最好的解决方案是什么?
当前回答
SPE IDE有内置的UML创建器。只需在SPE中打开文件并单击UML选项卡。
我不知道它对您的需求有多全面,但它不需要任何额外的下载或配置即可使用。
其他回答
伞盖也能做到。在菜单中转到Code -> import project,然后指向项目的根目录。然后它为你颠倒了代码…
某些行为良好的程序类可以用图表表示,但在一般情况下,这是不可能的。Python对象可以在运行时进行扩展,任何类型的对象都可以分配给任何实例变量。要弄清楚一个对象可以包含指向哪些类的指针(组合),需要完全理解程序的运行时行为。
Python的元类功能意味着关于继承结构的推理还需要完全理解程序的运行时行为。
为了证明这是不可能的,您认为如果存在这样一个UML图表,那么您可以取任意的程序,将“停止”语句转换为会影响UML图表的语句,并使用UML图表来解决停止问题,正如我们所知道的,这是不可能的。
Vipera是一个小型应用程序设计器,包括uml。你可以看到:
vipera
致以最亲切的问候。
SPE IDE有内置的UML创建器。只需在SPE中打开文件并单击UML选项卡。
我不知道它对您的需求有多全面,但它不需要任何额外的下载或配置即可使用。
您可能听说过帮助静态检查Python代码的Pylint。很少有人知道它附带了一个名为Pyreverse的工具,可以从它读取的Python代码中绘制UML图。Pyreverse使用Graphviz作为后端。
它是这样使用的:
pyreverse -o png -p yourpackage .
哪里。也可以是单个文件。