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. 01Swift 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 の1行を記して、その時点で指摘事項なしとして終了すること。
  2. Swift Testing の使用確認: Swift Testing のコードとして扱う各パスについて、そのファイルに import Testing または @Test / #expect / #require / @Suite があることを確認します(ファイルを開くか検索してください)。合格条件: レビューで指摘する各ファイルに少なくとも1つ一致する項目があること、または1行の理由(例:XCTest のみ)を添えて、そのファイルを Swift Testing のレビュー対象から除外すること。
  3. 証拠とプロトコル: 問題を指摘する前に、review-verification-protocol を読み込みます。合格条件: 各指摘事項が同スキルの根拠ルールを満たしていること、また Review Checklist の項目への違反には [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:) でテストしている
  • 完了ハンドラーには confirmation ではなく withCheckedContinuation を使用している
  • .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 で誤ってテストしていませんか?

コメント