diff --git a/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md b/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md index 6b5264d02..7d4c72f1c 100644 --- a/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md +++ b/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md @@ -411,6 +411,11 @@ cargo check --features cocos-editor-execute,unity-editor-execute,godot-editor-ex cargo check --all-targets --features cocos-editor-execute,unity-editor-execute,godot-editor-execute --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml ``` +- 非 Windows cfg 块的静态审计(2026-10-06,对 Windows 口径的补强):本机与 CI 只编译 Windows(AGC 壳是 WebView2 交付面),所以 `#[cfg(target_os = "linux")]`、`#[cfg(target_os = "macos")]`、`#[cfg(unix)]` 等**非 Windows 块内的名字解析永远不会被编译器检查到**;`--all-targets` 的 test harness 实例告警又不按废弃代码处理,于是“删了一个 glob / 再导出,而只有非 Windows 块还在用”这类问题在 Windows 口径下不可见。实例:`command_exec.rs` 的 `#[cfg(target_os = "linux")]` 块在批次一删掉 crate 根 `use command_sandbox::*;` 之后,其中四个裸名引用只会在 Linux 目标下报 `E0425`。 +- 该次审计的覆盖面与结论:全 crate **463** 个非 Windows cfg 属性 / **68** 个文件 / **355** 个最外层块;块内共 **364** 个裸 crate 引用、**98** 个符号;提供方自带 cfg 的仅 **6** 行且全部消解;四类危险计数(悬空引用 / `not(test)` 越用 / windows-only `use` 被非 Windows 使用点依赖 / 跨平台谓词缺口)**全为 0** → 上述实例是孤例,当前无待修项。 +- 兜底条件(若成立才做):若将来 AGC 出现 Linux / macOS 交付面,应在 CI 增加对应目标的 `cargo check --all-targets` 作业;当前不新增作业。 +- 门禁现状:AGC 壳用生产口径 `#![cfg_attr(not(test), deny(warnings))]`(`src/main.rs`),其余 crate 用 `[lints.rust] warnings = "deny"`。 + ### Gitea Actions PR 门禁 AGC 分片运行器编译测试二进制时使用 `--message-format=json-render-diagnostics`:stdout 的 JSON artifact 用于定位可执行文件,编译错误与 warning 由 Cargo 渲染到继承的 stderr,CI 必须保留错误编号、源码位置与具体原因。回归验证运行 `node --test apps/ai-game-creator-shell/scripts/run-rust-shell-test-shards.test.mjs`。函数签名变更合并后,还要编译 `cfg(test)` 调用方;普通 `cargo check` 不能替代测试目标检查。