Files
squirrelVsis/FUNCTION_EXTRACTOR.md
2025-09-17 10:54:25 +08:00

67 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 函数提取和缓存功能说明
## 功能概述
本项目新增了函数提取和缓存功能用于从nut文件中提取函数信息并进行缓存为后续的函数跳转功能做准备。
## 主要组件
### 1. FunctionInfo 接口
定义了函数信息的数据结构:
- `name`: 函数名称
- `filePath`: 文件路径
- `lineNumber`: 行号
- `parameters`: 参数列表
- `signature`: 函数签名
### 2. FunctionCacheManager 类
负责管理函数信息的缓存:
- 缓存函数信息
- 提供函数查找功能
- 统计缓存信息
- 缓存在VS Code会话期间一直有效直到重新获取nut文件时重置
### 3. FunctionExtractor 类
负责从文件中提取函数信息:
- 解析Squirrel语言的函数定义
- 批量处理文件
- 防止重复提取
- 性能监控
### 4. PerformanceMonitor 类
监控函数提取的性能:
- 记录提取时间
- 计算平均处理时间
- 提供性能统计信息
## 工作流程
1. 用户点击"连接到 pvfUtility"时系统自动获取所有nut文件内容
2. 连接成功后,自动启动函数提取过程
3. FunctionExtractor逐个解析文件中的函数定义
4. 提取的函数信息被缓存到FunctionCacheManager中
5. 缓存在VS Code会话期间一直有效
6. 当用户保存nut文件时自动更新对应文件的函数缓存
7. 性能数据被记录用于优化
## 性能优化措施
1. **批量处理**: 文件按批次处理,避免内存溢出
2. **并行处理**: 批次内的文件并行处理,提高效率
3. **缓存机制**: 避免重复解析已处理的文件
4. **增量更新**: 仅在文件保存时更新对应文件的缓存
5. **防重复提取**: 防止同时进行多次提取操作
6. **性能监控**: 监控提取性能,为优化提供数据支持
## 使用方法
1. 函数提取功能在用户连接到pvfUtility后自动执行无需手动操作。
2. 当用户保存nut文件时对应的函数缓存会自动更新。
3. 缓存在整个VS Code会话期间一直有效直到重新获取nut文件时重置。
## 后续开发
当前实现为函数跳转功能奠定了基础,下一步可以:
1. 实现函数跳转到定义功能
2. 添加函数引用查找功能
3. 提供函数自动补全功能