全面的 iOS/SwiftUI 代码审查,支持可选的并行代理。
iOS 代码审查 : 参数: 并行 : 如果代理支持子代理, 请在每个技术区域发送一个专门的子代理是一项面向实际任务的技能,主要用于Path: 目标目录( 默认: 当前的工作目录).;Hard guards。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
--parallel:若代理支持子代理,则为每个技术领域分发一个专用子代理在输出中撰写 Issues 之前,须按顺序完成以下全部步骤(允许作用域为空;严禁编造问题)。
.swift 文件路径(来自第 1 步或用户指定路径)。通过条件:该文件列表已记录于工作笔记中 或 单独一行写明:No Swift files in scope —— 此时立即终止,不报告任何 Issues。.swiftlint.yml 或 .swiftlint.yaml,需在单行中注明。 通过条件:当配置存在且 swiftlint 执行成功时,你不得对 SwiftLint 已能覆盖的某行代码重复报告风格类问题。Protocol applied; no issues。FILE:LINE 处的完整源文件(含完整上下文,而非仅 diff 片段)。通过条件:Issue 描述须与该位置实际可观察到的代码行为完全一致。在 第 1–3 项准入条件均满足前,不得开始第 6 步(技能加载顺序仍为第 4–5 步)。
git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '.swift$'
关键要求:在标记任何风格类问题前,必须先运行 SwiftLint。
# 检查 SwiftLint 配置是否存在并执行
if [ -f ".swiftlint.yml" ] || [ -f ".swiftlint.yaml" ]; then
swiftlint lint --quiet
fi
规则:
# SwiftUI(始终伴随导入 SwiftUI 的 Swift 文件) grep -r "import SwiftUI" --include="*.swift" -l | head -3 # SwiftData grep -r "import SwiftData|@Model|@Query" --include="*.swift" -l | head -3 # Swift Testing grep -r "import Testing|@Test|#expect" --include="*.swift" -l | head -3 # Combine grep -r "import Combine|AnyPublisher|@Published" --include="*.swift" -l | head -3 # URLSession(显式异步模式) grep -r "URLSession.shared|.data(from:|.download(from:" --include="*.swift" -l | head -3 # CloudKit grep -r "import CloudKit|CKContainer|CKRecord" --include="*.swift" -l | head -3 # WidgetKit grep -r "import WidgetKit|TimelineProvider|WidgetFamily" --include="*.swift" -l | head -3 # App Intents grep -r "import AppIntents|@AppIntent|AppEntity" --include="*.swift" -l | head -3 # HealthKit grep -r "import HealthKit|HKHealthStore|HKQuery" --include="*.swift" -l | head -3 # WatchKit grep -r "import WatchKit|WKExtension|WKInterfaceController" --include="*.swift" -l | head -3 # 动画(超出基础 withAnimation 的用法) grep -r "PhaseAnimator|KeyframeAnimator|matchedGeometryEffect|navigationTransition|scrollTransition|CABasicAnimation|CASpringAnimation|CAKeyframeAnimation|UIViewPropertyAnimator|UIDynamicAnimator|.symbolEffect|.contentTransition|CustomAnimation|MeshGradient" --include="*.swift" -l | head -3
加载 review-verification-protocol 技能,并在整个审查过程中持续参考其检查清单。
加载下方所有适用的技能(请阅读其 SKILL.md 文件)。
必须始终加载:
根据检测结果条件性加载:
| 触发条件 | 技能 |
|---|---|
| 检测到 SwiftData | swiftdata-code-review |
| 检测到 Swift Testing | swift-testing-code-review |
| 检测到 Combine | combine-code-review |
| 检测到 URLSession | urlsession-code-review |
| 检测到 CloudKit | cloudkit-code-review |
| 检测到 WidgetKit | widgetkit-code-review |
| 检测到 App Intents | app-intents-code-review |
| 检测到 HealthKit | healthkit-code-review |
| 检测到 WatchKit | watchos-code-review |
| 检测到动画代码 | ios-animation-code-review |
若代理支持子代理(且启用了 --parallel 参数),则并行分发一个子代理处理每个技术领域;否则按顺序串行执行。两种方式产出完全相同的最终结果——即统一汇总的发现项。
串行模式(默认):
并行模式(如代理支持,通过 --parallel 启用):
在报告任一问题前,请完成以下验证:
你必须在一次审查中报告所有类别(风格、逻辑、类型、测试、安全、性能)的全部问题。不得将问题留待后续轮次处理。
提交发现前,请自问:
若任一问题答案为“是”,请立即将这些预期中的下游问题纳入本次审查报告,以便作者一次性解决全部事项。
对既有代码的修复应依其真实严重程度标注,不受代码修改量影响。
但对 diff 前完全不存在的净新增代码,必须归类为 Informational 级别:
此类建议供作者在后续工作中酌情考虑,不构成审查阻塞项。
若本次为修复后的复审:
## Review Summary [1–2 句概括性概述] ## Issues ### Critical (Blocking) 1. [FILE:LINE] ISSUE_TITLE - Issue: 问题描述(具体哪里出错) - Why: 此问题为何重要(崩溃、数据丢失、安全风险、竞态条件等) - Fix: 具体推荐修复方案 ### Major (Should Fix) 2. [FILE:LINE] ISSUE_TITLE - Issue: ... - Why: ... - Fix: ... ### Minor (Nice to Have) N. [FILE:LINE] ISSUE_TITLE - Issue: ... - Why: ... - Fix: ... ### Informational (For Awareness) N. [FILE:LINE] SUGGESTION_TITLE - Suggestion: ... - Rationale: ... ## Good Patterns - [FILE:LINE] 模式说明(请保留此项) ## Verdict Ready: Yes | No | With fixes 1-N(仅限 Critical/Major;Minor 项可接受) Rationale: [1–2 句说明]
修复应用后,运行以下命令:
# Swift 构建与检查 swift build swiftlint lint --quiet # 若存在测试,运行之 swift test
所有检查均须通过方可批准。
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章