核心用法
Combine Code Review 是专为 Apple 响应式编程框架 Combine 设计的代码审查技能。它通过结构化的审查流程,帮助开发者识别订阅生命周期管理、操作符链式组合、线程调度及错误处理等关键环节的潜在问题。
该技能采用分层门控机制执行审查:首先验证代码范围是否涉及 Combine API,随后逐一检查订阅保留策略、循环引用风险、主线程安全等硬性条件,确保审查的系统性与完整性。
显著优点
1. 内存安全导向:针对 Combine 最常见的陷阱——AnyCancellable 生命周期管理,提供明确的检查清单,包括 [weak self] 规范、assign(to:on:) 禁用规则及存储位置验证。
2. 操作符使用指导:区分 flatMap 与 map + switchToLatest 的适用场景,避免搜索/自动补全功能中常见的逻辑错误。
3. 错误处理完整性:强制要求 tryMap 后接 mapError 恢复类型,以及 flatMap 内部的错误处理策略,防止主链断裂。
4. 线程安全显式化:要求标注 receive(on: DispatchQueue.main) 或 @MainActor,杜绝 UI 更新时的线程隐患。
5. 可验证的输出标准:高严重性问题必须附带 file:line 及违反的具体检查项,降低审查主观性。
潜在缺点与局限性
- 静态分析依赖:需开发者提供完整代码上下文,对 "unknown" 状态(无法判断存储位置时)要求人工补充,无法全自动推断。
- Combine 专属:不支持 RxSwift 等其他响应式框架,跨平台项目需额外工具。
- Swift 版本敏感:
assign(to: &$property)等语法需 iOS 14+,旧项目可能产生误报或建议不适用。
适合人群
- 采用 Combine 进行响应式编程的 iOS/macOS 开发团队
- 需要代码审查标准化流程的技术负责人
- 学习 Combine 最佳实践的中高级 Swift 开发者
常规风险
1. 误判安全为风险:当 [weak self] 模式被复杂嵌套遮蔽时,可能过度报告 "risk" 状态,增加人工复核负担。
2. 忽略业务逻辑错误:专注于框架使用正确性,不验证业务语义合理性(如错误的 combineLatest 组合对象)。
3. Future/Deferred 模式遗漏:虽提及 Future 需包裹 Deferred,但对自定义 Publisher 的实现审查深度有限。