Swift Code Review 是一个专注于 Swift 代码审查的技能,旨在帮助开发者发现并发安全、错误处理、内存管理和常见错误方面的问题。它适用于审查 .swift 文件,特别是涉及 async/await 模式、actor、Sendable、@Observable 等现代 Swift 并发和状态管理特性的代码。
用途:该技能用于对 Swift 代码进行结构化审查,确保代码在并发安全、错误处理和内存管理等方面符合最佳实践。它强调在给出建议前建立语言和工具链上下文,避免基于不准确的版本假设提出建议。
主要能力:技能提供了一套完整的审查工作流,包括四个主要步骤:1)确定 Swift 工具链基线,如 Package.swift 中的 swift-tools-version、Xcode 中的 SWIFT_VERSION 等;2)阅读变更文件的完整封闭类型、函数、方法或属性,而不仅仅是 diff 片段;3)根据快速参考确定适用的审查清单行和参考文件;4)在报告前加载并遵循 review-verification-protocol,确保每个发现都满足硬性门禁。硬性门禁包括:在版本或 SDK 相关建议前记录 Swift 版本/模式;每个变更文件阅读完整封闭符号;列出检查清单区域或标记 N/A 并附上与 diff 相关的理由;对每个报告的问题完成验证协议。输出格式要求以 [FILE:LINE] ISSUE_TITLE 形式报告,并标注严重程度(Critical、Major、Minor、Informational),描述问题及其重要性。快速参考表将问题类型映射到参考文件:async/await、actors、Sendable、Task 对应 references/concurrency.md;@Observable、@ObservationIgnored、@Bindable 对应 references/observable.md;throws、Result、try?、typed throws 对应 references/error-handling.md;强制解包、保留环、命名对应 references/common-mistakes.md。审查清单包括:不对运行时数据(网络、用户输入、文件)使用强制解包;存储为属性的闭包使用 [weak self];委托属性为 weak;独立异步操作使用 async let 或 TaskGroup;长时间运行的任务检查 Task.isCancelled;actor 有可变状态需要保护(无状态 actor 除外);Sendable 类型真正线程安全(警惕 @unchecked);错误显式处理(无空 catch 块);自定义错误符合 LocalizedError 并提供描述性消息;嵌套 @Observable 对象也标记为 @Observable;@Bindable 用于与 Observable 对象的双向绑定。技能还提供了何时加载参考文件的指导:审查 async/await、actors 或 TaskGroups 时加载 concurrency.md;审查 @Observable 或 SwiftUI 状态时加载 observable.md;审查错误处理或 throws 时加载 error-handling.md;一般 Swift 审查时加载 common-mistakes.md。审查问题包括:可能并发运行的异步操作是否使用 async let?actor 状态是否可能在挂起点之间改变(重入 bug)?@unchecked Sendable 是否有实际同步支持?错误是否记录并呈现有帮助的上下文?任何闭包或委托是否可能创建保留环?
使用方式:该技能通过遵循审查工作流和硬性门禁来使用。用户需要按照顺序执行步骤,确保在给出建议前满足所有通过条件。输出报告时使用指定格式。
适用场景:适用于 Swift 代码审查,特别是涉及并发、错误处理、内存管理和 SwiftUI 状态管理的代码。
限制:该技能要求审查者具备 Swift 语言和工具链知识,并且需要访问完整的代码上下文,而不仅仅是 diff。对于单文件审查,需要明确说明限制。技能本身不提供自动修复功能,仅提供审查指导。