当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《从Python源代码生成UML图的最佳方法是什么?》经验,为你挑选了6个好方法。

一位同事正在寻求从大量的Python源代码生成UML类图.他主要对继承关系感兴趣,对组合关系有点兴趣,并不关心只是Python原语的类属性.

源代码非常简单,并不是非常邪恶 - 例如,它没有做任何花哨的元类魔法.(这主要来自Python 1.5.2的日子,其中有一些"现代"的东西.)

推荐的最佳解决方案是什么?



1> 小智..:

您可能听说过Pylint有助于静态检查Python代码.很少有人知道它附带了一个名为Pyreverse的工具,它从它读取的python代码中提取UML图.Pyreverse使用graphviz作为后端.



2> piro..:

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

因为Epydoc执行对象内省和源解析,它可以收集有关静态代码分析器(如Doxygen)的更多信息:它可以检查相当数量的动态生成的类和函数,但也可以使用注释或未分配的字符串作为文档源,例如对于变量和类公共属性.


不适用于python 3
目前,`epydoc`似乎无法生成图表.看看这个[错误报告](https://sourceforge.net/p/epydoc/bugs/372/).

3> Jordi Cabot..:

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


自从上面提到我的开放式UML工具Pynsource http://pynsource.com以来,已经进行了许多版本更改。现在,它解析Python 3,具有缩放,布局,ASCII UML和PlantUML渲染支持。据我所知,Pynsource也是唯一可识别Python实例属性(而不仅仅是类属性)的UML工具。这意味着像self.myattr这样的表达式将在结果UML类中产生适当的属性“ myattr”。准备运行的二进制文件适用于Mac,Windows,Ubuntu 18和16-以及开源Github存储库。

4> Andru Luvisi..:

某些表现良好的程序可能是可编程的,但在一般情况下,它无法完成.Python对象可以在运行时扩展,任何类型的对象都可以分配给任何实例变量.确定一个对象可以包含指向哪些类(组合)需要完全理解程序的运行时行为.

Python的元类功能意味着关于继承结构的推理还需要完全理解程序的运行时行为.

为了证明这些是不可能的,你认为如果存在这样的UML图表,那么你可以采用任意程序,将"halt"语句转换为会影响UML图的语句,并使用UML图解器来解决停顿问题,我们知道这是不可能的.


这里有一个类比:diff/patch可以通过很多不同的方式失败,其中一些是微不足道的.它在许多现实世界的案例中仍然非常有用.在合理的情况下,图表继承是微不足道的.委托更棘手,但在包的边界内通过类型推断是可行的.
一些好东西,但是停止解决的手放弃了它.病理病例不是这里的问题.乖巧就够了.

5> Ali Afshar..:

值得一提的是Gaphor.Python建模/ UML工具.



6> David Arcos..:

如果你使用eclipse,也许是PyUML.但是没有用过它.


该项目的最后一次提交可以追溯到2009年。它没有出现在Marketplace中,并且Eclipse无法从`.zip`归档文件中进行安装。
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有