pycallgraph2drawio:Python 调用链可视化 + Draw.io 自由编辑

文章目录

    • [1 功能特性](#1 功能特性)
    • [2 系统要求](#2 系统要求)
    • [3 安装指南](#3 安装指南)
    • [4 使用方法](#4 使用方法)

平时做 Python 项目开发、代码梳理与架构复盘时,我们经常会遇到一个很头疼的问题:想快速看清项目里函数之间的调用关系 、理清整体代码结构,却没有顺手又直观的工具。手动梳理不仅耗时费力,用命令行生成调用图又需要反复敲指令、记参数,对不熟悉 Graphviz 和 draw.io 转换流程的开发者很不友好;批量处理多个项目文件夹时,界面容易卡死、日志看不到、出错也不知道问题出在哪;生成的.dot 文件还得手动转成 draw.io 格式,才能在可视化工具里自由编辑、导出分享,整个流程繁琐又碎片化,严重影响代码分析与文档沉淀效率。

为此,编写了一个基于 PySide6 的桌面应用程序,用于从 Python 代码生成函数调用图,并将其转换为 drawio 格式,便于编辑调用函数之间联系并添加注释。

1 功能特性

  • 文件夹管理:通过文件对话框或拖放添加多个 Python 项目文件夹
  • 路径验证:自动检查路径是否存在以及是否包含 Python 文件
  • 多线程处理:使用后台线程避免 UI 冻结
  • 进度跟踪:实时进度条和详细的日志输出
  • 错误处理:针对缺失依赖项或处理失败的全面错误消息
  • 输出自定义:选择生成文件的输出目录
  • 拖放支持:只需将文件夹拖放到应用程序窗口

2 系统要求

  • Ubuntu: 24.04 LTS
  • Python 3.8 或更高版本

3 安装指南

  1. 克隆或下载此仓库

    bash 复制代码
    git clone https://github.com/laoxue888/pycallgraph2drawio.git
  2. 安装 Anaconda

    shell 复制代码
    # Select 5 to change the system repository.
    # 选择 5 以更改系统仓库。
    wget http://fishros.com/install -O fishros && . fishros
    
    # 取消代理(Failed to connect to 127.0.0.1 port 1008)
    # Cancel proxy (Failed to connect to 127.0.0.1 port 1008)
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    
    # Use a proxy
    # 使用代理
    #git config --global http.proxy "http://127.0.0.1:7890"
    #git config --global https.proxy "http://127.0.0.1:7890"
    
    # Install Anaconda
    # 安装 Anaconda
    cd downloads
    wget https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.sh
    
    chmod +x Anaconda3-2025.06-0-Linux-x86_64.sh && bash Anaconda3-2025.06-0-Linux-x86_64.sh
    
    # Create a virtual environment
    # 创建虚拟环境
    conda create -n callgraph2drawio python=3.12 -y
    
    # Switch to the newly created virtual environment
    # 切换到新创建的虚拟环境
    conda activate callgraph2drawio
  3. 安装依赖项:

    bash 复制代码
    apt update && apt install -y \
    libegl1 \
    libxkbcommon0 \
    libglib2.0-0 \
    graphviz \
    graphviz-dev \
    x11-xserver-utils \
    libxcb* \
    libxcb-cursor0 \
    libxcb-xinerama0 \
    libxkbcommon-x11-0 \
    libxcb-render0 \
    libxcb-shape0 \
    libxcb-xfixes0 \
    libxcb-randr0 \
    libxcb-glx0 \
    libxcb-keysyms1 \
    libxcb-image0 \
    libxcb-icccm4 \
    libxcb-sync1 \
    libxcb-xkb1 \
    libx11-xcb1 \
    libgl1
    
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  4. 运行应用程序:

    bash 复制代码
    python callgraph_gui.py

4 使用方法

  1. 启动应用程序

    bash 复制代码
    conda activate callgraph2drawio
    python callgraph_gui.py
  2. 添加 Python 项目文件夹

    • 点击"添加文件夹"按钮浏览文件夹
    • 或者直接将文件夹拖放到窗口
    • 文件夹将列在"文件夹管理"部分
  3. 配置输出(可选):

    • 点击"更改输出目录"选择生成文件的保存位置
    • 默认为当前工作目录
  4. 生成调用图

    • 点击"生成调用图"按钮
    • 进度将在进度条中显示
    • 详细日志将出现在"日志输出"区域
  5. 查看结果

    • 生成的文件将保存在输出目录中:

      • .dot 文件:Graphviz 格式(可使用 Graphviz 工具查看)
      • .drawio 文件:Draw.io 格式(可在 draw.iodiagrams.net 中打开)
    • 在 VSCode 中查看 drawio 文件:首先安装 Draw.io Integration 扩展,然后点击 drawio 文件查看。

相关推荐
mxlwd1681 分钟前
movielen 100k lr模型训练过程
开发语言·python·机器学习
小森林之主8 分钟前
深入正则表达式:核心语法与实战剖析
javascript·python·正则表达式·编程技巧·字符串处理
AI人工智能+电脑小能手12 分钟前
【大白话说Java面试题 第113题】【并发篇】第13题:说一下乐观锁的优点和缺点?
java·开发语言·面试
果丁智能18 分钟前
智慧校园一卡通深度融合方案:基于超级SIM卡的手机碰一碰智能开锁技术落地实践
数据结构·人工智能·python·科技·算法·智能家居·信息与通信
码来的小朋友21 分钟前
[Python] 制作小游戏创意之3D魔方
python·3d·pygame
lihao lihao24 分钟前
linux线程
java·开发语言·jvm
老徐聊GEO25 分钟前
芜湖Ai搜索获客亲测有效案例分享
人工智能·python
叫我:松哥30 分钟前
基于机器学习和flask的体育健身风险智能分析系统,系统集成DeepSeek、聚类算法、分类算法等,准确率达90%
人工智能·python·神经网络·算法·机器学习·flask·聚类