导出python源码的函数调用关系图的方法
其实准确的说是类图,经过实践不能导出函数的调用关系,如果读者谁做到函数的调用关系图,请分享给大家。详述如下:
1. pycallgraph+graphviz
需要修改源码,在源码中加入pycallgraph代码,用于导出函数调用关系描述语言。该方法因为需要修改源码,不适合大工程。详情可参考mb5fdb1266ce6df的文章和Python小屋屋主的文章)。
2. pyreverse+graphviz
该方法不需要修改源码,演示效果也很好。具体操作参考:生成项目UML框架图-pyreverse介绍、将Python源码自动生成UML类图和python的UML类图自动生成工具–pyreverse安装和使用这三篇博客。
下面是两条常用指令:
pyreverse -f ALL -ASmy ./train.py
pyreverse --module-names=y -ASmy ./train.py
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