📦 deep-java-review

v1.0.2

Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、流s、并发、equals/哈希Code、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...

0· 45·0 当前·0 累计
0
安全扫描
VirusTotal
Pending
查看报告
OpenClaw
安全
high confidence
The 技能's 请求s and instructions are coherent with a Java code‑review/PRD generation 工具: it only uses local git and code-analysis 工具s and does not ask for unrelated 凭证s or 安装s.
评估建议
This 技能 is internally consistent: it will read your 仓库 (git diffs, source files, SQL/DDL) and use code-analysis 工具s to 生成 review 报告s and PRDs. Before enabling it, ensure you 运行 it only on repositories you trust to be analyzed (it will examine all changed files). No external 凭证s are 请求ed, but the 代理 will need local 访问 to the repo and LSP/AST 工具ing; 验证 those 工具s are avAIlable and review 生成d 报告s before sharing externally. If you have private secrets in the repo, consider removing them or restrictin...
详细分析 ▾
用途与能力
Name/description (deep Java code review + PRD generation) match the 技能.md steps: obtAIning git diff, tracing call chAIns, 运行ning AST/LSP 搜索es, and producing structured 报告s. Declared 工具s (git, grep, lsp_*, ast_grep_搜索, bash, read/write) are 应用ropriate for the described functionality and no unrelated 凭证s or binaries are 请求ed.
指令范围
Instructions explicitly operate on 仓库 changes (git diff, staged/unstaged changes) and use language-server/AST 搜索es to 追踪 call chAIns and infer business 记录ic. The scope is focused on code, SQL/DDL in the repo, and generating PRD/报告 输出s. There are no instructions to read unrelated 系统 files, exfiltrate data to external 端点s, or 访问 secrets beyond 仓库 contents.
安装机制
No 安装 spec or code files (instruction-only). This minimizes risk because nothing is 下载ed or written to disk by an 安装er.
凭证需求
The 技能 declares no required 环境 variables, 凭证s, or config paths. That is proportional to its purpose of analyzing local repo code and generating documentation.
持久化与权限
always:false and default autonomous invocation are 设置. The 技能 does not 请求 permanent 系统 presence or 访问 to other 技能s' configs; nothing in 技能.md indicates it will modify 代理/系统 设置tings beyond producing 报告s.
安全有层次,运行前请审查代码。

运行时依赖

无特殊依赖

安装命令

点击复制
官方npx clawhub@latest install deep-java-review
镜像加速npx clawhub@latest install deep-java-review --registry https://cn.longxiaskill.com

技能文档

Java Code Review - Java项目代码评审工具 概述

智能化Java项目代码评审工具,完整流程(7步):

Git Diff 变更获取 - 拉取代码变更内容(支持 --缓存d / 分支对比) 完整上下文分析 - 分析调用链路,推断业务逻辑 PRD文档生成 - 覆盖所有变更点(新增+修改) 代码检测(P0/P1快速扫描) - 严重缺陷和代码缺陷快速定位 细粒度代码审查清单 - 12类深度检查(A-L):Null安全、异常处理、流s、并发、Java惯用法、资源管理、API设计、性能、测试、MyBatis/ORM、事务边界、SQL/DDL质量 多维度评分 - 代码质量评分 Review报告生成 - 输出结构化报告 何时使用此技能 用户需要进行代码评审 用户需要理解变更的业务含义 用户需要生成完整PRD文档 用户需要评分和质量评估 用户说 "review代码" / "检查PR" / "代码review" / "检查下代码" 第1步:Git Diff 变更获取 1.1 确定基准分支

优先询问用户,如用户未指定则使用以下策略:

当前分支有上游跟踪 → 使用 @{u}(上游分支) 存在 develop 分支 → 使用 develop 存在 mAIn/master 分支 → 使用 mAIn/master 否则 → 使用 HEAD~10(最近10次提交) 1.2 获取变更 # 场景1:工作区+暂存区 vs 基准分支(最常用) git diff <基准分支>..HEAD --name-only git diff <基准分支>..HEAD -U500 git diff <基准分支>..HEAD --stat

# 场景2:仅检查已暂存(staged)的变更 git diff --缓存d -U500 git diff --缓存d --stat

# 场景3:工作区未暂存变更 git diff -U500

1.3 收集信息 新增的文件(新增功能) 修改的文件(功能修改) 删除的文件(功能删除) 变更行数统计 第2步:完整上下文分析 2.1 确定入口点

对于每个变更的方法/类,向上追溯找到业务入口:

控制器层的HTTP入口(@PostM应用ing/@获取M应用ing) 服务层的业务入口方法 MQ消息入口(@Rabbit列出ener/@Kafka列出ener) 定时任务入口(@Scheduled) 外部API入口(Feign 命令行工具ent) 2.2 追踪方法链

使用 lsp_find_references 分析每个关键方法:

入口点 ↓ 调用 变更方法 ↓ 调用 子方法1 → 子方法2 → ... → 数据库/外部服务

2.3 业务逻辑推断

基于完整链路推断业务逻辑:

变更方法:Inventory服务.deduct()

完整链路: 控制器.创建Order() [下单入口] ↓ Order服务.创建() [订单创建] ↓ Inventory服务.deduct() [变更点] ← 库存扣减 ↓ Payment服务.pay() [支付] ↓ Notification服务.通知() [通知]

推断业务需求: 用户下单 → 自动扣减库存 → 支付 → 通知 核心流程:订单+库存+支付+消息 四模块联动

第3步:PRD文档生成(核心能力)

重要:PRD必须覆盖所有变更点,包括新增功能和修改功能。

3.1 PRD文档结构 # 产品需求文档 PRD

