[Bug]: dead_code/unused_imports warnings for unix-only CLI dispatch and daemon symbols on Windows builds
- 主要语言
- Rust
- 星标
- 2.3k
- 派生
- 231
- 平均合并
- 2 小时 49 分钟
- 30 天内合并 PR
- 589
描述
Three Windows `cargo check` warnings in the CLI crate point at symbols whose only production consumers are already unix-only, while the symbols themselves are compiled unconditionally.
**Symptom**
- `src/apps/cli/src/dispatch/runner.rs:2` — `unused_imports`: `std::time::Duration` is consumed only inside `#[cfg(unix)]` code paths (the unix process-group wait in `wait_for_process_group_exit` and a unix-only test case), so on Windows the import dangles.
- `src/apps/cli/src/dispatch/runner.rs:337` — `dead_code`: `arguments_match_action` is called from the `target_os = "linux"` and `target_os = "macos"` service paths (both of which imply unix) and from the platform-agnostic unit tests, but never on Windows.
- `src/apps/cli/src/daemon/service.rs:88` — `dead_code`: `run_command` is only called from the macOS launchd and the systemd service management paths, all of which are unix-only.
**Root cause**
The definitions are unconditional while every consumer is gated behind unix cfgs, so Windows builds carry symbols with no reachable caller.
**Proposed fix**
Mirror the real consumer surfaces with precise cfg gates: `#[cfg(unix)]` on the import and on `run_command`, and `#[cfg(any(unix, test))]` on `arguments_match_action` so the platform-agnostic unit tests keep compiling on every platform. No behavior changes, no test removals, no assertions weakened; Linux and macOS builds keep every symbol exactly as before.
**Verification**
- `cargo check --locked -p bitfun-cli` on Windows: 0 errors, and the three warnings no longer appear.
- `cargo test --locked -p bitfun-cli dispatch::runner`: 7 passed, 0 failed (the cfg(any(unix, test)) gate keeps the runner tests compiling on Windows).
- The unix-side compilation surface is confirmed by the repository CI platform matrix (ubuntu/macos jobs).
贡献指南
调研方向
从 src/apps/cli/src/dispatch/runner.rs 和 src/apps/cli/src/daemon/service.rs 开始,重点关注 issue 中标识的符号和行。将每个定义与其仅限 Unix 的使用者进行比较,并保留与平台无关的 runner 测试。在 Windows 上使用 cargo check --locked -p bitfun-cli 和 cargo test --locked -p bitfun-cli dispatch::runner 进行验证,且三个已报告的符号不得产生警告。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- rust
- 领域
- cli
- Issue 类型
- 缺陷
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 活跃度
- 活跃
- 描述清晰度
- 描述清楚
- 新手友好度
- 88/100