看见代码的"灵魂" — 跨平台执行流可视化 IDE
当你阅读像 Linux 内核这样的超大型代码库(2000万+ 行)时,现有 IDE 都会"迷路":
// 😵 传统 IDE 在这里就断了
INIT_WORK(&dev->work, my_handler); // 绑定
schedule_work(&dev->work); // 触发 → ??? 谁被调用?
request_irq(irq, irq_handler, ...); // 注册 → ??? 何时执行?
static struct file_operations fops = {
.read = my_read, // 赋值 → ??? 谁调用 .read?
};FlowSight 通过理解代码语义来解决这个问题:
| 特性 | 描述 |
|---|---|
| 🔍 静态分析 | 不需要运行代码,纯代码阅读 |
| 🧠 语义理解 | 理解异步机制、回调模式、函数指针 |
| 📊 可视化 | 完整的执行流程图 |
| 🖥️ 跨平台 | Windows (首选) / Linux / macOS |
| 🌐 多语言界面 | 简体中文 + English |
| 功能 | 描述 |
|---|---|
| 执行流可视化 | 查看代码如何通过异步处理程序、回调和函数指针流动 |
| 函数指针解析 | 追踪 ops 表、变量赋值、基于类型的匹配 |
| 异步机制追踪 | 工作队列、定时器、中断、tasklet、kthreads |
| 调用图分析 | 交互式调用图,支持过滤和搜索 |
| 结构体关系图 | 可视化数据结构之间的关系 |
| 知识库驱动 | 内置对常见框架的理解 |
| 语言 | 状态 |
|---|---|
| C | ✅ 完整支持 |
| C++ | 🚧 计划中 |
| Rust | 🚧 计划中 |
| Java/Kotlin (Android) | 📅 v2.0 |
| Go | 📅 未来 |
| 优先级 | 平台 | 版本 |
|---|---|---|
| P0 | Linux Kernel | v1.0 |
| P1 | Android System | v2.0+ |
| P2 | 其他平台 | 未来 |
🚧 开发中 - 以下是计划的界面布局:
┌─────────────────────────────────────────────────────────────────────────┐
│ 📁 文件 📝 编辑 🔍 视图 📊 分析 ❓ 帮助 │
├──────┬──────────────────────────────────────────────────┬───────────────┤
│ │ │ │
│ 📁 │ ┌──────────────────────────────────────────┐ │ 📋 大纲 │
│ 文件 │ │ // usb_driver.c │ │ ├─ probe │
│ 浏览 │ │ static int usb_probe(struct usb_device) │ │ ├─ disconnect│
│ 器 │ │ { │ │ └─ suspend │
│ │ │ INIT_WORK(&dev->work, handler); │ │ │
│ │ │ ... │ ├───────────────┤
│ │ └──────────────────────────────────────────┘ │ 📊 执行流 │
│ │ │ ┌───────────┐│
│ │ ┌──────────────────────────────────────────┐ │ │ probe ││
│ │ │ 🔗 执行流视图 │ │ │ ↓ ││
│ │ │ ┌─────────┐ ┌─────────┐ │ │ │ INIT_WORK ││
│ │ │ │ probe │ ───→ │ handler │ │ │ │ ↓ ││
│ │ │ └─────────┘ └─────────┘ │ │ │ schedule ││
│ │ └──────────────────────────────────────────┘ │ └───────────┘│
├──────┴──────────────────────────────────────────────────┴───────────────┤
│ ✅ 索引完成: 15,234 符号 | 📊 分析就绪 │
└─────────────────────────────────────────────────────────────────────────┘
⏳ 即将发布
访问 Releases 页面下载:
| 平台 | 文件 |
|---|---|
| Windows | flowsight-x.x.x-windows.msi |
| Linux | flowsight-x.x.x-linux.AppImage 或 .deb |
| macOS | flowsight-x.x.x-macos.dmg |
| 依赖 | 版本 | 安装说明 |
|---|---|---|
| Rust | 1.75+ | rustup.rs |
| Node.js | 20+ | nodejs.org |
| pnpm | 8+ | npm install -g pnpm |
# 1. 安装 Rust (在 PowerShell 中运行)
winget install Rustlang.Rustup
# 或从 https://rustup.rs 下载安装程序
# 2. 安装 Node.js
winget install OpenJS.NodeJS.LTS
# 3. 安装 pnpm
npm install -g pnpm
# 4. 克隆并构建
git clone https://github.com/TbusOS/flowsight.git
cd flowsight/app
pnpm install
pnpm tauri dev
# 5. 构建发布版本 (生成安装包)
pnpm tauri build
# 输出: target/release/bundle/msi/flowsight_*.msi# 1. 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# 2. 安装 Node.js (推荐使用 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install 20
nvm use 20
# 3. 安装 pnpm
npm install -g pnpm
# 4. 克隆并构建
git clone https://github.com/TbusOS/flowsight.git
cd flowsight/app
pnpm install
pnpm tauri dev
# 5. 构建发布版本
pnpm tauri build
# macOS: target/release/bundle/dmg/flowsight_*.dmg
# Linux: target/release/bundle/deb/flowsight_*.deb
# target/release/bundle/appimage/flowsight_*.AppImage📁 打开项目 → 选择 C 代码目录
或
📄 打开文件 → 选择单个 .c/.h 文件
- 左侧面板: 文件树 + 函数列表
- 中间面板: 代码编辑器 (多标签页)
- 右侧面板: 执行流图
- 点击右侧 函数列表 中的函数
- 查看该函数的 完整调用链
- 点击节点跳转到代码
| 视图 | 说明 |
|---|---|
| 📊 图形 | 可视化调用图 (默认) |
| 📝 文本 | ftrace 风格文本输出 |
| 🌳 树形 | 缩进层级树 |
| 快捷键 | 功能 |
|---|---|
Ctrl+P / Cmd+P |
打开命令面板 (搜索文件/符号) |
Alt+← / Alt+→ |
后退/前进导航 |
Ctrl+\ |
切换侧边栏 |
| 鼠标侧键 | 后退导航 |
在文本视图中,点击 📥 导出 按钮:
.txt- 纯文本 ftrace 格式.md- Markdown 文档.json- 结构化 JSON
| 文档 | 描述 |
|---|---|
| 项目计划 | 完整的项目规划和路线图 |
| 用户指南 | 使用教程 (开发中) |
| 开发者指南 | 开发与贡献指南 |
| 架构设计 | 技术架构文档 |
| 国际化 | 多语言支持与翻译贡献 |
┌─────────────────────────────────────────────────────────────────┐
│ FlowSight │
├─────────────────────────────────────────────────────────────────┤
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Tauri 桌面应用 (React + TypeScript + Monaco) │ │
│ │ 支持语言: 简体中文 | English │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ Rust 分析引擎 │ │
│ │ ├── flowsight-parser (tree-sitter + libclang) │ │
│ │ ├── flowsight-analysis (异步追踪, 函数指针解析) │ │
│ │ ├── flowsight-index (符号表, 调用图) │ │
│ │ └── flowsight-knowledge (模式匹配, 知识库) │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ 存储: SQLite (符号) + sled (图) │ │
│ └───────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
欢迎贡献!请查看 CONTRIBUTING.md 了解详情。
# 克隆仓库
git clone https://github.com/TbusOS/flowsight.git
cd flowsight
# 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 安装前端依赖
pnpm install
# 开发模式运行
cargo tauri dev
# 运行测试
cargo test --workspace| 类型 | 描述 |
|---|---|
| 🐛 Bug 修复 | 修复已知问题 |
| 📚 文档 | 改进文档和翻译 |
| 🔧 解析器 | 添加新语言支持 |
| ✨ UI/UX | 界面改进 |
| 🧪 测试 | 增加测试覆盖 |
| 🌐 翻译 | 添加新语言包 |
MIT License - 详见 LICENSE
- tree-sitter - 增量解析
- Tauri - 桌面应用框架
- Monaco Editor - 代码编辑器
- Linux Kernel 社区 - 理解复杂代码库的灵感来源
用 ❤️ 为想要真正理解代码的开发者打造