swagger_generator_flutter/check_list.md

5.2 KiB
Raw Blame History

重构检查清单

生成时间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] 并补充简短说明。