架构说明¶
项目结构¶
src/perfetto_cli/
├── cli.py # CLI 入口(Click 命令组)
├── types.py # 共享类型定义
├── core/
│ ├── trace_processor.py # TraceProcessor 封装
│ ├── query_engine.py # SQL 查询执行引擎
│ ├── trace_config.py # Trace 抓取配置
│ ├── trace_session.py # 设备 trace 会话管理
│ ├── adb.py # ADB 设备通信
│ └── skill_manager.py # Skills 插件系统
├── commands/
│ ├── anr.py # ANR 检测命令
│ ├── frame.py # 帧性能命令
│ ├── cpu.py # CPU 分析命令
│ ├── memory.py # 内存分析命令
│ ├── binder.py # Binder 分析命令
│ ├── query.py # SQL 查询命令
│ ├── trace.py # Trace 抓取命令
│ └── skills.py # Skills 管理命令
├── formatters/
│ ├── text_fmt.py # Rich 文本格式化器
│ ├── table_fmt.py # ASCII 表格格式化器
│ └── json_fmt.py # JSON 格式化器
└── utils/
└── sql_helpers.py # SQL 查询工具
关键设计决策¶
基于 Click 的 CLI¶
CLI 使用 Click 嵌套命令组。每个分析领域(anr, frame, cpu 等)是一个 Click 命令组,包含若干子命令。
TraceProcessor 封装¶
所有 trace 分析通过 core/trace_processor.py 进行,它管理 Perfetto SDK 中 trace_processor 二进制的生命周期。查询通过 Perfetto Python API 执行。
格式化器模式¶
输出格式化与分析逻辑解耦。每个命令返回结构化数据,格式化层根据 -f 标志处理展示。
查询引擎¶
core/query_engine.py 提供可重用的 PerfettoSQL 查询接口。分析命令使用 utils/sql_helpers.py 组合复杂查询。
依赖¶
| 包 | 用途 |
|---|---|
| click | CLI 框架和参数解析 |
| rich | 终端格式化和彩色输出 |
| perfetto | Trace 处理(包含 trace_processor) |