关于 review-java
用于检查指定范围内 Java 语言与运行时规范的代码审查技能。它输出带类别和文件行号的发现项,不负责范围选择、安全或架构审查。
主要功能
- 01并发与线程安全检查
- 02异常和资源处理
- 03API 与版本兼容性
- 04集合、流与 NIO 检查
- 05可测试性审查
- 06发现项附文件行号
适用场景
- 01单独检查 Java 语言规范
- 02作为编排审查中的 Java 步骤
- 03提交 PR 前检查 Java 改动
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ nesnilnehc/ ai-cortex --skill review-java安装后在 Claude Code 中输入/review-java确认已加载。
附带文件README.md
详细介绍
技能:Java 审查
目的
仅审查 Java 代码的语言和运行时约定。不要界定审查范围(差异对比还是整个代码库),也不要进行安全或架构分析;这些工作由范围和认知技能负责。请按标准格式输出问题列表,供汇总使用。重点关注并发与线程安全、异常与 try-with-resources、API 和版本兼容性、集合与流、NIO 与正确关闭资源、模块(适用时的 JPMS)以及可测试性。
核心目标
主要目标:针对给定代码范围,生成涵盖并发、异常、资源管理、API 兼容性、集合/流、NIO 和可测试性的 Java 语言/运行时问题列表。
成功标准(必须全部满足):
- ✅ 仅限 Java 范围:只审查了 Java 语言和运行时约定;未进行范围选择、安全或架构分析
- ✅ 涵盖全部六个 Java 维度:在相关情况下评估并发/线程安全、异常/资源、API/版本兼容性、集合/流、NIO/关闭资源和可测试性
- ✅ 问题格式兼容:每个问题都包含 findings-list §5.1 要求的所有要素,且类别为
language-java - ✅ 文件:行号引用:每个问题都指向包含行号的具体文件位置
- ✅ 排除非 Java 代码:除非明确纳入范围,否则不对非 Java 文件应用 Java 专属规则
验收测试:输出是否包含以 Java 为中心的问题列表,带有文件:行号引用,涵盖所有相关语言/运行时维度,且未进行安全、架构或范围分析?
范围边界
本技能负责:
- 并发与线程安全(synchronized、volatile、并发集合、执行器生命周期)
- 异常处理(try-with-resources、Throwable 层次结构、重新抛出模式)
- API 稳定性与版本兼容性(弃用的 API、JPMS 边界)
- 集合与 Stream API(分配、装箱、副作用、不可变性)
- NIO 与资源关闭(流、通道、选择器)
- 可测试性(DI、单例用法、final 与可重写设计)
本技能不负责:
- 范围选择——范围由调用方确定
- 安全分析——使用
review-security - 架构分析——使用
review-architecture - SQL 专项分析——使用
review-sql - 完整的编排式审查——使用
orchestrate-code-review
移交节点:输出所有 Java 问题后,将其交给 orchestrate-code-review 进行汇总。对于在 Java 代码中发现的 SQL 或安全问题,请记录并建议使用相应的认知技能。
使用场景
- 编排式审查:当 orchestrate-code-review 对 Java 项目按范围 → 语言 → 框架 → 库 → 认知的顺序执行时,将本技能用作语言审查步骤。
- 仅审查 Java:用户只想检查语言/运行时约定时。
- PR 前 Java 检查清单:确认并发、资源管理和 API 兼容性正确无误。
适用时机:当待审查代码为 Java,且任务涉及语言/运行时质量时。范围由调用方或用户确定。
行为
本技能涵盖的内容
- 分析:给定代码范围(调用方提供的文件或差异)内的 Java 语言和运行时约定。本技能不决定范围;它以代码范围作为输入。
- 不要:进行范围选择、安全审查或架构审查;除非明确纳入范围,否则不要检查非 Java 文件中的 Java 规则。
审查清单(仅 Java 维度)
- 并发与线程安全:正确使用 synchronized、volatile、锁或并发 API;可见性与先行发生关系;共享可变状态;执行器的使用与关闭。
- 异常与资源:对 Closeable/AutoCloseable 使用 try-with-resources;异常处理与抑制;避免空 catch 块或范围过宽的 catch 块。
- API 与版本兼容性:公共 API 的稳定性;向后兼容性;已弃用 API 的使用及迁移路径;适用时的模块边界(JPMS)。
- 集合与 Stream:恰当使用 Stream API;Stream 中的副作用;分配与装箱;适用时使用不可变集合。
- NIO 与关闭:正确关闭流、通道和选择器;避免资源泄漏;使用 try-with-resources。
- 可测试性:依赖注入;静态与单例的使用;可重写与 final;测试替身与模拟。
语气与参考
- 专业且技术性强:引用具体位置(文件:行号)。输出的发现必须包含 findings-list §5.1 要求的所有要素。
输入与输出
输入
- 代码范围:用户或范围技能已选定的文件、目录(或差异)。此技能不决定范围;它只检查所提供 Java 代码中的语言约定。
输出
- 按 specs/findings-list.md 定义的格式输出零条或多条发现,Category 为
language-java。 - 此技能的类别为 language-java。
限制
硬性边界
- 不要执行安全、架构或范围选择分析。仅检查 Java 语言和运行时约定。
- 不要在缺少具体位置或可执行建议的情况下得出结论。
- 不要检查范围外非 Java 代码中的 Java 特定规则。
技能边界
不要执行以下操作(由其他技能负责):
- 不要选择或定义代码范围——调用方或
orchestrate-code-review会设置范围 - 不要执行安全分析——使用
review-security - 不要执行架构分析——使用
review-architecture - 不要执行完整的 SQL 分析——使用
review-sql
停止并移交的时机:
- 输出所有 Java 发现后,将其移交给
orchestrate-code-review汇总 - 用户要求完整审查(范围 + 语言 + 认知)时,转交给
orchestrate-code-review - 发现 SQL 或安全问题时,注明问题并建议使用相应的认知技能
自检
核心成功标准
- 仅限 Java 范围:只审查了 Java 语言和运行时约定;未执行范围选择、安全或架构分析
- 覆盖全部六个 Java 维度:在相关情况下,评估了并发/线程安全、异常/资源、API/版本兼容性、集合/Stream、NIO/关闭和可测试性
- 发现格式兼容:每条发现都包含 findings-list §5.1 要求的所有要素,且类别为
language-java - 文件:行号引用:每条发现都指向带行号的具体文件位置
- 排除非 Java 代码:除非明确纳入范围,否则不将 Java 特定规则应用于非 Java 文件
流程质量检查
- 是否只审查了 Java 语言/运行时维度(没有范围、安全或架构分析)?
- 是否覆盖了相关的并发、异常、资源、集合/Stream、NIO 和可测试性方面?
- 每条发现是否都包含 findings-list §5.1 要求的所有要素,且 category=language-java?
- 每个问题是否都有对应的文件:行号引用?
验收测试
输出是否包含以 Java 为中心的发现列表,并提供覆盖所有相关语言/运行时维度的文件:行号引用,且不包含安全、架构或范围分析?
示例
示例 1:资源与异常
- 输入:一个未使用 try-with-resources 打开 InputStream 的 Java 方法。
- 预期:输出一条资源管理发现;建议使用 try-with-resources。category=language-java。
示例 2:并发
- 输入:多个线程在没有同步机制或并发集合的情况下访问同一个可变列表。
- 预期:输出一条线程安全发现(例如,使用 CopyOnWriteArrayList 或同步);引用该字段及其用法。category=language-java。
边缘情况:Java 与 SQL 混合
- 输入:一个同时包含 JDBC 或 JPA 与 Java 逻辑的文件。
- 预期:仅检查 Java 规范(资源、异常、并发)。不要在此处输出 SQL 注入发现;这些应由 review-security 或 review-sql 处理。
评论
支持 Markdown