草稿
[WIP][bugfix][ide-plugins] #69 修复 SDK 路径解析与终端版本不一致 #61
[WIP][bugfix][ide-plugins] #69 修复 SDK 路径解析与终端版本不一致 #61
草稿
guomengwei创建于 7月16日
guomengwei成员
7月16日

问题单 PR 模板

关联信息

  • Issue:#69
  • 里程碑(可选):无

问题描述(必填)

复现路径:

  1. 在 User 设置中为 CJMP.sdkPath 配置有效的 CJMP SDK 路径。
  2. 在 Workspace 设置中将 CJMP.sdkPath 设为空字符串,执行 CJMP 构建、运行或设备查询。
  3. 在插件使用 CJMP SDK 0.5.x 时,从已打开的 VS Code 终端执行 keels,终端可能命中系统 PATH 中的旧版 SDK。

现象:

  • 空 Workspace 配置会遮盖有效的 User 配置,导致插件报错找不到 CJMP SDK。
  • CJMP.sdkPath 文案表示 SDK 根目录,代码却按 cjmp-tools/bin 使用,配置、CJMP_SDK_HOME 与实现语义不一致。
  • 插件内部和 VS Code 终端可能使用不同版本的 keels

根因分析:

  • 直接调用 VS Code 配置合并结果,无法区分 Workspace 空字符串和 User 非空值。
  • 各功能模块分别读取并拼接 CJMP.sdkPath,缺少统一的 SDK 根目录解析与工具路径构造入口。
  • 插件未把解析出的 cjmp-tools/bin 同步到新建终端的 PATH

解决方案(必填)

核心改动:

  • 新增统一的 CJMP SDK 解析模块,按 Workspace 非空值、User 非空值、CJMP_SDK_HOMEPATH 中的 keels 顺序解析 SDK 根目录。
  • 统一 CJMP.sdkPath 为 SDK 根目录语义,插件执行 keelsdevtools 时集中拼接 cjmp-tools/bin;兼容并归一旧版 cjmp-tools/bin 配置。
  • 新增默认开启的 CJMP.syncSdkPathToTerminal 开关,通过 VS Code 环境变量集合为新终端 prepend cjmp-tools/bin,避免重复注入;路径变化时提示重启已有终端。
  • 更新 README、配置项说明和相关测试。

影响范围:

  • 影响 CJMP 项目创建、构建、运行、调试、设备与模拟器查询、性能工具路径解析,以及新建 VS Code 终端的 PATH
  • 保留旧版 cjmp-tools/bin 配置兼容,未改变现有 CLI 参数和项目格式。

用户可见变更(若无则写“无”)

  • CJMP.sdkPath 明确配置为 CJMP SDK 根目录。
  • 新增 CJMP.syncSdkPathToTerminal 设置,默认开启。
  • SDK 或终端同步开关变化后,如已有终端仍在运行,会提示重启终端。

自验方案(必填)

测试用例:

  • npm test
  • 验证 Workspace 空字符串不会遮盖 User 非空配置。
  • 验证 Workspace、User、CJMP_SDK_HOMEPATH 的非空优先级。
  • 验证 SDK 根目录拼接 keels/devtools 路径及旧版 bin 配置归一。
  • 验证终端 PATH prepend、关闭开关和重复更新行为。

验证环境:

  • 版本/分支/commit:bugfix/sdk-path-resolution / bf34b15
  • 设备与系统:macOS,VS Code Extension Host 1.129.0,CJMP SDK 0.5.1;125 项测试通过,覆盖率 82.59%
likedislike
CLA协议签署
当前Pull Request的提交暂无外部代码贡献者
合并受阻
Gguomengwei成员
7月16日 关联了issue:[bug] VS Code 中cjmp sdk path 的workspace配置和user配置不一致时,报错找不到cjmp sdk
Gguomengwei成员
7月16日 设置为草稿状态
Gguomengwei成员
17 天前 删除了关联的issue:[bug] VS Code 中cjmp sdk path 的workspace配置和user配置不一致时,报错找不到cjmp sdk