SuperAPI AI 工具集

swiftui-code-review

编程与开发

查看项目

更新于 10-15 14:28

技能介绍

SwiftUI Code Review 是一个面向 SwiftUI 代码的审查技能,主要用于检查视图组合、状态管理、性能和无障碍实现。当需要审查包含 SwiftUI 视图的 .swift 文件、属性包装器使用等场景时可以使用。

用途 该技能用于对 SwiftUI 代码进行结构化审查,覆盖视图组合、状态管理、性能与无障碍四个方向。

主要能力 技能提供一份快速参考表,将问题类型映射到对应参考文档:

  • 视图提取、修饰符、body 复杂度:references/view-composition.md
  • @State、@Binding、@Observable、@Bindable:references/state-management.md
  • LazyStacks、AnyView、ForEach、identity:references/performance.md
  • VoiceOver、Dynamic Type、标签、traits:references/accessibility.md

审查工作流门禁(需按顺序完成,不得跳过):

  1. 锚定范围:通过条件为每个被审查文件都以仓库相对路径的 .swift 路径列出,或审查明确说明“未打开任何文件 / 不适用”并给出原因。
  2. 先参考后批评:通过条件为对于任何非平凡的 body、修饰符链或包装器归属问题,已打开上表中匹配的 references/*.md 行,或说明“不需要”并给出一行原因。
  3. 证据绑定发现:通过条件为每个实质性问题在给出建议前包含 [FILE:LINE](或有界行范围);符号或代码片段可以补充但不能替代位置锚点;不得仅凭“典型 SwiftUI”而不指向本代码得出结论。

审查清单

  • 视图 body 少于 10 个组合元素(提取子视图)
  • 修饰符顺序正确(padding 在 background 之前)
  • 视图自有对象使用 @StateObject,传入对象使用 @ObservedObject
  • 对 @Observable 的双向绑定使用 @Bindable(iOS 17+)
  • 50 项以上的滚动列表使用 LazyVStack/LazyHStack
  • 不使用 AnyView(改用 @ViewBuilder 或泛型)
  • ForEach 使用稳定的 Identifiable ID(而非数组索引)
  • 所有图片/图标都有 accessibilityLabel
  • 自定义控件有 accessibilityAddTraits(.isButton)
  • 支持 Dynamic Type(不使用固定字号)
  • 异步工作使用 .task 修饰符(而非 onAppear + Task)

何时加载参考文档

  • 复杂视图 body 或修饰符链 -> view-composition.md
  • 属性包装器使用(@State、@Observable)-> state-management.md
  • 列表性能或视图 identity 问题 -> performance.md
  • VoiceOver 或无障碍实现 -> accessibility.md

审查问题

  • 这个庞大的视图 body 能否拆分为更小、可复用的 View?
  • 修饰符顺序是否有意为之?(padding -> background -> frame)
  • @StateObject/@ObservedObject 的使用是否符合归属关系?
  • LazyVStack 能否改善这个 ScrollView 的性能?
  • VoiceOver 用户能否理解这个界面?

适用场景 适用于对 SwiftUI 视图代码进行代码审查,尤其是涉及视图拆分、状态归属、列表性能与无障碍标签等问题的场景。

限制 该技能的具体安装方式、运行环境要求、收费与价格信息暂未提供。