Java代码审核终极提示词模板 要实现最严谨的 Java 代码审核不能仅依赖单一句子而必须构建一个结构化、分阶段、上下文感知的提示词Prompt体系。核心策略是采用“角色设定 多维检查清单 思维链CoT 强制输出规范”的组合模式 。以下是经过深度优化的终极 Java 代码审核提示词模板及其使用方案。1. 核心提示词模板直接复制可用此模板设计为“系统级指令”适用于 Claude 3.5 Sonnet, GPT-4o, 或本地部署的 Qwen-Coder 等大模型。它强制 AI 扮演资深架构师角色并从六个维度进行深度扫描 。# Role 你是一位拥有 20 年经验的 Java 首席架构师及安全专家精通《Effective Java》、Oracle 安全编码规范、Spring Framework 最佳实践及高并发系统设计。你的任务是进行“零容忍”级别的代码审查Code Review。 # Context 我将提供一段 Java 代码片段。你需要忽略表面的格式问题假设已由 Checkstyle/Prettier 处理专注于深层逻辑、安全性、性能瓶颈及可维护性风险。 # Audit Dimensions (必须严格执行的检查清单) 1. **安全性 (Security)**:检查 SQL 注入、XSS、CSRF 风险。 -验证敏感数据是否硬编码或未加密存储。 检查异常处理是否泄露堆栈信息或掩盖关键错误。 - 确认权限校验逻辑是否存在绕过可能 。 2. **并发与线程安全 (Concurrency)**: - 识别竞态条件 (Race Conditions)、死锁风险。 - 检查集合类在多线程环境下的安全性 (如 HashMap vs ConcurrentHashMap)。 验证锁的使用粒度及 volatile/synchronized 的正确性。 3. **性能与资源管理 (Performance)**:检测 N1 查询问题、大对象内存泄漏、未关闭的 IO 流/数据库连接。 - 分析时间复杂度指出潜在的 O(n^2) 或更差的操作。 - 检查字符串拼接是否在循环中发生 (应使用 StringBuilder)。 4. **健壮性与异常处理 (Robustness)**: - 拒绝空的 catch 块或泛化的 catch (Exception e)。 - 验证空指针防护 (Optional 使用或显式判空)。 - 检查事务边界 (Transactional) 是否合理是否存在事务失效场景。 5. **代码规范与设计模式 (Design Standards)**:违反 SOLID 原则的代码结构。 - 魔法数字 (Magic Numbers) 未提取为常量。 - 过度耦合或缺乏必要的接口抽象。 6. **JDK 版本兼容性**: - 确认使用的 API 是否符合声明的 JDK 版本 (如 Java 8 vs Java 17/21)。 # Workflow (思维链要求) 请按照以下步骤逐步思考并输出严禁跳过任何步骤 1. **代码意图重构**用一句话总结这段代码试图解决的核心业务问题。 2. **逐行深度扫描**在内部模拟执行流程标记所有潜在风险点。 3. **分级评估**将发现的问题按 [CRITICAL], [HIGH], [MEDIUM], [LOW] 分级。 4. **修复方案生成**对每个 [CRITICAL] 和 [HIGH] 问题提供重构后的代码片段。 # Output Format (严格遵循) 请以 Markdown 表格形式输出审核报告随后提供修复代码。 ## ️ 代码审核报告 | 严重等级 | 问题类别 | 行号/位置 | 问题描述 | 潜在后果 | 修复建议 | | :--- | :--- | :--- | :--- | :--- | :--- | | [CRITICAL] | 安全 | Line 45 | SQL 拼接使用 号 | 数据库被注入攻击 | 改用 PreparedStatement | | [HIGH] | 并发 | Line 88 | 非线程安全集合共享 | 数据不一致/丢失 | 替换为 ConcurrentSkipListMap | | ... | ... | ... | ... | ... | ... | ## 核心重构代码 java // 在此处提供完整的、可运行的修复后代码// 必须包含详细的中文注释解释修改原因⚠️ 架构师特别提示(在此处补充任何表格无法涵盖的系统级建议如缓存策略、数据库索引优化等)# Input Code[在此处粘贴你的 Java 代码]### 2. 进阶策略Prompt Chaining (提示词链) 对于复杂的企业级项目单次提示词可能受限于上下文窗口或注意力分散。最严谨的做法是将审核任务拆解为**串联工作流**利用“提示词链”技术提升准确率 。 #### 第一阶段静态分析与规范检查 先让 AI 充当“编译器 Linter”只关注语法、规范和基础逻辑错误。 **Prompt 片段**: 仅检查语法错误、未使用的导入、违反 Google Java Style 的格式问题以及基础的 NullPointer 风险。不要分析业务逻辑。 #### 第二阶段安全与并发深度审计 将代码再次输入专门针对安全漏洞和多线程问题进行“红队测试”。 **Prompt 片段**: 假设你是黑客或高并发流量发生器。尝试找出这段代码中的 SQL 注入点、竞态条件、死锁风险及资源泄漏。忽略代码风格只找致命漏洞。 #### 第三阶段重构与优化 基于前两步的发现生成最终的重构代码。 **Prompt 片段**: 综合上述所有问题重写该模块。要求1. 使用 Java 17 特性 (如 Record, Switch Expression); 2.引入 Spring Security 最佳实践; 3. 确保线程安全。 ### 3. 实战案例演示 假设用户提交了一段存在风险的 DAO 层代码AI 基于上述模板的输出示例如下 | 严重等级 | 问题类别 | 行号/位置 | 问题描述 | 潜在后果 | 修复建议 | | :--- | :--- | :--- | :--- | :--- | :--- | | [CRITICAL] | 安全 | Line 12 | 使用字符串拼接构建 SQL | 导致 SQL 注入数据可被窃取或删除 | 必须使用 JdbcTemplate 的参数化查询或 MyBatis 的 #{} 占位符 | | [HIGH] | 资源 | Line 25 | Connection 未在 finally 块关闭 | 高并发下数据库连接池耗尽服务宕机 | 使用 try-with-resources 语法自动管理资源 | | [MEDIUM] | 性能 | Line 30 | 在循环内调用远程 RPC | 网络延迟累积接口响应时间呈线性增长 | 改为批量查询或在循环外并行调用 (CompletableFuture) | | [LOW] | 规范 | Line 5 | 魔法数字 86400 | 代码可读性差修改配置困难 | 提取为常量 private static final int SECONDS_PER_DAY 86400; | ** 核心重构代码** java Service public class UserService { Autowired private JdbcTemplate jdbcTemplate; /** * 修复说明 * 1. 使用 try-with-resources 确保 Connection 自动关闭防止资源泄漏 。 * 2. 采用参数化查询 (?) 彻底杜绝 SQL 注入风险。 * 3. 移除魔法数字使用具名常量。 */ public User getUserById(Long userId) { // 定义常量替代魔法数字 final String SQL_QUERY SELECT id, username, email FROM users WHERE id ?; try { // JdbcTemplate 内部已处理资源管理和异常转换比原生 JDBC 更安全 return jdbcTemplate.queryForObject(SQL_QUERY, new Object[]{userId}, (rs, rowNum) - { User user new User(); user.setId(rs.getLong(id)); user.setUsername(rs.getString(username)); user.setEmail(rs.getString(email)); return user; }); } catch (EmptyResultDataAccessException e) { // 明确处理数据不存在的情况避免返回 null 导致上游 NPE throw new ResourceNotFoundException(User not found with id: userId); } catch (DataAccessException e) { // 记录详细日志但不泄露堆栈给前端 log.error(Database error occurred for userId: {}, userId, e); throw new ServiceUnavailableException(Unable to access user service); } } }4. 关键注意事项上下文完整性在发送代码前务必告知 AI 项目的 JDK 版本、主要框架如 Spring Boot 3.x及构建工具Maven/Gradle否则 AI 可能会推荐不兼容的 API 。敏感信息脱敏严禁将真实的数据库密码、AWS Key 或核心商业逻辑代码直接发送给公有云 AI 模型。应在本地通过 IDE 插件如通义灵码、Cursor运行审核或在发送前进行变量名混淆处理 。人工复核机制AI 生成的修复代码可能存在“幻觉”引用不存在的库或方法。所有 [CRITICAL] 级别的修改必须在本地编译并通过单元测试后方可合并 。迭代优化如果 AI 首次审核不够深入可使用“追问”技巧“请重新检查第 20 行的事务注解如果在该方法内部调用了同类其他方法事务会失效吗”以此触发 AI 的深度推理能力 。参考来源代码审核AI来做AI的提示词专栏Claude-2 Prompt 编写细节大模型开发 - 41 审核模型Spring AI 集成 OpenAI Moderation审核模型指南AI的提示词专栏“Prompt Chaining”把多个 Prompt 串联成工作流灵码Qwen3-Coder借助Skill机制实现高效代码审核实践探索