利用graphviz软件和pycallgraph库自动生成Python代码函数调用关系图

利用graphviz软件和pycallgraph库自动生成Python代码函数调用关系图

@Author:CSU张扬

@Email:csuzhangyang@gmail.com or csuzhangyang@qq.com

参考https://pycallgraph.readthedocs.io/en/master/guide/index.html

仅供个人学习,未经授权的情况下禁止转载和盈利行为

1.下载并安装graphviz
  1. 下载地址https://graphviz.gitlab.io/_pages/Download/windows/graphviz-2.38.msi

  2. 安装(路径可任意选择)

  3. 配置环境变量,在Path中添加:

    例如我安装在F:\Program Files (x86),那么就添加环境变量F:\Program Files (x86)\Graphviz2.38\bin
    
2.安装pycallgraph库
cmd窗口命令行输入:pip install pycallgraph
3.使用
注意:你的程序 只有你的操作 使用了某个函数,才能显示在流图中。用户没有使用的功能则不会出现在流图中。

在代码开头调用该库,如下:

from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
from pycallgraph import Config
from pycallgraph import GlobbingFilter

主函数操作:

(最终会保存在你的.py文件相同的文件夹里,名字为graph.png)

def main():
	# 你的主函数代码。
        
if __name__ == "__main__":
    config = Config()
    # 关系图中包括(include)哪些函数名。
    #如果是某一类的函数,例如类gobang,则可以直接写'gobang.*',表示以gobang.开头的所有函数。(利用正则表达式)。
    config.trace_filter = GlobbingFilter(include=[
        'main',
        'draw_chessboard',
        'draw_chessman',
        'draw_chessboard_with_chessman',
        'choose_save',
        'choose_turn',
        'choose_mode',
        'choose_button',
        'save_chess',
        'load_chess',
        'play_chess',
        'pop_window',
        'tip',
        'get_score',
        'max_score',
        'win',
        'key_control'
    ])
    # 该段作用是关系图中不包括(exclude)哪些函数。(正则表达式规则)
    # config.trace_filter = GlobbingFilter(exclude=[
    #     'pycallgraph.*',
    #     '*.secret_function',
    #     'FileFinder.*',
    #     'ModuleLockManager.*',
    #     'SourceFilLoader.*'
    # ])
    graphviz = GraphvizOutput()
    graphviz.output_file = 'graph.png'
    with PyCallGraph(output=graphviz, config=config):
        main()

产生的图片效果如下所示:
在这里插入图片描述

  • 13
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值