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

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

@Author:CSU张扬

@Email:[email protected] or [email protected]

参考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()

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

猜你喜欢

转载自blog.csdn.net/qq_36408085/article/details/82952846