最近工作需要接手了代码量比较大的python开发的项目,平时写python不多,记录一下如何熟悉项目。
分析调用流程-pycallgraph
因为代码量比较大,所以希望通过工具生成代码调用流程,因此用到了pycallgraph。
pycallgraph(Python Call Graph)是一个专业的代码调用流程可视化工具,地址在这里。
安装步骤
环境Ubuntu2004,指令如下:
sudo apt install python3-pycallgraph
使用方式
pycallgraph有两种使用方式,一是命令行,二是代码调用。
# 命令行调用
pycallgraph graphviz -- 测试的脚本
执行完成后当前目录下会出现一张图片,显示所有涉及到的调用流程,包括python内部的实现。
生成的流程图如下:
简单的程序可以直接用命令行实现,不过复杂的程序这样看起来太乱了,推荐使用代码过滤。
from pycallgraph import PyCallGraph
from pycallgraph import Config
from pycallgraph import GlobbingFilter
from pycallgraph.output import GraphvizOutput
# 以上是需要引入的
from banana import Banana
# 设置过滤器
config = Config()
# exclude是不包含,include是包含
config.trace_filter = GlobbingFilter(exclude=[
'pycallgraph.*',
'*.secret_function',
])
# 设置输出文件的名称
graphviz = GraphvizOutput(output_file='filter_exclude.png')
# 运行的代码加在这一行后面
with PyCallGraph(output=graphviz, config=config):
banana = Banana()
banana.eat()
这样可以选择性的呈现流程,选择之后的效果图(不是上面这份代码的图)如下:
这样清晰多了。
生成uml图
安装步骤
sudo apt install pylint
使用方式
pyreverse -ASmy -o png 测试的脚本或者目录
运行完成之后当前目录会出现uml图,可以查看类以及提供的接口。
参考链接
python的UML类图自动生成工具--pyreverse安装和使用-****博客
使用pycallgraph和graphviz查看函数调用图-****博客