mcpField
R
review-java

review-java

github.com/nesnilnehc测试与质量890 次安装3 天前更新
代码仓库

关于 review-java

用于检查指定范围内 Java 语言与运行时规范的代码审查技能。它输出带类别和文件行号的发现项,不负责范围选择、安全或架构审查。

主要功能

  1. 01并发与线程安全检查
  2. 02异常和资源处理
  3. 03API 与版本兼容性
  4. 04集合、流与 NIO 检查
  5. 05可测试性审查
  6. 06发现项附文件行号

适用场景

  1. 01单独检查 Java 语言规范
  2. 02作为编排审查中的 Java 步骤
  3. 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 语言/运行时问题列表。

成功标准(必须全部满足):

  1. ✅ 仅限 Java 范围:只审查了 Java 语言和运行时约定;未进行范围选择、安全或架构分析
  2. ✅ 涵盖全部六个 Java 维度:在相关情况下评估并发/线程安全、异常/资源、API/版本兼容性、集合/流、NIO/关闭资源和可测试性
  3. ✅ 问题格式兼容:每个问题都包含 findings-list §5.1 要求的所有要素,且类别为 language-java
  4. ✅ 文件:行号引用:每个问题都指向包含行号的具体文件位置
  5. ✅ 排除非 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 维度)
  1. 并发与线程安全:正确使用 synchronized、volatile、锁或并发 API;可见性与先行发生关系;共享可变状态;执行器的使用与关闭。
  2. 异常与资源:对 Closeable/AutoCloseable 使用 try-with-resources;异常处理与抑制;避免空 catch 块或范围过宽的 catch 块。
  3. API 与版本兼容性:公共 API 的稳定性;向后兼容性;已弃用 API 的使用及迁移路径;适用时的模块边界(JPMS)。
  4. 集合与 Stream:恰当使用 Stream API;Stream 中的副作用;分配与装箱;适用时使用不可变集合。
  5. NIO 与关闭:正确关闭流、通道和选择器;避免资源泄漏;使用 try-with-resources。
  6. 可测试性:依赖注入;静态与单例的使用;可重写与 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