1. pycallgraph+graphviz
??需要修改源码,在源码中加入pycallgraph代码,用于导出函数调用关系描述语言。该方法因为需要修改源码,不适合大工程。详情可参考mb5fdb1266ce6df的文章和Python小屋屋主的文章)。
2. pyreverse+graphviz
??该方法不需要修改源码,演示效果也很好,但是运行指令时有可能会出现如下报错。plint github开源库对于此问题的问答至今(2022年4月12日)没有很好的解决,他们分别是问答1和问答2。具体操作参考:生成项目UML框架图-pyreverse介绍、将Python源码自动生成UML类图和python的UML类图自动生成工具–pyreverse安装和使用这三篇博客。 运行该指令可以正常使用:
pyreverse -f ALL -ASmy ./train.py
运行该指令会报错:
$ pyreverse --module-names=y --class=module.entry.SumoRunner ./train.py
astroid.exceptions.InferenceError: Inference failed for all members of ().
3. pycharm(推荐)
??最推荐的一种方式,效果很好,操作很傻瓜,具体方法如下:(引用自草票在其问答中的回复) ??生成python脚本类图的最简单方法是使用Pycharm IDE。 第1步:为python脚本创建一个包(Alt + Insert→Python包) 第2步:右键单击创建的包文件,然后选择选项图 第3步:选择图表选项后,您可以选择顶部的选项来添加方法 更多信息:https://confluence.jetbrains.com/display/PYH/Working+with+UML+class+diagrams+in+PyCharm
4. starUML
实验过不行,因为至今(2022年4月12日),其python的插件还不支持逆向生成python的UML图,但是C++可以(tools -> C++ -> Reverse Code … -> 选择头文件)。
5. EnterpriseArchitecture(推荐)
可以参考如下教程:
- EA15逆向工程操作–从源码生成类图
- EA Reverse Engineering C++ Source Code
- enterprise architect (EA) 源码生成UML类图,帮助理解项目工程
- 用EA(EnterpriseArchitect)将C++的.h文件转换成UML类图
- 使用Sparx Systems Enterprise Architect将python源代码转换为uml图
- 用Enterprise Architect从源码自动生成类图(附图+工具)
6. Visual Paradigm(未尝试)
参考如下教程:
Visual Paradigm Reverse Engineering C++ Source Code
7. Eric Python IDE(未尝试)
|