# AI 单测一键生成与覆盖率分析设计 ## 目标 让用户在“项目与增量”Tab 内完成从增量分析到单测生成、Maven 验证和 JaCoCo 增量覆盖率计算的完整流程,避免任务停在 `ANALYZED` 状态而误以为覆盖率生成失败。 ## 交互设计 - “项目与增量”Tab 提供主操作“生成单测并分析覆盖率”。 - 主操作按顺序执行:增量分析、CodeFree 生成单测、Maven 测试编译、Maven/JaCoCo 测试、增量覆盖率计算。 - 保留“仅分析增量”作为次要操作,用于检查增量范围。 - 执行成功后自动展示“结果与合并”Tab,并优先展示覆盖率结果;生成文件仍可在结果区查看。 - 任一阶段失败后自动展示“运行日志”,状态栏说明失败阶段,不将 `ANALYZED` 表示成完整任务成功。 - 工具链 Tab 不在启动或主流程中自动展开、切换或弹出。只有工具链缺失或验证失败时,提示用户进入该 Tab 处理。 ## 默认工具链配置 - 用户保存过配置时始终优先使用保存值。 - 没有保存配置或对应路径为空时执行自动探测: 1. JDK 8 优先读取 `JAVA_HOME`,其次根据当前 `java.home` 识别 JDK 根目录;若运行时位于 `jre` 子目录则取父目录。 2. Maven 优先读取 `MAVEN_HOME` 或 `M2_HOME`,其次调用全局 `mvn -version` 并解析 `Maven home:`。 3. CodeFree 使用全局命令 `codefree`。 - 当前 Windows 开发环境的兜底值为: - JDK 8:`C:\Program Files\Java\jdk-1.8` - Maven:`D:\bestpay-maven\apache-maven-3.8.6` - Windows 兜底仅在路径真实存在时使用;macOS/Linux 不写入 Windows 路径,保持跨平台探测。 - 成功探测出的配置保存到现有 `settings.properties`,后续启动直接复用。 ## 执行与状态模型 - 复用现有 `AiTestWorkflow.analyze` 与 `generateAndVerify`,由界面层的一键协调方法串联,不复制领域逻辑。 - 第一步返回 `ANALYZED` 时立即进入生成验证;返回 `FAILED` 或 `CANCELLED` 时停止。 - 一键任务从开始到最终状态只维护一次 busy/progress 生命周期,防止两段异步调用之间按钮闪烁或旧结果覆盖新结果。 - 保留现有最新请求保护逻辑;项目切换或重复操作不得用旧异步结果覆盖当前选择。 ## 错误处理 - 工具链路径无效时在执行前失败,提示缺失项并定位到工具链配置,而不是启动 CodeFree/Maven 后才失败。 - CodeFree、测试编译、测试执行和覆盖率计算的失败分别保留原始日志,并显示可读阶段信息。 - 覆盖率未生成时明确显示失败原因,不只显示“尚无覆盖率结果”。 ## 测试策略 - 配置测试覆盖已保存值优先、环境变量探测、`java.home` 的 `jre` 归一化、`mvn -version` 解析及 Windows 兜底存在性。 - JavaFX 结构测试覆盖第一 Tab 的主/次操作以及工具链 Tab 默认不被选择。 - 协调流程测试覆盖:分析成功后继续生成、分析失败时停止、最终覆盖率被渲染、失败时切换运行日志。 - 回归测试继续使用 `master...DEV_1156339215001460262`,验证 `ft-loancapital-core-start` 的显式目标引用分析不受影响。 ## 范围限制 - 不实现 MixMax3。 - 不修改 CodeFree CLI 的协议和现有质量规范格式。 - 不自动合并生成代码;仍需用户审核后显式合并到目标本地分支。 - 不优化“手机 UI 自动化”插件。