4.8 KiB
4.8 KiB
目录结构审计报告(Dart/Flutter OpenAPI 代码生成器)
最后更新:2025-11-22 适用范围:lib/、templates/、docs/、test/、example/**(忽略 build/.dart_tool 等生成产物)
一、lib/ 目录结构(第二层深度)
lib/
commands/
base_command.dart
generate_command.dart
services/
config/
error_rules.yaml
core/
config.dart
config_repository.dart
error_reporter/ # models / reporter / renderers
error_reporter.dart # 聚合导出
error_rules.dart
exceptions/ # 细分异常定义
exceptions.dart # 聚合导出
models/ # Swagger 核心模型
models.dart # 聚合导出
performance_parser.dart
template/ # TemplateLoader (part of template_renderer)
template_renderer.dart
generators/
base_generator.dart
model/
model_code_generator.dart
retrofit_api/
retrofit_api_generator.dart
parsers/
swagger_data_parser.dart
swagger_fetcher.dart
templates/
api/
common/
models/
utils/
cache_manager.dart
file_utils.dart
logger.dart
path_resolver.dart
performance_monitor.dart
reference_resolver.dart
string_utils.dart # 统一导出
string_utils/ # naming_converter / template_service / text_cleaner
type_validator.dart
validators/
core/
rules/
enhanced_validator.dart
schema_validator.dart
swagger_cli_new.dart
swagger_generator_flutter.dart # 顶层聚合导出
关键聚合导出文件:
- lib/swagger_generator_flutter.dart(对外公共 API 入口)
- lib/core/error_reporter.dart(聚合导出 models/reporter/renderers)
- lib/core/models.dart(聚合导出核心模型)
- lib/utils/string_utils.dart(聚合导出 naming_converter/template_service/text_cleaner)
二、职责边界与潜在问题
- commands:参数解析 + 流程编排(解析→验证→生成→落盘),OK
- config:以 ConfigRepository 为主,SwaggerConfig 静态 getter 兼容,OK
- core:通用核心(模型/异常/错误报告/模板渲染/并行解析),OK
- parsers:SwaggerFetcher/SwaggerDataParser(获取与解析),OK
- validators:SchemaValidator 基础规则 + EnhancedValidator 装饰增强(依赖 ErrorReporter),OK
- generators:ModelCodeGenerator / RetrofitApiGenerator + Mustache 模板,OK
- utils:通用工具(I/O/路径/引用解析/字符串处理),OK
- templates:Mustache 模板,OK
发现与建议:
- 依赖方向基本自上而下,无循环依赖。TemplateLoader 依赖 PathResolver,合理。
- 工具分层已明确:string_utils(面向生成)与 file/path(基础设施)分离,良好。
- validators 下“增强 vs 基础”是装饰关系,不应合并;已在文档中明确。
- 顶层导出 swagger_generator_flutter.dart 已聚合核心能力,但 generators/validators/core/utils 的暴露范围建议仅保留聚合导出,避免深层路径泄漏。
三、跨层依赖与改进机会
- 配置注入点:
- TemplateRenderer/GenerationOutputService 等处已采用 ConfigRepository.loadSync(),建议命令层集中创建单例并向下传递(可选优化)。
- 模板上下文基线:
- TemplateRenderer._buildBaseContext 固化生成器名称/作者/版权,已统一。
- 输出服务边界:
- GenerationOutputService 已与生成器/文件写入解耦,清晰。
四、重复与冗余排查(enhanced/improved/v2)
- validators:EnhancedValidator(装饰器)与 SchemaValidator(基础)——场景互补,保留两者。
- config:已迁移至 ConfigRepository,ConfigLoader 已移除(docs/MIGRATION_CONFIG_LOADER.md 已提供映射)。
- 其他 v2/Enhanced 字样多为注释/示例,不构成并行实现。
结论:无须删除新增模块;已冗余项(ConfigLoader)已处置。
五、风险点
- 外部引用深层路径的风险:建议对外仅使用 swagger_generator_flutter.dart 和若干聚合导出;在 USAGE 指南提示。
- 模板根目录查找优先级:TemplateLoader 的向上搜集策略需在文档中明确(建议:自定义根 > 配置目录 > 工作目录链)。
六、关系示意(Mermaid)
flowchart TD
CLI[CLI / Command] --> CFG[ConfigRepository]
CLI --> PF[SwaggerFetcher]
PF --> SDP[SwaggerDataParser]
SDP --> VAL[SchemaValidator]
VAL -->|decorate| EV[EnhancedValidator]
EV --> ER[ErrorReporter]
SDP --> MODELS[Core Models]
CLI --> GEN[Generators]
GEN --> MC[ModelCodeGenerator]
GEN --> RG[RetrofitApiGenerator]
RG --> TR[TemplateRenderer]
TR --> TS[TemplateService]
CLI --> OUT[GenerationOutputService]
subgraph Utils
FU[FileUtils]
PR[PathResolver]
RR[ReferenceResolver]
SU[StringUtils]
end
GEN -.-> Utils
SDP -.-> Utils
CLI -.-> Utils