在阅读一些源码或者了解项目结构的时候想直观的看一下代码的类关系图,以及程序运行时函数之间的调度图
学习调研了一番发现python现有的一些库已经可以直接实现生成UML图
本人的开发环境是macos + vscode
1.pycallgraph
pip install pycallgraph
2.pyreverse
注意⚠️:这个模块已经集成在pylint中直接安装pylint
pip install pylint
3.graphviz
我自己是macos,所以直接在终端使用brew安装
brew install graphviz
(1)如果是生成程序运行过程的流程图的话采用pycallgraph
from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
with PyCallGraph(output=GraphvizOutput()):
a = sp_process(input_data)
# 其中sp_process是我整个程序的运行入口,替换成自己的即可
运行上述代码片段可以在文件目录下生成pycallgraph.png
图片,这个图片会显示整个程序运行过程调用的所有的函数的调用过程。
(2)如果是生成静态的类关系的UML图可以使用pyreverse
在该脚本文件夹下打开cmd或powershell窗口,执行以下命令后,会在当前文件夹下生成classes.png。
# 直接在自己的终端运行
pyreverse -ASmy -o png test_recog.py
也可指定输出文件名
# 直接在自己的终端运行
pyreverse -ASmy -o png -p test test_recog.py
运行后会生成classes_test.png。
注意⚠️:如果没有直接生成png图片的话,有dot文件,可以使用下面dot命令将.dot文件解析成png图片
同样可以直接查看一个文件夹下的类关系的继承图
# 其中recog_modules是我的代码的文件夹
pyreverse recog_modules/
执行完上面的命令会在recog_modules
的同文件夹下生成一个classes.dot
以及packages.dot
的文件,还需要将dot文件转换成png图片方便查看
dot -Tpng -o classes.png classes.dot dot -Tpng -o packages.png packages.dot
这样就可以在同目录文件夹下生成一个classes.png和一个package.png了。