Repository navigation
feat(java): 支持依赖类源码导航并容忍缺失内部类 - #14
Merged
Merged
Conversation
21 of 22 tasks
1lck
marked this pull request as ready for review
November 14, 2026 06:44
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
关联 Issue / Linked issue
PR 类型 / Type
改动说明 / What changes
背景 / Why
JDT 能返回二进制依赖的定义 URI,但此前插件没有注册内容提供者,用户无法打开只读类源码。残缺旧库另有上游缺陷:外部类引用未提供的内部类时,JDT 1.61 的 FernFlower 集成放弃整个外部类。公开 1.1.3 明确不支持该路径,新增能力按 SemVer 准备 1.2.0 预发布,不修改已公开包。
改动 / Changes
java.classFileContents,在返回有效 JDT 启动方案前以既有文档 API 注册jdt:提供者,随后按工作区代际同步/释放订阅。注册失败诊断降级,保留已有项目工作流。不在本 PR 范围内 / Out of scope
JSP Java 补全/跳转、缺失第三方依赖或内部类恢复、原生窗口、完整日志 UI、全部测试运行器/Spring/MyBatis 验收、内存整体优化。旧客户端仍可运行已支持工作流,但新类视图连续导航需配套 Viva 修复。既有长 module-path 等限制继续保留。
类型专属:feat
多平台对齐
范围检查 / Scope checks
逻辑归属 / Logic placement
多平台功能矩阵 / Platform feature matrix
统一日志系统 / Unified logging
界面文案 / i18n
N/A:没有新增界面贡献;协议错误使用插件既有错误模型,宿主沿用共享本地化错误提示。
性能与内存 / Performance and memory
设置 / Settings
N/A:没有新增设置。
插件契约 / Plugin contract
N/A:使用既有
documents/registerContentProvider、插件函数和语言服务器请求。SDK 固定 65cf823,API/能力版本 0 不变,无新宿主方法或协议。发行包与资源 / Bundle and resources
无用代码与重构 / Dead code and refactoring
验证 / Verification
残缺内部类回归在未打补丁的原始 JDT 包上失败(外部类为空),补丁后通过;公开回归仅由自建 Java 源码编译 JAR,故意不打包一个内部 class。另用本地私有旧库验证类型和方法落点、类间连续导航,内容仅保留在忽略的私有诊断目录。
未能执行的检查和原因: Intel macOS 包做交叉构建和结构验证,没有 Intel 真机;Windows 是 ARM 来宾运行 x64 工具,其耗时不代表原生 AMD64;原生 UI 与全部日志路径未验收。
提交前确认 / Final checks
最终发布
已压缩合并为 5c13e96,发布 v1.2.0 预览版(6 个资产),release workflow 43568101378 全部成功。下载 ZIP 的 SHA-256、两个 macOS 包的布局/许可/原生 JVM 签名/补丁哈希,以及 Windows 包的许可和补丁完整性均通过。实际 macOS 下载包通过二进制导航 / Gradle / Maven(12.07 / 38.07 / 20.43 秒);最新客户端 b358654ec / Core 2c1fed1 搭配发布工作流的静态 MSVC 后端,在 Windows 通过同组三流程(46.32 / 111.67 / 67.86 秒)。Windows 测试组装包与最终下载包全部运行文件内容相同,只有 JDT JAR 容器条目时间戳及记录其摘要的 patch.json 字节不同,JAR 内所有文件逐项内容一致。插件安装目录哈希不变,测试进程退出且 VM 已停止。配套客户端 #1906 压缩合并为 7c036b3,完整客户端 preview CI 43568818336 仍在运行;没有把它记为已通过。