🟡 [M17] bench --suites 拼写错误会静默运行 0 个套件 #37

Closed
opened 2026-06-05 11:54:14 +08:00 by dailz · 1 comment
Owner

问题

--suites 参数直接传入 BenchConfigrunner.rs 只做精确字符串匹配。无效套件名不会报错或警告,可能导致用户拼写错误后没有任何 benchmark 被执行。

影响

用户只会看到 Completed 0 benchmarks,难以发现是 suite 名称错误。

位置

  • crates/bench/src/main.rs:20
  • crates/bench/src/runner.rs:22

建议

在构造 BenchConfig 前校验 suite 名称集合;对未知名称报错退出或至少输出 warning。

## 问题 `--suites` 参数直接传入 `BenchConfig`,`runner.rs` 只做精确字符串匹配。无效套件名不会报错或警告,可能导致用户拼写错误后没有任何 benchmark 被执行。 ## 影响 用户只会看到 `Completed 0 benchmarks`,难以发现是 suite 名称错误。 ## 位置 - `crates/bench/src/main.rs:20` - `crates/bench/src/runner.rs:22` ## 建议 在构造 `BenchConfig` 前校验 suite 名称集合;对未知名称报错退出或至少输出 warning。
dailz closed this issue 2026-06-05 15:20:34 +08:00
Author
Owner

修复方案

按照 Oracle 推荐的类型驱动方案实施:引入 Suite 枚举替代字符串匹配。

改动

runner.rs

  • 新增 Suite 枚举,覆盖全部 7 个合法 suite
  • FromStr 实现:无效名称返回错误信息并列出全部合法值
  • BenchConfig.suites 类型从 Option<Vec> 改为 Option<Vec>
  • should_run 从字符串匹配改为枚举 contains

main.rs

  • CLI 边界解析 --suites,首个无效名即报错退出

测试(4 项全部通过)

parse_all_valid_suites / misspelled_suite_returns_error / error_message_lists_all_valid_values / mixed_valid_invalid_stops_at_first_error

Commit: fb57584

## 修复方案 按照 Oracle 推荐的类型驱动方案实施:引入 Suite 枚举替代字符串匹配。 ### 改动 **runner.rs** - 新增 Suite 枚举,覆盖全部 7 个合法 suite - FromStr 实现:无效名称返回错误信息并列出全部合法值 - BenchConfig.suites 类型从 Option<Vec<String>> 改为 Option<Vec<Suite>> - should_run 从字符串匹配改为枚举 contains **main.rs** - CLI 边界解析 --suites,首个无效名即报错退出 ### 测试(4 项全部通过) parse_all_valid_suites / misspelled_suite_returns_error / error_message_lists_all_valid_values / mixed_valid_invalid_stops_at_first_error Commit: fb57584
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dailz/logViewer#37