mcpField
S
swift-testing-code-review

swift-testing-code-review

github.com/existential-birds测试与质量85191 次安装11 周前更新
代码仓库

关于 swift-testing-code-review

面向代码审查者的 Swift Testing 审查技能,要求按顺序确认审查范围和代码依据,再记录问题。它提供检查清单,并链接到常见测试模式的专题参考。

主要功能

  1. 01按序检查范围与代码特征
  2. 02审查问题的证据要求
  3. 03断言与测试组织检查清单
  4. 04异步和参数化测试参考

适用场景

  1. 01审查 Swift Testing 断言
  2. 02检查参数化测试行为
  3. 03评估异步测试模式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/existential-birds/beagle --skill swift-testing-code-review

安装后在 Claude Code 中输入/swift-testing-code-review确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
async-testing.md
expect-macro.md
organization.md
parameterized.md

详细介绍

Swift Testing 代码审查

硬性门槛

记录 Swift Testing 审查发现前,必须按顺序完成。搭配 review-verification-protocol 使用,以遵循通用审查规则。

  1. **范围:**你有一份明确的待审 .swift 路径列表(或用户指定的单个文件)。**通过:**在工作笔记中记录这些路径,或写一行:No Swift files in scope——然后停止,不报告任何发现。
  2. **Swift Testing 表面特征:**对于每个被视为 Swift Testing 代码的路径,确认该文件中出现 import Testing 或 @Test / #expect / #require / @Suite(打开文件或搜索)。**通过:**每个提出审查意见的文件至少匹配一项;或者以一行说明原因(例如仅使用 XCTest),并将该文件排除在 Swift Testing 审查之外。
  3. **证据与协议:**提出任何问题前,先加载 review-verification-protocol。**通过:**每项发现都符合该技能的锚点规则;任何违反审查清单的项目都引用 [FILE:LINE] 证据。如果报告的问题数为零,请在审查摘要中写明 Protocol applied; no Swift Testing issues(或等效表述)。

快速参考

问题类型参考资料
#expect 与 #require、表达式捕获、错误测试references/expect-macro.md
带参数的 @Test、特征、zip() 陷阱references/parameterized.md
confirmation、异步序列、完成处理程序references/async-testing.md
@Suite、标签、并行执行、.serializedreferences/organization.md

审查清单

  • 直接将表达式嵌入 #expect(而非预先计算布尔值)
  • #require 仅用于前置条件,#expect 用于断言
  • 错误测试检查具体类型(而非通用的 (any Error).self)
  • 成对的参数化测试使用 zip()(而非笛卡尔积)
  • 参数化测试的预期值不包含对实现逻辑的重复模拟
  • 使用 confirmation(expectedCount:) 测试异步序列
  • 完成处理程序使用 withCheckedContinuation,而非 confirmation
  • 仅在必要时(共享资源)应用 .serialized
  • 若互斥的同级套件均已序列化,则将它们嵌套在父级套件下
  • 不假定不同 @Test 函数之间状态会持久保留
  • 禁用的测试附有说明和错误链接

何时加载参考资料

  • 审查 #expect 或 #require 的用法 -> expect-macro.md
  • 审查带参数或特征的 @Test -> parameterized.md
  • 审查 confirmation 或异步测试 -> async-testing.md
  • 审查 @Suite 或测试组织方式 -> organization.md

审查问题

  1. #expect 中预先计算的布尔值是否会丢失诊断上下文?
  2. #require 是否会过早停止测试,而不是揭示所有失败?
  3. 多参数化测试是否会意外产生笛卡尔积?
  4. 数组长度不等时,zip() 是否可能静默丢弃测试用例?
  5. 是否错误地使用 confirmation 测试完成处理程序?

评论

支持 Markdown