3.4 KiB
3.4 KiB
AI 单测一键生成与覆盖率分析设计
目标
让用户在“项目与增量”Tab 内完成从增量分析到单测生成、Maven 验证和 JaCoCo 增量覆盖率计算的完整流程,避免任务停在 ANALYZED 状态而误以为覆盖率生成失败。
交互设计
- “项目与增量”Tab 提供主操作“生成单测并分析覆盖率”。
- 主操作按顺序执行:增量分析、CodeFree 生成单测、Maven 测试编译、Maven/JaCoCo 测试、增量覆盖率计算。
- 保留“仅分析增量”作为次要操作,用于检查增量范围。
- 执行成功后自动展示“结果与合并”Tab,并优先展示覆盖率结果;生成文件仍可在结果区查看。
- 任一阶段失败后自动展示“运行日志”,状态栏说明失败阶段,不将
ANALYZED表示成完整任务成功。 - 工具链 Tab 不在启动或主流程中自动展开、切换或弹出。只有工具链缺失或验证失败时,提示用户进入该 Tab 处理。
默认工具链配置
- 用户保存过配置时始终优先使用保存值。
- 没有保存配置或对应路径为空时执行自动探测:
- JDK 8 优先读取
JAVA_HOME,其次根据当前java.home识别 JDK 根目录;若运行时位于jre子目录则取父目录。 - Maven 优先读取
MAVEN_HOME或M2_HOME,其次调用全局mvn -version并解析Maven home:。 - CodeFree 使用全局命令
codefree。
- JDK 8 优先读取
- 当前 Windows 开发环境的兜底值为:
- JDK 8:
C:\Program Files\Java\jdk-1.8 - Maven:
D:\bestpay-maven\apache-maven-3.8.6
- JDK 8:
- 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 自动化”插件。