用途:在 trusty-tools monorepo 中,于实现任务完成、准备提交、创建 PR 或合并 main 之前,以及修改共享库 crate 或 rust-qa 智能体交付产物后,按固定顺序执行 Rust 质量门禁。
三道门禁(严格按序,首个失败即停止,不进入下一道):
- 格式检查:cargo fmt --check;失败时用 cargo fmt 修复后再次检查。
- Lint:cargo clippy --workspace --all-targets -- -D warnings;迭代时可用 cargo clippy -p trusty-search -- -D warnings,或带特性 cargo clippy -p trusty-common --features axum-server -- -D warnings。open-mpm 在 HEAD 有 142 个既有 clippy 错误,不影响其他工作;可用 cargo clippy --workspace --all-targets -- -D warnings 2>&1 | grep -v "open-mpm" 确认失败是否仅限 open-mpm。
- 测试:迭代用 cargo test -p <crate>,提交前必须 cargo test --workspace,完整验证用 -- --include-ignored。
Cargo -p 使用 Cargo.toml 的 name 字段而非目录名,例外:crates/trusty-git-analytics/ 用 -p tga,crates/open-mpm/ 用 -p open-mpm。测试输出须报告字面汇总行(如 test result: ok. …),不能只说“测试通过”;ignored 是 #[ignore] 的慢速或环境相关测试,非失败。
失败分诊:git stash 后在干净 HEAD 运行失败门禁,若同样失败则为既有失败,不阻塞补丁;若 HEAD 通过则为本补丁引入的回归,必须修复,之后 git stash pop 恢复。修改共享库(trusty-common、trusty-mcp-core、trusty-embedder、trusty-symgraph)后,先 workspace 级 cargo check,再测试该库及其各消费方,全部通过才提交。
限制与反模式:不得在 fmt 和 clippy 之前跑测试;不得用 cargo build 替代 cargo test;不得把 ignored 计为失败;不得因 open-mpm 既有 clippy 错误阻塞其他工作。三道门禁全绿且提供各门禁字面输出,PR 才可合并。