zoukankan      html  css  js  c++  java
  • 利用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.38in
      

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

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

  • 相关阅读:
    数组的反转和二维数组
    初识数组
    Python学习笔记-Day8
    Python学习笔记-Day7
    Python学习笔记-Day6
    Python学习笔记-Day5
    Python学习笔记-Day4
    Python学习笔记-Day3
    Python学习笔记-Day2
    Python学习笔记-Day1
  • 原文地址:https://www.cnblogs.com/MagicConch/p/12179173.html
Copyright © 2011-2022 走看看