编程

Java代码审查免费版

试用

Java 代码变更审查工具,按 6 大维度生成结构化审查报告与修复建议。Use when 需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。

它能做什么

Java 代码变更审查工具,按 6 大维度生成结构化审查报告与修复建议。Use when 需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。

技能文档

Java 代码审查工具(免费版)

概述

本工具为 Java 开发者提供代码变更的结构化审查能力,按 6 大维度逐项检查代码质量,标记问题严重程度,并提供可运行的修复代码。通过自然语言指令驱动,帮助开发者在提交前发现潜在缺陷、安全隐患和性能问题。免费版聚焦个人开发者的代码变更审查场景,提供标准化的审查模板与修复建议.

核心能力

审查维度描述常见问题示例
代码风格与命名命名规范、格式、注释变量名 int d、魔法值 status = 1
异常处理捕获策略、错误处理空 catch 块、返回 null 而非抛异常
安全隐患敏感信息、注入风险SQL 拼接、硬编码密码
性能问题循环优化、资源复用循环内字符串拼接、N+1 查询
设计合理性职责单一、模块化过长函数、重复代码
资源管理资源释放、内存管理未关闭连接、ThreadLocal 未清理
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置.

核心功能执行

input_params参数进行配置.

处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

参数配置与调用

config_options参数进行配置.

处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用config_options参数,支持修改/重置/导入操作

结果处理与输出

output_format参数进行配置.

处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用output_format参数,支持导出/保存/转换操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:Java、代码变更审查工具、大维度生成结构化、审查报告与修复建、开发者的代码审查、自动生成结构化审、查报告、大维度代码审查、级严重程度分级、Critical、Major、Minor、Suggestion、代码修复建议与前、后对比、Markdown、格式审查报告输出等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.

使用场景

场景一:审查 Git Diff 变更

开发者提交前需要审查代码变更.

用户:审查以下代码变更
[粘贴 git diff 输出]
# ...
助手:生成审查报告
# ...
## 不适用场景
# ...
以下场景Java代码审查免费版不适合处理:
# ...
- 无明确技术栈的模糊需求
- 纯架构设计决策
- 运维部署管理
# ...
## 触发条件
# ...
需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于非本工具能力范围的需求.
# ...
## 补充概述
- 审查文件:3 个
- 问题总数:5 个
  - Critical: 1
  - Major: 2
  - Minor: 2
# ...
## 问题详情
# ...
### 1. [Critical] 未释放数据库连接
文件:UserService.java:45
# ...
问题描述:
方法中获取了数据库连接但未确保关闭.
# ...
问题代码:
```java
public User findById(Long id) {
    Connection conn = dataSource.getConnection();
    // ...
}

...

修复后代码:

public User findById(Long id) {
    try (Connection conn = dataSource.getConnection()) {
        // ...
    }
}

### 场景二:审查单个源文件

开发者需要对一个 Java 源文件进行全面审查.
```text
用户:审查 UserService.java 文件
# ...
助手:按 6 维度逐项检查
# ...
### 代码风格与命名
- [Minor] 第 12 行:变量名 `d` 不清晰,建议改为 `duration`
- [Suggestion] 第 25 行:魔法值 `1` 建议提取为常量
# ...
### 异常处理
- [Major] 第 38 行:空 catch 块,应记录日志或重新抛出
# ...
### 安全隐患
- [Critical] 第 52 行:SQL 拼接存在注入风险,应使用 PreparedStatement
# ...
### 性能问题
- [Major] 第 67 行:循环内字符串拼接,应使用 StringBuilder
# ...
### 设计合理性
- [Minor] 第 80 行:方法超过 50 行,建议拆分
# ...
### 资源管理
- [Critical] 第 95 行:FileInputStream 未关闭,应使用 try-with-resources

场景三:生成修复建议

开发者需要针对审查发现的问题获取修复代码.

// 问题代码:SQL 拼接
public User findByUsername(String username) {
    String sql = "SELECT * FROM users WHERE username = '" + username + "'";
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery(sql);
    // ...
}
// ...
// 修复后代码:参数化查询
public User findByUsername(String username) {
    String sql = "SELECT * FROM users WHERE username = ?";
    try (PreparedStatement stmt = conn.prepareStatement(sql)) {
        stmt.setString(1, username);
        try (ResultSet rs = stmt.executeQuery()) {
            if (rs.next()) {
                return mapToUser(rs);
            }
        }
    } catch (SQLException e) {
        logger.error("查询用户失败: {}", username, e);
        throw new RuntimeException("查询用户失败", e);
    }
    return null;
}

快速开始

