这是一个用于优化Python类型注解体验的VS Code插件。主要功能包括:
- 提供内置类型的自动完成
- 支持typing模块类型的自动导入和完成
- 支持自定义类型的收集和完成
- 支持参数类型、返回值类型、变量类型的注解
- 支持工作区文件的类型搜索和缓存
extension.ts (入口) │ ├─── terminal/ (终端处理层) │ ├── ParamCompletionProvider ────┐ │ ├── ReturnValueCompletionProvider ├── 继承 BaseCompletionProvider │ └── VariableCompletionProvider ────┘ │ │ │ ├─── typeProcess/ (类型处理层) │ │ ├── BaseTypeProcess │ │ └── CustomTypeProcess │ │ │ │ │ └─── typeData/ (类型数据层) │ │ ├── BaseTypes │ │ └── CustomTypes │ │ │ └─── services/ (服务层) │ ├── ASTService │ ├── CacheService │ └── TypeAnalyzer │ └─── settings.ts (配置管理)
- 负责处理不同场景下的类型提示
- 包含三个主要提供者:
- ParamCompletionProvider: 参数类型提示
- ReturnValueCompletionProvider: 返回值类型提示
- VariableCompletionProvider: 变量类型提示
- BaseTypeProcess: 处理内置类型和typing模块类型
- CustomTypeProcess: 处理自定义类型、导入类型等
- ASTService: 负责代码解析和AST树操作
- CacheService: 负责缓存AST树和类型信息
- TypeAnalyzer: 负责分析类型信息
- BaseTypes: 定义基础类型和typing模块类型
- CustomTypes: 管理自定义类型数据
- tree-sitter: 用于解析Python代码生成AST
- tree-sitter-python: Python语言的tree-sitter语法
- vscode: VS Code扩展API
- webpack: 用于打包
- 插件激活时注册三种类型的CompletionProvider
- 用户输入触发字符(: 或 >)时触发对应的Provider
- Provider通过TypeAnalyzer分析代码上下文
- 根据分析结果从BaseTypeProcess和CustomTypeProcess获取类型建议
- 返回补全列表给VS Code
- 单例模式确保全局状态一致性
- 使用AST进行准确的代码分析
- 支持工作区文件监听和实时更新
- 类型信息缓存提升性能
- 支持类型的自动导入
项目采用分层架构,各层之间通过接口通信,便于:
- 添加新的类型提示场景
- 扩展类型处理逻辑
- 添加新的代码分析功能
这个项目的架构设计清晰,模块化程度高,扩展性好。通过分层设计将不同职责的代码分离,使得代码易于维护和扩展。