# 函数提取和缓存功能说明 ## 功能概述 本项目新增了函数提取和缓存功能,用于从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. 提供函数自动补全功能