严重程度定义

级别说明示例
Critical必须修复,可能导致崩溃/安全漏洞/数据丢失SQL 注入、空指针崩溃、硬编码密码
Major强烈建议修复,影响质量/可维护性/性能空 catch 块、N+1 查询、过长函数
Minor建议改进,不影响功能但有优化空间魔法值未提取、命名不清晰
Suggestion可选优化,用于代码美化或最佳实践添加 Javadoc、提取工具方法

审查流程

1. 用户提供输入:
   - 必填:git diff 输出或 Java 源文件
   - 可选:需求文档(用于一致性检查)
# ...
2. 执行审查:
   - 按 6 个维度逐项检查
   - 标记问题及严重程度
# ...
3. 生成报告:
   - 使用标准模板
   - 输出 Markdown 格式

报告结构


具体详情请参考下方内容.
## 概述(续3)
- 审查文件:N 个
- 问题总数:N 个
  - Critical: N
  - Major: N
  - Minor: N
  - Suggestion: N
# ...
## 问题详情(续1)
(按 Critical → Major → Minor → Suggestion 排序)
# ...
### N. [严重程度] 问题标题
文件:`文件名:行号`
# ...
**问题描述**:简短描述
# ...
**问题代码**:
```java
// 修复前代码(至少 3 行上下文)

...

修复后代码

// 修复后代码(必须可运行)

...

参考规则:[对应规则编号和名称]


## 示例

### 审查规则速查

**代码风格规则**:
| 规则 | 描述 |
|---:|---:|
| NAM-001 | 变量名应具有描述性,禁止单字母(循环变量除外) |
| NAM-002 | 类名使用 UpperCamelCase |
| NAM-003 | 常量使用全大写下划线 |
| STY-001 | 避免魔法值,提取为常量 |
| STY-002 | 删除注释掉的代码 |

**异常处理规则**:
| 规则(续)| 描述 |
|:----:|:----:|
| EXC-001 | 禁止空 catch 块 |
| EXC-002 | 捕获具体异常而非 Exception |
| EXC-003 | 不要返回 null,应抛出异常 |
| EXC-004 | 异常信息应包含上下文 |

**安全规则**:
| 规则(续)(续)| 描述 |
|:----------|----------:|
| SEC-001 | 禁止 SQL 拼接,使用参数化查询 |
| SEC-002 | 禁止硬编码密码/密钥 |
| SEC-003 | 校验用户输入 |
| SEC-004 | 敏感信息不写入日志 |

**性能规则**:
| 规则(续)(续)| 描述 |
|-----:|:-----|
| PERF-001 | 循环内禁止字符串拼接 |
| PERF-002 | 避免 N+1 查询 |
| PERF-003 | 复用数据库连接 |
| PERF-004 | 合理设置集合初始容量 |

**设计规则**:
| 规则(续)(续)| 描述 |
|:----------:|------------|
| DES-001 | 方法不超过 50 行 |
| DES-002 | 方法参数不超过 3 个 |
| DES-003 | 避免重复代码 |
| DES-004 | 单一职责原则 |

**资源规则**:
| 规则(续)(续)| 描述 |
|-----|:---:|
| RES-001 | 使用 try-with-resources 释放资源 |
| RES-002 | ThreadLocal 使用后必须 remove |
| RES-003 | 及时关闭连接/流/文件 |
| RES-004 | 避免内存泄漏 |

## 最佳实践

1. **提交前审查**:所有代码变更提交前必须经过审查

2. **优先修复 Critical**:Critical 级别问题必须修复后才能提交

3. **修复代码必须可运行**:修复建议中的代码必须完整可用

4. **按严重程度排序**:报告按 Critical → Major → Minor → Suggestion 排序

5. **提供上下文**:问题代码至少包含 3 行上下文

6. **引用规则编号**:每个问题引用对应的规则编号

## 常见问题

### Q1:如何提供审查输入?

```bash
# 方式一:提供 git diff
git diff > changes.diff
# 将 diff 内容粘贴给审查工具
# ...
# 方式二:提供源文件
# 直接粘贴或指定 Java 文件路径
# ...
# 方式三:审查特定提交
git show COMMIT_ID --stat
git diff COMMIT_ID~1 COMMIT_ID

Q2:空 catch 块如何修复?

// 错误
try {
    // ...
} catch (Exception e) {
    // 空
}
// ...
// 修复方式一:记录日志
try {
    // ...
} catch (Exception e) {
    logger.error("操作失败", e);
    throw new BusinessException("操作失败", e);
}
// ...
// 修复方式二:重新抛出
try {
    // ...
} catch (SpecificException e) {
    throw new RuntimeException(e);
}

