swagger_generator_flutter/check_list.md

23 lines
5.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.

# 重构检查清单
生成时间2025-11-22请在执行前更新
| 状态 | 文件 | 主要痛点 | 首要行动 |
| --- | --- | --- | --- |
| [x]2025-11-22拆分 models 子模块 + 补齐 SwaggerDocument/path 覆盖测试,全量 `dart test` 通过) | lib/core/models.dart2550 行) | 所有 Swagger 数据结构堆在同一文件,路径解析丢失同一路径的不同方法。 | 拆分为 `models/` 子模块(服务器/路径/组件等),为路径增加 `path + method` 组合键并补充 `toJson`/序列化能力。 |
| [x]2025-11-22拆分文档合并、过滤与输出服务GenerateCommand 仅负责编排) | lib/commands/generate_command.dart231 行) | `execute` 过度膨胀,混合网络、合并、文件写入,没有可测试的服务边界。 | 拆出文档合并器、生成任务调度器与文件写入服务,`GenerateCommand` 仅负责参数解析和 orchestration。 |
| [x]2025-11-22重构 RetrofitApiGenerator 使用 Mustache 模板) | lib/generators/retrofit_api_generator.dart | 代码生成逻辑硬编码,难以维护和扩展。 | 引入 Mustache 模板引擎,分离数据准备与代码生成逻辑,支持更灵活的定制。 |
| [x]2025-11-22构建 ValidationRule/ValidationContext 体系,拆分路径/模型/安全等规则) | lib/validators/schema_validator.dart1104 行) | 所有校验逻辑耦合在单类中,依赖可变全局状态 `_errors/_warnings`,无法选择性启用规则。 | 构建 `ValidationRule`/`ValidationContext` 体系,拆分路径/模型/安全等规则,结果结构化返回。 |
| [x]2025-11-22引入 ConfigRepository 实例,提取 PathResolver | lib/core/config_loader.dart641 行) | 静态缓存直接暴露可变 Map路径查找逻辑与 FileUtils 重复。 | 引入 `ConfigRepository` 实例,返回只读视图;提取公共路径查找工具供 Config/FileUtils 共用。 |
| [x]2025-11-22复用 SchemaValidator 结果模型,统一验证逻辑) | lib/utils/type_validator.dart620 行) | 自定义 `ValidationResult`/`ValidationError` 与其它验证器同名易冲突,且 `_isValidPropertyType` 恒返回 true实际未验证。 | 将类型验证拆成 `ModelRules`/`PropertyRules` 并复用 schema validator 的结果模型,补齐类型枚举校验与引用完整性。 |
| [x]2025-11-22重构为装饰器复用 SchemaValidator | lib/validators/enhanced_validator.dart593 行) | 与 `SchemaValidator` 大量重复规则,仅输出格式不同,维护成本高。 | 做成装饰器:在基础验证通过后由 `ErrorReporter` 转换消息,复用统一规则集。 |
| [x]2025-11-22提取 SwaggerFetcher实现异步 IO 和内容哈希缓存) | lib/parsers/swagger_data_parser.dart586 行) | 缓存 key 使用 `jsonData.hashCode`同内容命中率不可控IO 均为同步调用阻塞事件循环。 | 抽出 `SwaggerFetcher`(文件/HTTP 分离)+ 流式解析器,使用内容哈希或 URL 作为缓存键并切换到 `await File.readAsString`。 |
| [x]2025-11-22全异步 IO 改造,集成 PathResolver | lib/utils/file_utils.dart531 行) | 多个方法(目录检查、配置查找)与 ConfigLoader 重复;异步 API 内部大量 `existsSync/listSync` 阻塞。 | 提供 `PathResolver` + 异步文件抽象,底层统一使用 `FileStat`/`await`,并直接复用 ConfigLoader 的路径缓存。 |
| [x]2025-11-22使用 Isolate.run 实现真并行解析) | lib/core/performance_parser.dart486 行) | “并行”解析只是 `Future.wait` 包裹同步逻辑,且 `_parsePathsSequential` 吞掉异常。 | 使用 isolate/worker 池真正并行解析,并在 chunk 解析失败时返回上下文信息;提供策略配置。 |
| [x]2025-11-22迁移到 YAML 配置,运行时加载) | lib/core/error_rules.dart479 行) | 大量硬编码规则与 EnhancedValidator 描述重复,难以扩展/本地化。 | 将规则迁移到可配置的 YAML/JSON运行时加载并支持版本化、分组与动态开关。 |
| [x]2025-11-22拆分为 exceptions/ 子目录,使用 mixin 共享格式化) | lib/core/exceptions.dart478 行) | 聚合了十余个异常定义和处理逻辑,`ExceptionHandler` 只支持完全匹配类型且无法取消注册。 | 拆分为 `exceptions/` 子目录,提供 mixin/基类共享格式化,并让处理器支持层级匹配与作用域注册。 |
| [x]2025-11-22拆分为 error_reporter/ 子目录,包含 models/reporter/renderers | lib/core/error_reporter.dart460 行) | 数据类型定义、收集逻辑、报告渲染全部揉在同一文件,难以测试和替换输出格式。 | 拆成 data model / reporter / renderer 三部分,可插拔 JSON、文本、CI 输出器,并引入不可变 `DetailedError`. |
| [x]2025-11-22拆分为 string_utils/ 子目录,包含 naming_converter/text_cleaner/template_service主文件作为统一导出接口 | lib/utils/string_utils.dart421 行) | 单文件包含命名转换、注释模板、复数化等杂项,并频繁同步读取配置。 | 根据职责拆分(命名转换/注释模板/文本清理),缓存配置项并提供可注入模板服务。 |
> 勾选项请在对应文件完成重构后更新为 `[x]` 并补充简短说明。