需求
创建一个新的 OpenCode Action:test-value-detector,用于在 PR/commit 中自动检测新增或修改的测试是否为有价值的测试(valuable test)。
背景
CI 中大量测试要么是走过场(空断言、硬编码返回值、无实际校验逻辑),要么与被测代码完全脱节。这类测试虽然能"通过",但对代码质量毫无贡献,反而增加了维护负担和 CI 时间。需要一个 action 来自动识别并标记这些低价值测试。
预期行为
- 触发时机:PR 提交 / push 包含测试文件变更时自动运行
- 检测维度(建议但不限于):
- 空断言 / 软断言:测试中没有任何 assert、expect、require 等断言调用
- 硬编码 mock:mock 返回值与实际业务逻辑无关,测试永远通过
- 测试与实现脱节:测试引用的函数/方法在对应源码中不存在或签名不匹配
- 重复测试:与已有测试逻辑完全重复
- 无边界/异常覆盖:只测 happy path,没有任何边界条件或异常输入
- 输出:
- 在 PR 中添加 comment,列出检测到的低价值测试及其问题分类
- 可选:设置 PR label(如
low-value-tests)或 PR check status(warn/fail)
- 输出 SARIF 格式供 code scanning 消费(可选)
输入参数建议
| 参数 |
默认值 |
说明 |
github-token |
"" |
GITHUB_TOKEN,用于评论和状态检查 |
zhipu-api-key |
"" |
ZHIPU_API_KEY,用于 OpenCode LLM 分析 |
opencode-go-api-key |
"" |
OPENCODE_GO_API_KEY 备选 |
model |
"zai-coding-plan/glm-5.1" |
使用的模型 |
prompt |
内置 prompt |
自定义检测 prompt(覆盖默认) |
test-patterns |
"**/*_test.*, **/test_*, **/tests/**" |
测试文件匹配模式 |
fail-on-low-value |
"false" |
是否将低价值测试视为 CI 失败 |
comment-mode |
"always" |
评论策略:always / on-failure / off |
参考
- 现有 action 结构参考:
review、feature-missing
- 可复用
setup-opencode + run-opencode 组合
- Prompt 应聚焦于测试质量分析,而非代码风格或逻辑 review
实现建议
- Action 入口:
action.yml + run-opencode 调用
- 内置 prompt 模板,覆盖上述检测维度
- 支持 prompt 覆盖,让用户按项目需求定制检测逻辑
- 考虑大型仓库的性能:只分析 diff 中涉及的测试文件,不扫描全量
需求
创建一个新的 OpenCode Action:test-value-detector,用于在 PR/commit 中自动检测新增或修改的测试是否为有价值的测试(valuable test)。
背景
CI 中大量测试要么是走过场(空断言、硬编码返回值、无实际校验逻辑),要么与被测代码完全脱节。这类测试虽然能"通过",但对代码质量毫无贡献,反而增加了维护负担和 CI 时间。需要一个 action 来自动识别并标记这些低价值测试。
预期行为
low-value-tests)或 PR check status(warn/fail)输入参数建议
github-token""zhipu-api-key""opencode-go-api-key""model"zai-coding-plan/glm-5.1"prompttest-patterns"**/*_test.*, **/test_*, **/tests/**"fail-on-low-value"false"comment-mode"always"always/on-failure/off参考
review、feature-missingsetup-opencode+run-opencode组合实现建议
action.yml+run-opencode调用