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 文件查看。

相关推荐
蒙奇·D·路飞-2 小时前
大模型时代下 Java 后端开发的技术重构与工程实践
java·开发语言·重构
极光代码工作室2 小时前
基于NLP的智能客服系统设计与实现
python·深度学习·机器学习·ai·自然语言处理
wljy12 小时前
Qt入门(一)
开发语言·qt
Mr_Xuhhh2 小时前
深入Java多线程进阶:从锁策略到并发工具全解析
前端·数据库·python
ZK_H3 小时前
半导体工艺流程
java·c语言·开发语言·计算机网络·金融
apcipot_rain3 小时前
Python实战——蒙特卡洛模拟分析杀牌游戏技能收益
python·游戏·数学建模
计算机安禾3 小时前
【数据结构与算法】第39篇:图论(三):最小生成树——Prim算法与Kruskal算法
开发语言·数据结构·c++·算法·排序算法·图论·visual studio code
liliangcsdn3 小时前
sentence-transformer如何离线加载和使用模型
开发语言·前端·php
Crazy________3 小时前
4.10dockerfile构建镜像
java·开发语言