站点图标 AI技术聚合

python代码流程图的生成

(1)前言

在阅读一些源码或者了解项目结构的时候想直观的看一下代码的类关系图,以及程序运行时函数之间的调度图

学习调研了一番发现python现有的一些库已经可以直接实现生成UML图

(2)软件包安装

本人的开发环境是macos + vscode
1.pycallgraph

pip install pycallgraph

2.pyreverse
注意⚠️:这个模块已经集成在pylint中直接安装pylint

pip install pylint

3.graphviz
我自己是macos,所以直接在终端使用brew安装

brew install graphviz

(3)代码运行

(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了。

文章出处登录后可见!

已经登录?立即刷新
退出移动版