DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

SleepEggTart /

SleepEggTart/dsh-code-coverage

Verified

This plugin has no description yet.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@77bde5d4

dsh-code-coverage

AI 给你写的代码,到底有多少在被测试保护着?

解析 DeepSeek Harness(DSH)session 日志,归因 AI 写了哪些文件,再叠加 c8 覆盖率数据,产出 「AI 代码 vs 人工代码」覆盖率对比、未测 AI 文件风险清单与信任分。

这不是又一个覆盖率工具——c8 已经解决了覆盖率本身。我们的护城河是归因:通过解析 DSH session 日志,精确知道哪些文件被 AI 碰过,这是 Qodo、Diffblue 等外部工具做不到的。

真实项目数据

一个实际项目的归因结果(17 个 DSH session):

指标 AI 代码 人工代码
行数 870 9,772
覆盖率 68% 5%

信任分:68 / B

AI 生成的代码覆盖率反而更高——因为 AI 写代码的同时把测试也写了。而 9,772 行人工代码,覆盖率只有 5%。

安装

npm install -g dsh-code-coverage
# 或
npx dsh-code-coverage

前提条件:Node.js ≥ 18,且本机已安装 DSH(~/.dsh 目录存在)。

快速开始

# 分析当前目录
dsh-code-coverage

# 分析指定项目
dsh-code-coverage --cwd /path/to/your/project

# 覆盖自动探测的测试命令
dsh-code-coverage --test-command "npm test -- --pool=threads"

# 输出 JSON(供脚本/插件消费)
dsh-code-coverage --json

# 限制"高危未测文件"显示条数
dsh-code-coverage --top 5

参数说明

参数 说明
--cwd <dir> 目标项目目录(默认:当前工作目录)
--test-command <cmd> 覆盖自动探测的测试命令
--dsh-root <dir> DSH 根目录(默认:~/.dsh,主要用于测试)
--json 输出 JSON 格式
--top <n> 高危未测文件显示条数(默认:10)
--help 查看帮助
--version 查看版本

输出示例

╭─────────────────────────────────────────────────────╮
│  dsh-code-coverage — AI 代码信任报告                │
╰─────────────────────────────────────────────────────╯

  项目:         /path/to/project
  Session 数:   17 个 DSH session 已归因
  测试命令:     vitest --pool=threads

  ┌──────────────┬────────┬──────────┐
  │              │   行数 │ 覆盖率   │
  ├──────────────┼────────┼──────────┤
  │  AI 代码     │    870 │     68%  │
  │  人工代码    │  9,772 │      5%  │
  └──────────────┴────────┴──────────┘

  信任分: 68 / B

  ⚠ 高危未测 AI 文件(Top 3):
    1. src/hooks/userealsendmutation.ts — 250 行未覆盖
    2. ...

工作原理

三步自动化完成:

  1. 归因 — 解析 ~/.dsh/sessions/ 下的 session 日志,识别 AI 创建或修改过的文件。支持 write、edit、str_replace_editor 三类工具调用,包含 subagent 子会话。

  2. 覆盖率 — spawn c8 --all 收集测试套件的 V8 覆盖率数据。--all 标志确保从未被测试 import 的文件也会出现在报告中——AI 写了但从未被加载的文件恰恰是最危险的。

  3. 交叉分析 — 将归因结果与覆盖率数据交叉比对,产出:

    • AI 代码 vs 人工代码的行数与覆盖率对比
    • 未测 AI 文件风险清单(按未覆盖行数排序)
    • 信任分(0–100 分,附字母等级)

已知限制

提 issue 前请先阅读这些边界:

  • vitest 3 pool=forks 屏蔽覆盖率。 vitest 3 默认 pool: forks,会阻止 Node 的 NODE_V8_COVERAGE 传递到子进程,导致覆盖率恒为 0。解决方法:加 --pool=threads(如 npm test -- --pool=threads)。这是 vitest 的问题,不是本工具的 bug。

  • Shell 命令写文件不解析。 pwsh/bash 通过输出重定向(> / >>)写入文件的调用,MVP 不做解析。目前仅归因 write、edit、str_replace_editor 三种工具调用。

  • 仅支持 JS/TS。 c8 的覆盖率采集针对 JavaScript 和 TypeScript,不支持其他语言。

  • 文件级归因,非行级。 只要文件被 AI 碰过,整个文件就算 AI 生成。行级归因计划在 v0.3 实现。

  • 人工事后修改不重新分类。 如果 AI 写了一个文件,人工后来改过,该文件仍算 AI 生成。这是有意为之的简化。

  • 测试命令按空白拆分。 --test-command 按空白字符拆分参数,不支持带引号的复杂命令。建议传入 wrapper 脚本。

关于覆盖率数字

覆盖率是一个有用的起点指标,不是质量判决。

2026 年社区已有反面案例:91% 行覆盖率的项目在实践中零 bug 检出——因为被覆盖的行是 trivial 的,而关键路径仍处于测试盲区。

信任分高,只意味着 AI 生成的文件有测试,不代表测试质量高。用这个工具来发现盲区,而不是证明质量。

Roadmap

版本 状态 说明
v0.1 ✅ 已发布 文件级归因、c8 覆盖率叠加、信任分、终端 + JSON 输出
v0.2 计划中 dsh-code-coverage fix — 自动为未测 AI 文件补测试,然后重跑验证
v0.3 计划中 行级归因(当前仅支持文件级)

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 77bde5d44740

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout