Skip to content

feat: add test-value-detector action#49

Open
Svtter wants to merge 8 commits into
mainfrom
feat/test-value-detector
Open

feat: add test-value-detector action#49
Svtter wants to merge 8 commits into
mainfrom
feat/test-value-detector

Conversation

@Svtter
Copy link
Copy Markdown
Collaborator

@Svtter Svtter commented May 1, 2026

Summary

  • Add test-value-detector/action.yml based on review/action.yml structure
  • Detects low-value tests in PRs: empty assertions, hardcoded mocks, detached tests, duplicates, missing edge-case coverage
  • Default prompt uses Chinese output with CRITICAL/MEDIUM/LOW severity classification
  • Cache key prefix changed from review to test-value-detector

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

可合并

该 PR 新增 test-value-detector/action.yml,结构基于 review/action.yml,功能正确。提示词设计合理,中文输出,CRITICAL/MEDIUM/LOW 三级分类清晰。缓存键隔离正确,路径引用 ../setup-opencode/../github-run-opencode/ 可正确解析。与仓库内 feature-missing/review/ 等已有 action 的模板化复制模式一致。

阻塞项:无

建议项:

  1. review/action.yml 几乎完全重复(245 行一致,仅差异约 10 行),建议后续抽取公共执行步骤为 shared composite action 或可复用 workflow,减少长期维护成本
  2. 作为"测试价值检测器",自身缺少测试用例,建议添加至少一个端到端或单元测试
  3. 未更新顶层 README 或索引文件说明该新 action 的存在与用法

New%20session%20-%202026-05-01T12%3A13%3A45.987Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

可合并

审查总结

新增 test-value-detector/action.yml 基于 review/action.yml 结构,修改得当(名称、描述、缓存前缀、OS检查信息、prompt 均已替换),功能正确。README 文档同步更新完整。

阻塞项:无

建议项

  1. smoke-test.yml 未包含新 action 的冒烟测试README.md 中 CI 描述称 smoke-tests 包括 test-value-detector,但实际 .github/workflows/smoke-test.yml 未添加对应步骤。建议在 smoke-test.yml 中补充该 action 的加载测试,保持一致。

New%20session%20-%202026-05-01T12%3A14%3A18.403Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

发现遗漏

分析

Spec: PR body 明确的要求是:

  1. 添加 test-value-detector/action.yml
  2. 检测五类低价值测试(空断言、硬编码 mock、脱节测试、重复测试、缺少边界覆盖)
  3. 默认中文 prompt + CRITICAL/MEDIUM/LOW 分类
  4. Cache key 前缀从 review 改为 test-value-detector
  5. 更新 README

实现检查: action.yml 结构完整,与 review/action.yml 平行,prompt 覆盖所有五类检测维度和严重等级分类,cache key 已修改。README 添加了文档、使用示例、定制说明和发布清单中的引用。

MEDIUM

  • CI 配置未集成 test-value-detector: PR 在 README 的 CI 描述段(第 209 行)新增了 uses: ./test-value-detector 声明 CI "smoke-tests all actions",但实际 CI workflow(.github/workflows/ci.yml)并未添加 test-value-detector 的 smoke test。同样,smoke-test.yml 也缺少对应的 action 加载测试(现有 review 和 feature-missing 各有一份测试)。需要补充 CI 中对 ./test-value-detector 的 smoke test 步骤,确保 action 能被正确加载调用,避免实际使用中出现配置错误。

其余 spec 要求均已实现,无其他遗漏。

New%20session%20-%202026-05-01T12%3A14%3A18.081Z
opencode session  |  github run

@Svtter Svtter force-pushed the feat/test-value-detector branch from 9e49149 to 871582a Compare May 14, 2026 15:09
@github-actions
Copy link
Copy Markdown

不可合并

PR 新增 test-value-detector/action.yml,默认 prompt 覆盖了五种低价值测试检测维度且严重等级分类清晰,README 文档同步更新。但存在安全相关问题需先修复。

阻塞项:

  1. 缺少 GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制reviewfeature-missingspec-coverage 三个 wrapper action 均设置 GITHUB_RUN_OPENCODE_PERMISSION 环境变量,传递 {"edit":"deny","bash":{"git commit *":"deny","git push *":"deny","git add *":"deny","git stash *":"deny","git reset *":"deny","git checkout *":"deny"}} 以禁止 model 执行任何写操作。test-value-detector 完全缺失该 env var,而 prompt 明确要求"只读模式,请勿修改任何代码",存在 model 绕过 prompt 指令执行 git 写操作的安全风险。

建议项:

  1. README CI 描述与 smoke-test.yml 不一致 — README 第 249 行将 test-value-detector 列入 CI smoke-test 列表,但 smoke-test.yml 未添加对应的 action 加载测试步骤,描述与实际情况不符
  2. 代码与 review/action.yml 大量重复(245 行仅 ~10 行差异),建议后续抽取公共执行步骤为 shared composite action 以减少维护成本
  3. 缺少自身测试 — 作为"测试价值检测器"未包含任何端到端或单元测试

New%20session%20-%202026-05-14T15%3A09%3A32.642Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

发现遗漏

Summary

PR 核心功能(action.yml 文件本身)实现完整:五类低价值测试检测维度已嵌入 default prompt、中文输出+CRITICAL/MEDIUM/LOW 分类正确、cache key 已改为 test-value-detector 前缀。但 PR 对 README 的文档更新中存在与实际 CI 配置不符的声明。


MEDIUM

  1. README CI 段声明的冒烟测试未实际配置
    • 缺失内容: README 第 249 行(PR 新增内容)声称 CI "smoke-tests all actions through ... uses: ./test-value-detector",但 .github/workflows/ci.yml 中没有对应的 ./test-value-detector 冒烟测试步骤。目前 ci.yml 仅包含 ./setup-opencode./run-opencode./github-run-opencode./review 四个步骤。
    • Spec 来源: PR body 虽未明确要求更新 CI,但 PR 在 README 中新增了这条声明,属于 PR 交付物的一部分,与实际 CI 配置不一致。
    • 修复建议: 在 .github/workflows/ci.ymlsmoke-actions job 中增加类似其他 action 的冒烟测试步骤,引用 ./test-value-detector

LOW

  1. "three review actions" 表格标题与条目未同步更新
    • 缺失内容: README 第 149 行表格标题为 "How the three review actions differ",而新增 test-value-detector 后已有 4 个审查类 action。该表格仅列出 reviewfeature-missingspec-coverage 三项,未包含 test-value-detector 的行。
    • Spec 来源: PR body 的第 4 项要求调整缓存前缀等细节,与表格更新同类,属于文档一致性遗漏。
    • 修复建议: 将标题改为 "How the four review actions differ",在表格中新增一行 test-value-detector,scope source 为 "PR test code",catch 描述为 "Low-value test patterns (empty assertions, hardcoded mocks, detached tests, duplicates, missing edge-case coverage)"。

核心 action 功能实现完整,无 CRITICAL 级别遗漏。 test-value-detector/action.yml 本身的 prompt 覆盖全部五类检测维度,中文输出格式、严重等级分类、缓存键隔离均正确实现。上述两个 gap 均为 README 文档与实际配置/内容的不一致。

New%20session%20-%202026-05-14T15%3A09%3A33.782Z
opencode session  |  github run

- Add GITHUB_RUN_OPENCODE_PERMISSION security env var to prevent write ops
- Add test-value-detector smoke test to ci.yml and smoke-test.yml
- Update README table from 'three' to 'four' review actions with test-value-detector entry
@github-actions
Copy link
Copy Markdown

无遗漏

PR 全部 spec 要求均已完整实现:

  • test-value-detector/action.yml 结构正确,default prompt 覆盖全部五类低价值测试检测维度(空断言、硬编码 mock、测试与实现脱节、重复测试、缺少边界/异常覆盖)
  • 中文输出 + CRITICAL/MEDIUM/LOW 三级分类已嵌入 prompt
  • Cache key 前缀已改为 test-value-detector
  • GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制已正确设置
  • CI workflow (ci.yml) 已添加 test-value-detector 冒烟测试步骤
  • 手动触发 smoke-test (smoke-test.yml) 已添加对应 action 加载测试
  • README 已同步更新:功能说明、使用示例、review actions 对比表(标题改为"four"并新增行)、CI 描述、publishing checklist 均已包含 test-value-detector

New%20session%20-%202026-05-14T15%3A14%3A24.207Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

新 action test-value-detector/action.yml 结构完整,prompt 覆盖全部五类低价值测试检测维度,CRITICAL/MEDIUM/LOW 分类清晰,缓存键隔离正确,GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制已正确设置。ci.ymlsmoke-test.yml 均已添加对应冒烟测试步骤,README.md 文档同步更新完整。早期审查意见中提出的问题在当前版本中均已修复。

阻塞项:无

建议项:

  1. 缺少 extra-env 输入review/action.ymlspec-coverage/action.yml 均提供 extra-env 输入用于传递额外环境变量,新 action 未包含此项,建议补充以保持一致性
  2. 大量代码与 review/action.yml 重复(仅 prompt 和几个字符串不同),建议后续抽取公共执行步骤为 shared composite action 减少维护成本
  3. 自身缺少测试 — 作为"测试价值检测器",未包含端到端或单元测试

New%20session%20-%202026-05-14T15%3A14%3A32.264Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

I have reviewed all 4 changed files. Let me now provide my analysis.

可合并

PR 新增 test-value-detector/action.yml,完整实现了 PR body 中描述的五类低价值测试检测功能。所有早期审查意见中提出的问题在当前版本中均已修复

  • GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制已正确设置(action.yml:248-249,与 review/action.yml 一致)
  • ci.yml 已添加 test-value-detector 冒烟测试步骤(ci.yml:64-72)
  • smoke-test.yml 已添加对应 action 加载测试(smoke-test.yml:40-46)
  • README.md 文档同步完整:对比表已改为"four"并新增行(README.md:149-156),CI 描述、使用示例、publishing checklist 均已包含

阻塞项:无

建议项:

  1. extra-env 输入存在但无 fallback-models/model-timeout-seconds/fallback-on-regex 的 env 传递缺失? — 已核实 extra-env 正确传递(action.yml:247),fallback 相关输入也全部包含(action.yml:65-76),无遗漏
  2. 大量代码与 review/action.yml 重复(255 行中仅 default prompt 和约 5 个字符串不同),建议后续抽取公共执行步骤为 shared composite action 降低维护成本
  3. 自身缺少测试 — 作为"测试价值检测器",未包含端到端或单元测试来验证自身 prompt 对真实测试文件的检测准确性

New%20session%20-%202026-05-14T15%3A19%3A45.614Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

发现遗漏

简述

PR body 声明的 4 项需求均已完成实现,但存在 1 个与 spec 隐含要求相关的缺口。


MEDIUM

  • smoke-test 输入配置与 review action 不一致,可能导致不通过的烟雾测试
    ci.yml 中新增的 test-value-detector smoke test 步骤仅传入了 install-url, cache, install-attempts, attempts, github-token, zhipu-api-key 这 6 个输入。而 review action 的 smoke test 传入的输入更多且对齐了 review/action.yml 全部核心输入。test-value-detector 是检测型 action(只读,不写代码),但其 prompt 中包含了 GITHUB_RUN_OPENCODE_PERMISSION 权限限制。ci.yml 中的 smoke test 没有传入 prompt 等关键输入,可能无法真正触发低价值测试检测逻辑的执行路径。

    Spec 来源: PR body 要求 "Detects low-value tests in PRs" 和 "Default prompt uses Chinese output with CRITICAL/MEDIUM/LOW",默认可正常工作,但 smoke test 未传入最小可行输入集来验证 action 能按预期执行检测流程。

    建议修复: 在 ci.yml 新增的 smoke test 步骤中,参照其他已存在的 action smoke test,传入必要的核心输入(如 prompt: "test" 或保持功能执行通路有效),确保 smoke test 能实际验证 action 路径而非仅加载元数据。

New%20session%20-%202026-05-14T15%3A19%3A42.407Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

Spec 来自 PR body,共 4 项要求:

  1. ✅ 新增 test-value-detector/action.yml,结构基于 review/action.yml
  2. ✅ Default prompt 覆盖全部五类低价值测试检测维度(空断言、硬编码 mock、脱节测试、重复测试、无边界/异常覆盖)
  3. ✅ 中文输出 + CRITICAL/MEDIUM/LOW 三级分类
  4. ✅ Cache key 前缀由 review-opencode- 改为 test-value-detector-opencode-

除此之外,早期审查中提出的补充要求也已修复:

  • GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制 ✅
  • ci.yml 冒烟测试步骤 ✅
  • smoke-test.yml 加载测试 ✅
  • README 对比表更新("four" + 新增行)、CI 描述、发布清单 ✅

无遗漏

PR body 中明确声明的 4 项需求全部完整实现,所有早期审查反馈的补充项(权限控制、CI/smoke-test 集成、README 同步)也均已到位。核心 action 功能、prompt 质量、集成配置、文档更新均无缺口。

New%20session%20-%202026-05-14T15%3A24%3A00.537Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

功能实现完整,全部已有审查意见已在当前版本中修复:

  • GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制已设置
  • ci.ymlsmoke-test.yml 均已添加对应的冒烟测试步骤
  • README.md 文档完整更新(对比表、使用示例、CI 描述、publishing checklist 均已包含)
  • extra-env 输入已包含,与 review/action.yml 结构完全一致
  • Cache key 隔离正确(test-value-detector- 前缀)
  • Prompt 覆盖全部五类低价值测试检测维度,CRITICAL/MEDIUM/LOW 分类清晰

阻塞项:无

建议项:

  1. review/action.yml 大量代码重复(仅 prompt 和几个字符串不同),建议后续抽取公共执行步骤为 shared composite action 以降低长期维护成本
  2. 作为"测试价值检测器",自身缺少测试验证其对真实测试文件的检测准确性

New%20session%20-%202026-05-14T15%3A24%3A03.460Z
opencode session  |  github run

- Add configurable permission input to test-value-detector/action.yml
- Add missing extra-env input to feature-missing/action.yml
- Add sensitive env var warning in extra-env parsing
- Add permission JSON type validation (must be dict)
- Stop stripping whitespace from extra-env values to preserve intent
@github-actions
Copy link
Copy Markdown

无遗漏

PR body 明确声明的 4 项需求均已完整实现:

  1. test-value-detector/action.yml — 基于 review/action.yml 结构创建,包含完整的 inputs、composite steps、OS 检查、路径解析、install 安装、cache 步骤
  2. 五类低价值测试检测 — default prompt(action.yml:81-110)覆盖了全部五个维度:空断言/软断言、硬编码 mock、测试与实现脱节、重复测试、无边界/异常覆盖
  3. 中文输出 + CRITICAL/MEDIUM/LOW 分类 — prompt 中明确要求中文回答,并按 CRITICAL(空断言、完全脱节)、MEDIUM(硬编码 mock、重复测试)、LOW(缺少边界覆盖)三级分类
  4. Cache key 前缀修改test-value-detector-opencode-(action.yml:225)

此外,PR 对配套文件(README.md 完整文档及对比表更新、ci.ymlsmoke-test.yml 的 smoke test 集成)的更新也均与 test-value-detector 新 action 一致,无遗漏。

New%20session%20-%202026-05-14T15%3A29%3A12.469Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

分析总结

我已审查 PR HEAD(9941c9e)的全部 6 个变更文件。所有早期审查意见中的问题已在当前版本修复:GITHUB_RUN_OPENCODE_PERMISSION 已正确设置、ci.ymlsmoke-test.yml 已添加冒烟测试步骤、README.md 文档同步完整(对比表、使用示例、CI 描述、发布清单均已更新)。

可合并

新增 test-value-detector/action.yml 结构完整,default prompt 覆盖全部五类低价值测试检测维度,CRITICAL/MEDIUM/LOW 三级分类清晰,cache key 前缀隔离正确,extra-envpermission 输入均包含,与仓库内其他 wrapper action 一致。feature-missing/action.yml 补充了缺失的 extra-env 输入,run-github-opencode.py 增加了 extra-env 敏感键警告和 permission 类型校验,均为合理改进。

阻塞项:无

建议项:

  1. README 发布清单描述有误feature-missing 的描述从原文的 "PR scope audit" 被误改为 "spec coverage audit",与 spec-coverage 的描述完全重复(README.md:265)。应恢复为 "PR scope audit"。
  2. run-github-opencode.py 移除了 value = value.strip()extra-env 解析中 value 不再 strip,若用户输入 KEY= valueKEY=value ,值会保留前导/尾随空格,是一个未经文档说明的行为变更。
  3. review/action.yml 大量重复 — 264 行中仅 prompt 和约 5 个字符串不同,建议后续抽取公共执行步骤为 shared composite action 降低维护成本。
  4. 自身无测试 — 作为"测试价值检测器",未包含验证自身 prompt 对真实测试文件检测准确性的端到端或单元测试。

New%20session%20-%202026-05-14T15%3A29%3A09.351Z
opencode session  |  github run

- Restore value.strip() to prevent leading/trailing whitespace in env values
- Add BLOCKED_ENV_KEYS denylist for critical variables (PATH, HOME, MODEL, etc.)
- Validate key format with regex [A-Za-z_][A-Za-z0-9_]*
- Use ::error:: / ::warning:: GitHub Actions annotation syntax
@github-actions
Copy link
Copy Markdown

无遗漏

PR body 明确声明 4 项需求均已完整实现:

  1. test-value-detector/action.yml 文件已创建,结构基于 review/action.yml
  2. 五种低价值测试检测维度(空断言、硬编码 mock、脱节测试、重复测试、缺少边界覆盖)已嵌入 default prompt ✅
  3. 中文输出 + CRITICAL/MEDIUM/LOW 三级分类已在 prompt 中明确指定 ✅
  4. Cache key 前缀改为 test-value-detector-opencode-

此外,早期审查中提出的 GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制、ci.ymlsmoke-test.yml 集成、extra-env 输入、README 文档同步等补充要求也在当前版本中全部到位,无缺口。

New%20session%20-%202026-05-14T15%3A32%3A15.923Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

test-value-detector/action.yml 结构完整,prompt 覆盖全部五类低价值测试检测维度,CRITICAL/MEDIUM/LOW 分类清晰。Cache key 前缀 test-value-detector-opencode- 隔离正确。permission 输入和 GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制已设置。ci.ymlsmoke-test.yml 均已添加冒烟测试步骤。README 文档同步完整(对比表标题已改为 "four"、使用示例、CI 描述、发布清单均已包含)。feature-missing/action.yml 补充了缺失的 extra-env 输入。run-github-opencode.py 增加了 extra-env 键名验证、BLOCKED_ENV_KEYS 安全过滤、permission 类型校验,均为合理加固。

阻塞项:无

建议项:

  1. review/action.yml 大量重复(全局仅 prompt 和几个字符串不同),且 reviewpermission 仍为硬编码而本 PR 采用 input 方式,建议后续统一抽取公共执行步骤为 shared composite action
  2. README 第 265 行 feature-missing@v2 描述为 "for spec coverage audit",与 spec-coverage 的描述重复(pre-existing 问题,非本 PR 引入)
  3. 作为"测试价值检测器",自身缺少端到端或单元测试验证其 prompt 对真实测试文件的检测准确性

New%20session%20-%202026-05-14T15%3A32%3A19.962Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

无遗漏

PR body 声明的 4 项需求已全部完整实现:

  1. test-value-detector/action.yml 已创建,结构基于 review/action.yml,包含完整的 inputs(permissionextra-env 等)、composite steps、OS 检查、路径解析、install 安装、cache 步骤 ✅
  2. 五类低价值测试检测 — default prompt(action.yml:81-110)覆盖全部五个维度:空断言/软断言、硬编码 mock、测试与实现脱节、重复测试、无边界/异常覆盖 ✅
  3. 中文输出 + CRITICAL/MEDIUM/LOW 三级分类 — prompt 明确要求中文回答,并按严重等级分类(CRITICAL: 空断言/完全脱节, MEDIUM: 硬编码 mock/重复测试, LOW: 缺少边界覆盖)✅
  4. Cache key 前缀已改为 test-value-detector-opencode-(action.yml:225)✅

此外,CI 集成(ci.yml 冒烟测试步骤)、手动 smoke test(smoke-test.yml 加载测试)、README 文档(功能介绍、对比表更新为 "four"、使用示例、CI 描述、发布清单)均已同步更新,无缺口。

New%20session%20-%202026-05-14T15%3A35%3A58.843Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

PR 新增 test-value-detector/action.yml(264 行),结构完整,覆盖全部五类低价值测试检测维度,中文输出 + CRITICAL/MEDIUM/LOW 三级分类清晰。所有早期审查反馈已在当前版本修复:

  • GITHUB_RUN_OPENCODE_PERMISSION 安全权限控制已设置(通过 input 传递)
  • ci.ymlsmoke-test.yml 均已添加冒烟测试步骤
  • README 文档同步完整(对比表改为 four、使用示例、CI 描述、发布清单均已更新)
  • Cache key 前缀 test-value-detector-opencode- 隔离正确
  • extra-env input 已包含
  • run-github-opencode.py 增加了 extra-env 键名校验、BLOCKED_ENV_KEYS 安全过滤、permission 类型校验,均为合理加固

阻塞项:无

建议项:

  1. review/action.ymlfeature-missing/action.yml 大量代码重复(仅 prompt 和几个字符串不同),且 review/feature-missingpermission 仍为硬编码而本 PR 采用 input 方式,建议后续统一抽取公共执行步骤为 shared composite action 降低维护成本
  2. 作为"测试价值检测器",自身缺少端到端或单元测试验证其 prompt 对真实测试文件的检测准确性

New%20session%20-%202026-05-14T15%3A36%3A00.061Z
opencode session  |  github run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant