从Python源代码生成UML图的最好方法是什么?

一位同事正在寻找从Python源代码堆中生成UML类图。 他主要对inheritance关系感兴趣,对构造关系有轻度兴趣,并不关心只是Python基本类的类属性。

源代码非常简单直接,而且不会有太大的坏处 – 例如,它不会做任何花哨的元类魔法。 (这大部分是从Python 1.5.2开始的,有些是“现代”的东西)。

什么是最好的现有解决scheme推荐?

Epydoc是一个从Python源代码生成API文档的工具。 它还以奇妙的方式使用Graphviz生成UML类图。 下面是一个从Epydoc本身的源代码生成的图的例子 。

由于Epydoc同时执行对象自省和源代码parsing,因此可以收集更多关于静态代码分析器(如Doxygen)的信息:它可以检查大量dynamic生成的类和函数,也可以使用注释或未指定的string作为文档来源,例如为variables和类公共属性。

您可能已经听说过帮助静态检查Python代码的Pylint 。 很less有人知道它带有一个名为Pyreverse的工具,它从它读取的Python代码中绘制UML图。 Pyreverse使用graphviz作为后端。

检查这七个用于python的uml工具列表

某些performance良好的程序可能是可以expression的,但在一般情况下,这是不可能的。 Python对象可以在运行时进行扩展,任何types的对象都可以分配给任何实例variables。 找出对象可以包含指向(组合)的对象的类将需要对程序的运行时行为有充分的理解。

Python的元类function意味着关于inheritance结构的推理也需要充分理解程序的运行时行为。

为了certificate这些是不可能的,你认为如果存在这样一个UML图解者,那么你可以采取一个任意的程序,将“暂停”语句转换成影响UML图的语句,并使用UML图解者来解决暂停问题,据我们所知,这是不可能的。

如果你使用eclipse,也许PyUML 。 虽然没有使用过。

值得一提的是Gaphor 。 一个Pythonbuild模/ UML工具。

SPE IDE具有内置的UML创build器。 只需打开SPE中的文件并单击UML选项卡即可。

我不知道如何满足您的需求,但它不需要任何额外的下载或configuration使用。

Sparx的Enterprise Architect执行Python源代码的双向跳转。 他们有一个免费的有时间限制的试用版。

翁布雷罗也是这样做的。 在菜单中进入代码 – >导入项目,然后指向项目的根目录。 然后它将代码翻转为…

vipera是一个小应用程序devise师,并包括uml。 你可以看到:

蝰蛇

最好的祝福。