Q3:如何避免 N+1 查询?

// 错误:N+1 查询
List orders = orderRepository.findAll();
for (Order order : orders) {
    User user = userRepository.findById(order.getUserId());  // N 次查询
}
// ...
// 修复:批量查询
Set userIds = orders.stream()
    .map(Order::getUserId)
    .collect(Collectors.toSet());
Map userMap = userRepository.findByIds(userIds)
    .stream()
    .collect(Collectors.toMap(User::getId, u -> u));
for (Order order : orders) {
    User user = userMap.get(order.getUserId());  // 内存查找
}

Q4:魔法值怎么提取?

// 错误
if (user.getStatus() == 1) {
    // ...
}
// ...
// 修复
public static final int STATUS_ACTIVE = 1;
if (user.getStatus() == STATUS_ACTIVE) {
    // ...
}
// ...
// 更好:使用枚举
public enum UserStatus {
    ACTIVE(1), INACTIVE(0), BANNED(-1);
    private final int code;
    UserStatus(int code) { this.code = code; }
}

Q5:如何正确释放资源?

// 错误
Connection conn = null;
try {
    conn = dataSource.getConnection();
    // ...
} finally {
    if (conn != null) conn.close();  // 可能抛异常
}
// ...
// 正确:try-with-resources
     PreparedStatement stmt = conn.prepareStatement(sql);
    // ...
}

Q6:ThreadLocal 如何正确清理?

// 错误:未清理导致内存泄漏
private static final ThreadLocal context = new ThreadLocal<>();
// ...
public void handle() {
    context.set(new UserContext());
    // ... 忘记 remove
}
// ...
// 正确
public void handle() {
    context.set(new UserContext());
    try {
        // 业务逻辑
    } finally {
        context.remove();  // 必须清理
    }
}

错误处理

错误场景可能原因处理方式优先级
输入参数缺失用户未提供必要参数提示用户提供所需参数后重试P0
执行超时处理时间过长检查输入数据量,分批处理P1
输出格式错误结果不符合预期格式检查output_format参数配置P1

依赖说明

运行环境

  • Agent 平台: 支持读取 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
  • 操作系统: Windows / macOS / Linux
  • JDK 版本: 建议 8 及以上

依赖详情

依赖项类型是否必需获取方式
JDK编译器/运行时推荐oracle.com 或 openjdk.net 下载
Git命令行工具推荐系统包管理器安装
LLM APIAPI必需由 Agent 内置 LLM 提供

API Key 配置

  • 本工具为纯 Markdown 指令驱动,无需额外 API Key
  • 代码编译验证需要 JDK 环境

可用性分类

  • 分类: MD+EXEC(Markdown 指令 + 命令行执行)
  • 说明: 通过自然语言指令驱动 Agent 执行代码审查,编译验证需要 JDK 执行能力

已知限制

  • 需LLM支持,无LLM环境不可用
  • 复杂业务场景建议结合人工经验判断
  • 执行效率受模型能力与网络环境影响
  • 当前为免费版本,如需完整功能请升级到付费版获取全部能力

输出格式

{
  "success": true,
  "data": {
    "result": "Java代码审查免费版处理结果",
    "execution_time": "0.5s",
    "metadata": {
      "version": "1.0",
      "processor": "java reviewer"
    }
  },
  "execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
  "error": null
}

相关技能

代码审查与质量检测:检查代码规范、潜在Bug、性能问题、安全漏洞,输出审查报告与改进建议。Invoke when user asks 代码审查、Code Review、代码质量、代码检查、代码优化.

1 次安装

本技能从 6 个维度对代码进行全面审核:安全性、性能、代码质量、错误处理、测试和文档。适用于审核代码变更、Pull Request 或整个代码库(支持所有主流编程语言)。触发词包括:「帮我 review 这段代码」「检查安全问题」「审查这个 PR」「找出代码中的 Bug」,或用户请求代码质量分析时使用。技能内置自...

10 次安装1 星标

结构化分析任意输入,支持数据、代码、文本、决策的优先级排序与结论推导。Use when 需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于实时流数据处理。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。

1 次安装

Review code against Android/iOS/TypeScript/Go/general rules. Triggers: review, code review, check my changes, 帮我看看代码, commit hash, PR URL. Read-only, never modifies code.

16 次安装

通过PTY方式在非交互环境中执行编程任务,支持自动应答与文件同步。Use when 需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。

1 次安装

提供代码风格规范、安全基础检查与可访问性要点,适合个人开发者快速校验代码质量。Use when 需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。

1 次安装