全部插件

DSH / BUNDLE / BUNDLES

dsh-culprit

v0.1.0ca610 / dsh-culprit6a6080b682

可安装组合包组合包与其他模块社区 · Topic 自动分析

概览

dsh-culprit

Regression culprit finder: bisect a failing predicate to the exact commit that broke it, with evidence.

README / ZH

插件文档

目录摘要

Regression culprit finder: bisect a failing predicate to the exact commit that broke it, with evidence.

dsh.pub 核对固定版本的组合包契约、运行时事实与分发语义;完整 README 请查看源仓库。

在 GitHub 阅读完整 README

LIMITATIONS

已知限制

- **只看 `--first-parent` 历史。** 快、确定,但如果肇事者藏在某个已合并分支内部, 肇事点会落在那个 merge commit 上(结果里会用警告点明这一点)。 - **merge commit 的 diff** 默认拿不到(git 的 combined diff 默认关闭), 插件会自动退回 `git diff <sha>^1 <sha>`。 - **旧提交上跑不起来的东西会被跳过**,跳太多就是 `inconclusive`——这是诚实的失败, 不是 bug。给一个更近的 `goodRef` 通常就能收敛。 - **需要 `git` 和能启动子进程的环境。** 沙箱里如果禁止管道 stdio, git 拿不到输出,工具会报 `not-a-repo`。 ### 一个值得记下来的 Windows 坑 Windows PowerShell **会把任何非零退出码压成 1**: ``` node skip.mjs; exit=125 powershell -Command "node skip.mjs" exit=1 ← 真实码丢了 powershell -Command "node skip.mjs; exit $LASTEXITCODE" exit=125 ← 只能这么写 ``` 所以插件在 Windows 上是把判据包成 `... ; exit $LASTEXITCODE` 再执行的 (`cmd` 那条路用 `/v:on` 加 `!ERRORLEVEL!`,因为 `%ERRORLEVEL%` 在解析期就展开了)。 不这么干,"退出码 125 = 跳过"这条约定在 Windows 上直接失效。 ---