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

2.2 KiB
Raw Blame History

函数提取和缓存功能说明

功能概述

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