Skip to content

fix: 对齐 iOS 工程发现的深度与跳过规则 - #110

Merged
kairowan merged 1 commit into
mainfrom
fix/mcp-sixth-audit-20261113
Nov 13, 2026
Merged

kairowan merged 1 commit into
mainfrom
fix/mcp-sixth-audit-20261113

Conversation

@kairowan

Copy link
Copy Markdown
Owner

来源

修复 2026-11-13/MCP第五轮复审/复审报告.md 中的 2 项问题。

修复内容

P1 visited 未考虑到达深度

  • 工程发现遍历直接沿用 CLI 的有界深度语义,移除与深度无关的 visited 去重
  • 同一目录通过深路径先到、浅路径后到时,浅路径仍会继续扫描,不再漏掉更深子目录
  • bundle 校验保留 visited,但改为记录“最浅到达深度”;只有本次深度不更浅时才跳过,同时保留循环保护

P2 目录链接未应用跳过规则

  • .git、Pods、.build、DerivedData 的跳过规则统一在普通目录和目录链接分流前应用
  • 指向外部缓存的 DerivedData 链接不再被误报越界
  • 仍保留对真正会被读取的工程、目录链接及内部文件的允许目录校验

验证

  • cargo fmt --all --check
  • 全量 clippy -D warnings
  • cargo test -p shellsmith-mcp:3 个单元测试 + 37 个集成测试通过
  • cargo test -p shield-cli:22 passed
  • cargo test -p shield-core:263 passed, 8 ignored
  • python3 -m unittest discover -s scripts/tests:48 passed
  • 真实 CLI 第五轮探针:
    • 实际目录顺序为 LinkB(深路径先到)→ LinkA(浅路径后到)时,直接检查和保护 dry-run 均拒绝外部 project.pbxproj
    • 移除深路径后浅路径仍拒绝
    • DerivedData -> 外部缓存目录 时直接 CLI 和 MCP 均成功返回正常工程信息
    • 普通目录 DerivedData 对照继续成功
    • 前几轮源码根目录、目录链接、别名、无关失效链接、compat 和完整 JSON 报告回归均通过

未实机验证

  • 本次改动仅涉及 MCP 的 iOS 路径遍历,不修改 Android 运行时或 16KB 相关代码,因此没有新增 16KB 设备验证
  • 未新增 Windows 实机、APK 安装启动或真实 Xcode Archive 验证

- 移除工程发现遍历中与深度无关的 visited 去重,避免浅路径漏检
- bundle 校验的 visited 记录最浅到达深度,保持循环保护同时覆盖浅路径
- 普通目录与目录链接统一应用 .git/Pods/.build/DerivedData 跳过规则
- 增加深路径先到、共享目录多路径和 DerivedData 链接回归测试
@kairowan
kairowan merged commit f2b8a26 into main Nov 13, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant