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

### 使用Python生成代码流程图 对于希望将Python代码转化为流程图的需求,确实存在多种方法和工具可供选择。一种较为常见的方式是利用`graphviz`库来手动创建流程图[^1];不过,当目标是从已有代码自动生成流程图时,则可能更倾向于自动化解决方案。 #### 自动化工具选项之一:Vatsha/code_to_flowchart 尽管网络上已有的许多尝试不尽如人意——部分因为技术选型奇特、运行环境要求严格或是输出美观度欠佳等问题,但仍有一些项目值得探索。例如[Vatsha/code_to_flowchart](https://github.com/Vatsha/code-to-flowchart),该项目旨在解决现有方案中的痛点并提供更加简便易用的功能[^2]。 #### Pycallgraph作为另一种可行的选择 另一个值得注意的工具叫做Pycallgraph,它能够追踪程序执行过程,并基于此信息构建函数调用关系图。通过安装该包(`pip install pycallgraph`)以及配置合适的输出格式(如Graphviz), 用户可以轻松获得可视化的函数间交互视图。下面是一段简单的示范代码: ```python import pycallgraph from pycallgraph.output import GraphvizOutput def main(): pass # Replace this with your actual code logic. if __name__ == "__main__": graphviz_output = GraphvizOutput(output_file="callgraph.png") with pycallgraph.PyCallGraph(output=graphviz_output): main() ``` 这段脚本会根据`main()`函数内部的操作生成一张PNG图片形式的调用图表[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值