Skip to content

Repository files navigation

code-change-check

English README

code-change-check 是面向 AI 生成代码的变更审查 Skill。它不要求逐行阅读全部实现,而是把迭代范围、需求、业务契约、Java 语义证据、调用链和 baseline/target 差异集中到一份可追溯报告中。

当前版本只对 Java 提供深度语义分析。

典型问题

  • AI 把内部服务调用改成了外部地址,或把内外部寻址规则混在一起。
  • 第三方接口少传、错传字段,或把参数顺序、字段来源理解错。
  • 新代码绕过了旧的 ClientServiceHelperAdapter 约定。
  • 租户字段、状态字段、权限线索在改动中丢失。
  • 响应字段映射发生细微变化,例如 fireEvent.count.value 从一个 getter 变成另一个 getter。
  • 新增逻辑影响了旧调用链,但受影响入口、调用方和测试范围不清楚。
  • 需求、设计、任务列表和实际提交对不上。

适用场景

  • 你使用 AI 写了大量代码,但不想逐行读完所有改动。
  • 一次迭代包含多次提交,需要选择本次真正要审计的提交范围。
  • 项目既有 Git,也可能有 SVN,或者只能提供改动前后的目录快照。
  • 需求来自 OpenSpec、spec-kit、superpowers、普通 Markdown 或用户自己的任务清单。
  • 业务里存在隐式规则,例如内部寻址、租户隔离、状态流转、第三方参数契约。
  • 你希望把旧代码里已有的调用形态先提取成候选契约,再人工确认是否作为本次审计标准。
  • Java 项目依赖不完整,仍希望用 Spoon 的 NOCLASSPATH 模式做 AST 级审查。

核心能力

  • 支持 Git、SVN、目录快照和当前工作区。
  • 交互选择本次迭代包含的提交或 SVN revision,支持方向键、空格多选、回车提交。
  • 兼容 OpenSpec、spec-kit、superpowers、普通 Markdown 需求、设计和任务列表。
  • 业务契约可来自指定文件、迭代前旧代码、两者同时使用或不使用。
  • Spoon 在 NOCLASSPATH 模式下提取字段映射、调用参数、配置来源、HTTP 地址、数据库写入、权限条件和状态条件。
  • CodeGraph 提取调用者、被调方法、影响范围和受影响测试。
  • 自动比较 baseline/target,优先暴露“语法正确、运行不报错,但业务值来源或参数理解错误”的变化。
  • 审计覆盖质量闸门明确区分 successpartialblocked

安装

仓库根目录本身就是可安装 Skill,必须保留根目录的 SKILL.md

Claude Code

将项目目录放入 Claude Code 的 Skill 目录,或使用 CC Switch:下载仓库 ZIP 后直接通过 CC Switch 导入安装 Skill。

Codex

将项目目录放入 Codex Skills 目录,确保根目录 SKILL.md 可被发现。

Cline

使用 adapters/cline/code-change-check.md.clinerules/code-change-check.md 作为规则入口。

建议每次审查前新开一个 Claude Code 或 Codex 对话。独立上下文可以降低“自己开发、自己审查”的上下文偏差,也不会分散原开发会话的注意力。

运行要求

  • Python 3.10+。根目录启动器会检测 Python,缺失时给出明确提示。
  • Java 17+。优先使用系统 Java;Windows 缺失时会自动下载并缓存固定版本运行时。
  • 用户不需要安装 Maven、Gradle、Node.js、npm 或 CodeGraph。
  • 首次下载运行时需要网络;使用 --offline 可禁止联网。

快速使用

Windows:

run-code-change-check.cmd --project . --output code-change-check-output

macOS/Linux:

sh run-code-change-check.sh --project . --output code-change-check-output

在真实终端且未显式指定范围时,工具会进入交互流程。CI 或 AI 工具无 TTY 环境应先在聊天中确认范围和契约来源,再使用 --no-interactive

常用命令:

# Git 范围
run-code-change-check.cmd --project . --base-ref main --target-ref HEAD --no-interactive

# SVN 范围
run-code-change-check.cmd --project . --svn-revision 100:120 --no-interactive

# 目录快照
run-code-change-check.cmd --project after --baseline before --no-interactive

# Java 分析必须成功
run-code-change-check.cmd --project . --scan-all --java-analysis required --no-interactive

# 离线运行
run-code-change-check.cmd --project . --scan-all --offline --no-interactive

Java 分析参数:

  • --java-analysis auto|required|off
  • --tool-cache <目录>
  • --offline

工作流程

flowchart TD
    A["预检项目与版本控制根目录"] --> B["用户确认迭代范围"]
    B --> C["用户确认需求与业务契约来源"]
    C --> D["物化 baseline 与 target"]
    D --> E["Spoon 提取 Java 业务语义证据"]
    E --> F["CodeGraph 提取调用链与影响范围"]
    F --> G["比较 baseline/target 语义差异"]
    G --> H["执行业务契约检查"]
    H --> I["计算审计覆盖质量闸门"]
    I --> J["生成 JSON 证据包和 HTML 报告"]
    J --> K["AI 基于证据解读高风险项"]
Loading

关键概念

名词 含义
迭代范围 本次审查包含的提交、revision、未提交改动或目录快照范围。
baseline 迭代开始前的代码状态,用于判断问题是否由本次改动引入。
target 本次迭代完成后的目标代码状态。
业务契约 字段含义、值来源、调用参数、寻址方式、权限条件、状态条件等必须保持的业务约束。
证据 支持审查结论的可追溯信息,包括文件、行号、语义槽位、值来源、调用链和差异。
Spoon 内置 Java AST 分析器,目标项目无需编译或解析完整依赖。
CodeGraph 调用链和影响范围辅助分析器,由 Skill 自动下载和管理。
覆盖质量闸门 判断分析证据是否足够支持结论。核心 Java 分析失败时为 blocked,部分能力缺失时为 partial

输出

默认生成:

code-change-check-output/
├── evidence.json
└── report.html

报告重点包含:

  • 顶部可交付评分矩阵,按需求、任务和业务契约展示多维度达标情况。
  • Java 文件解析覆盖率与失败原因。
  • 字段映射、参数、寻址、权限、状态和数据库写入差异。
  • 调用链、影响范围和受影响测试。
  • 业务契约检查结果。
  • 必须人工核验的证据缺口。

开发

python -m unittest discover -s tests -p "test_*.py"
cd tools/java-analyzer && mvn test package
python scripts/build_release.py

About

AI code review skill/CLI for code-change quality checks with Git/SVN, business contracts, semantic diff, and optional CodeQL.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages