Skip to content

fix: 保留 iOS 主入口别名类型并校验 CocoaPods 锁文件 - #111

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

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

Conversation

@kairowan

Copy link
Copy Markdown
Owner

来源

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

修复内容

P1 主入口工程别名规范化后丢失类型

  • 工程类型改为按原始入口扩展名识别,再对规范化后的实际路径执行源码根和 bundle 校验
  • Alias.xcodeproj -> bundle-no-extension 不再因为规范化目标无扩展名而跳过预检
  • shellsmith_check_ios 现在把原始入口路径传给 CLI,主入口别名可直接检查;保护配置继续把原始配置交给 CLI
  • 未知入口类型不再静默放行,返回明确的 .xcodeproj/.xcworkspace 错误

P2 CocoaPods 锁文件外链未校验

  • 按 CLI cocoapods_checks 的实际读取路径校验:
    • Podfile / podfile
    • Podfile.lock
    • Pods/Manifest.lock
    • Pods/Pods.xcodeproj/project.pbxproj
  • 只有 CLI 实际判定使用 CocoaPods 时才校验这些路径,保留原有 Pods 目录跳过规则,不递归扫描整个 Pods
  • 锁文件符号链接指向允许目录外时,直接检查和保护预检都在 MCP 边界拒绝

验证

  • cargo fmt --all --check
  • 全量 clippy -D warnings
  • cargo test -p shellsmith-mcp:3 个单元测试 + 38 个集成测试通过
  • 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 第六轮探针:
    • 主入口别名内部 project.pbxproj 外链被 check/protect 拒绝
    • 移除外链后同一别名 check/protect 成功
    • Podfile.lock -> 外部文件 与 Pods/Manifest.lock -> 外部文件 均被拒绝
    • 两个锁文件恢复为允许目录内普通文件后,CocoaPods 检查为 ready
    • 更早的路径、compat、JSON 报告等回归继续通过

未实机验证

  • 未新增 Windows、APK 安装启动、真实 Xcode Archive 或 16KB 运行验证

- 工程类型按原始入口扩展名识别,不再因规范化目标无扩展名而跳过预检
- 直接检查使用原始入口路径调用 CLI,主入口别名可正常工作
- CocoaPods Podfile/Podfile.lock/Pods/Manifest.lock 等实际读取路径纳入允许目录校验
- 保留 Podfile 缺失时的缓存目录跳过语义,不递归扫描 Pods
- 增加主入口别名与 CocoaPods 锁文件外链回归测试
@kairowan
kairowan merged commit 9ff6f3b 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