SuperAPI AI 工具集

crap-analyzer

编程与开发

查看项目

更新于 10-15 23:44

技能介绍

用途:CRAP Analyzer 基于 CRAP(Change Risk Anti-Patterns)评分,识别同时具备高复杂度与低测试覆盖的函数,这类代码发布风险最高。评分公式为 CRAP(m) = comp(m)² × (1 − cov(m))³ + comp(m)。分析范围限定在代码 diff,而非整个代码库。

主要能力:确定 diff(支持 gh pr diff、git diff --merge-base、git diff --cached、git diff HEAD~N..HEAD 或显式文件列表);自动发现覆盖率文件(lcov、Cobertura、JaCoCo、Clover、Go coverage.out、coverage.py JSON),未找到时按 references/coverage-discovery.md 检测工具链并询问后再运行,拒绝则以 coverage=0% 继续并在报告头部标注;运行分析器并按 CRAP 降序排列结果;为每个超阈值函数给出重构方案(提取方法 diff 或守卫子句改写)与测试桩;发现数 ≥3 时可为每个发现并行派发子代理。

使用方式:将 diff 通过管道传给脚本,例如 python3 <skill-dir>/scripts/compute_crap.py --diff - --repo-root <repo> --threshold <N> --format both,默认阈值 20,可读取仓库根目录 .crap-analyzer.json 中的 threshold。DAE 质量门禁场景下需将机器可读证据写入 features/<feature>/evidence/quality/crap.json,并用 python3 plugins/engineer/scripts/dae_guard.py quality-verify 校验;严格策略为 max_crap_score ≥30 失败、≥20 警告、要求覆盖率证据、高风险发现数超过 0 即失败。

适用场景:审查 PR 或提交范围内的变更代码,定位高风险函数并生成重构与补测建议。

限制:仅分析 diff,不主动分析整个代码库;不作为独立 CI 替代;不识别脚本未支持的文件类型,二进制、生成代码与配置文件会被跳过;不会自动应用会改变副作用或异步顺序、构造函数/初始化/生命周期钩子、响应式流操作顺序以及模板/标记/视图的改动。