一位同事正在寻找从大量 Python 源代码生成 UML 类图。他主要对继承关系感兴趣,对组合关系稍微感兴趣,不太关心只是 Python 原语的类属性。
源代码非常简单明了,也不是很邪恶——例如,它没有做任何花哨的元类魔法。(它主要来自 Python 1.5.2 的时代,还有一些“现代”2.3ish 的东西。)
推荐的最佳现有解决方案是什么?
Epydoc是一个从 Python 源代码生成 API 文档的工具。它还以奇特的方式使用Graphviz生成 UML 类图。这是从 Epydoc 本身的源代码生成的图表示例。
因为 Epydoc 执行对象自省和源解析,它可以收集更多关于静态代码分析器(例如 Doxygen)的信息:它可以检查大量动态生成的类和函数,但也可以使用注释或未分配的字符串作为文档源,例如用于变量和类公共属性。
某些类表现良好的程序可能是图表化的,但在一般情况下,它是做不到的。Python 对象可以在运行时扩展,任何类型的对象都可以分配给任何实例变量。弄清楚一个对象可以包含哪些类的指针(组合)需要全面了解程序的运行时行为。
Python 的元类功能意味着对继承结构的推理还需要全面了解程序的运行时行为。
为了证明这些是不可能的,您争辩说,如果存在这样的 UML 图表,那么您可以使用任意程序,将“暂停”语句转换为会影响 UML 图的语句,并使用 UML 图表来解决停止问题,我们知道这是不可能的。
值得一提的是加佛。Python 建模/UML 工具。
如果您使用 Eclipse,也许是 PyUML。不过没用过。
Umbrello 也是这样做的。在菜单中转到代码 -> 导入项目,然后指向项目的根目录。然后它为你反转代码......
SPE IDE 具有内置的 UML 创建器。只需在 SPE 中打开文件并单击 UML 选项卡。
我不知道它对您的需求有多全面,但它不需要任何额外的下载或配置即可使用。
Sparx 的Enterprise Architect执行 Python 源代码的往返。他们有免费的限时试用版。