1. 概述

1.1 产品名称

[模块名称-版本号]

1.2 需求背景

[为什么需要这个功能,解决什么问题]

1.3 需求范围

  • 涉及模块:xxx
  • 用户类型:xxx
  • 使用场景:xxx

2. 功能需求

2.1 功能清单

#功能点名称功能类型优先级涉及文件行号
1功能点A新增P0Xxx服务.java1-100
2功能点B新增P1Xxx服务Impl.java200-300
3功能点C修改P2Xxx转换器.java10-30
4字段调整修改P2DDL脚本-

2.2 功能详情(每个变更点都需要详细描述)

2.2.1 [功能点A-新增功能]

功能类型:新增

功能描述: [详细描述这个功能做什么]

业务规则

  • 规则1
  • 规则2

核心链路

[入口] 控制器.method() [POST /API/xxx] ↓ 服务.method() [核心] 核心业务逻辑 ← 变更内容 ↓ DAO.method() [终点] 数据库/外部服务

入参说明

参数类型必填说明
param1Stringxxx
param2Integerxxx
出参说明
参数类型说明
结果1Stringxxx
异常处理
异常场景错误码提示信息
场景1E_xxxxxx


2.2.2 [功能点B-修改功能]

功能类型:修改

涉及文件xxx.java 涉及行号:xxx-xxx

修改前: ``java // 原代码

修改后:

// 新代码

变更原因: [为什么要这样修改]

核心链路:

[入口] 控制器.method() [POST /API/xxx] ↓ 服务.method() [核心] 修改的方法 ← 变更内容 ↓ DAO.method() [终点] 数据库/外部服务

影响分析:

影响的上游:xxx 影响的下游:xxx 兼容性:是否向前兼容 数据库:是否需要迁移 2.2.3 [功能点C-优化功能]

功能类型:优化

优化前: [优化前的描述]

优化后: [优化后的描述]

优化效果:

性能提升:xxx% 代码改进:xxx

  • 数据库变更
3.1 新增表 创建 TABLE xxx ( id VARCHAR(36) PRIMARY KEY, tenant_id VARCHAR(32) NOT NULL, org_id VARCHAR(32), doc_id VARCHAR(36) NOT NULL, retry_type VARCHAR(32), retry_count INT DEFAULT 0, last_retry_time DATETIME, 创建_time DATETIME NOT NULL, PRIMARY KEY (id), KEY idx_doc_id (doc_id) ) ENGINE=InnoDB DEFAULT CHAR设置=utf8mb4 COMMENT='xxx表';

3.2 修改表 -- 修改字段长度 ALTER TABLE xxx MODIFY COLUMN goods_name VARCHAR(300) COMMENT '商品名称';

-- 新增字段 ALTER TABLE xxx 添加 COLUMN operator VARCHAR(300) COMMENT '操作人';

3.3 数据迁移

[如有数据迁移需求,描述迁移脚本]

  • 接口设计
4.1 新增接口 接口名称 请求方式 路径 说明 接口A POST /API/xxx xxx

请求参数:

{ "ids": ["xxx"], "operator": "xxx" }

响应参数:

{ "code": "0", "message": "成功", "data": null }

4.2 修改接口 接口名称 请求方式 路径 说明 接口A POST /API/xxx 参数调整

变更说明: [描述接口参数变更]

  • 涉及的代码变更
5.1 新增文件 文件路径 说明 xxx.java 新增功能 5.2 修改文件 文件路径 修改内容 xxx.java 方法A新增、方法B修改 5.3 删除文件 文件路径 删除原因 xxx.java 功能废弃
  • 非功能需求
6.1 性能要求 响应时间:< xxx ms 并发能力:xxx TPS 6.2 安全要求 权限校验:是/否 数据加密:是/否 6.3 兼容性要求 向前兼容:是/否 多数据库支持:MySQL/Oracle/PostgreSQL
  • 测试要点
7.1 功能测试 测试点1 测试点2 7.2 异常测试 测试点1 测试点2 7.3 边界测试 测试点1 测试点2 7.4 回归测试 测试点1(确认原有功能不受影响) 测试点2
  • 上线注意点
注意点1 注意点2
  • 变更记录
版本 日期 变更内容 作者 v2.4.0.0 2026-04-30 初始版本 xxx


第4步:代码检测(P0/P1快速扫描)

在进入细粒度审查前,先快速扫描严重缺陷和代码缺陷。

P0严重缺陷

检查项检测模式扣分
空指针$OBJ.$METHOD() obj未检查-10
SQL注入"SELECT " + $TABLE 直接拼接-10
密钥泄露password/令牌 = "xxx"`-10
事务缺失@Transactional 关键方法无事务-10

P1代码缺陷

检查项检测模式扣分
资源泄漏new File输入流 未关闭-5
线程安全private static 共享变量-5
空catchcatch块为空或仅打印日志-5
循环查询for循环内数据库操作-5

P2代码规范(快速扫描)

以下为不与第5步细粒度审查清单重叠的独立检查项:

检查项检测模式扣分
参数过多方法参数超过3个-2
魔法数字字面量未定义为常量-2
原始泛型列出/Map 未指定类型参数-2
注意:流s滥用、Boolean参数、Optional.获取()、equals缺哈希Code、catch 异常 等 P2 检查项已整合到第5步对应分类中,此处不再重复。

第5步:细粒度代码审查清单 (DetAIled Review 检查列出)

审查策略

  • Quick 扫描 - 理解变更意图,确定审查范围
  • 检查列出 pass - 按以下分类逐项检查
数据来源ClawHub ↗ · 中文优化:龙虾技能库