用光标和 GitLab 现代化 Java 笔记

用光标和 GitLab 现代化 Java

将 Java 8 现代化至 Java 21 是一项复杂的任务,涉及软件开发的众多方面。像 Cursor 这样的 AI 编码代理能够高效处理诸如修复单个失败测试等聚焦性任务,但无法独立确定多阶段迁移的整体安全策略。GitLab 通过其 Duo Agent 平台,在软件生命周期中编排 AI 工作流,以认证这些由 AI 生成的变更。问题层级结构以及 GitLab 的模型上下文协议(MCP)服务器为 Cursor 提供了必要的上下文,使其能够访问 GitLab 的功能,如 CI/CD、安全扫描和影响分析。本教程展示了三个用例:修复失败的端到端测试、为现代化准备质量门禁,以及现代化 HTTP 连接处理。推进顺序优先考虑从小处着手,逐步增加项目上下文,然后逐个边界进行现代化,并通过严格的审查和测试流程确保安全。第一个用例涉及修复一个缺陷:Java HTTP 指标收集器错误地将所有 2xx 响应视为成功,即使预期的是 503 错误。Cursor 识别了根本原因并修复了该问题,生成的合并请求经过审查并合并,从而建立了行为基线。第二个用例侧重于通过建立稳健的质量门禁来为 Java 8 至 Java 21 的现代化做准备。这包括在 Cursor 中配置 GitLab MCP,将项目上下文引入 IDE,使 Cursor 能够访问规划详情、讨论和依赖项。初始步骤确保 CI/CD 流水线能够并行测试 Java 8 和 Java 21,并逐步提高测试覆盖率。Cursor 随后实施这些变更,合并请求触发 CI/CD 流水线和代码审查,任何反馈均通过 GitLab 的开发者流程进行处理。最后一个用例涉及通过用 Java 21 的 java.net.http.HttpClient 替换遗留的 HttpURLConnection API 来现代化 HTTP 连接处理。这被视为一个有界的工作项,以隔离行为变更。Cursor 实施替换,利用 GitLab MCP 服务器提供上下文,并使用 Docker Compose 设置进行本地验证。这种方法确保每个现代化步骤均可管理、可审查且可回退,在整个迁移过程中保持高标准的安全性。