mcpField
U
urlsession-code-review

urlsession-code-review

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

关于 urlsession-code-review

面向 Swift 网络代码的审查技能,聚焦 URLSession。它按顺序检查响应验证、会话生命周期、配置、传输与安全,并要求报告前满足证据门槛。

主要功能

  1. 01URLSession 审查清单
  2. 02HTTP 与传输错误检查
  3. 03会话生命周期和资源检查
  4. 04后台传输检查
  5. 05带顺序门槛的安全检查

适用场景

  1. 01审查 Swift 网络代码变更
  2. 02检查 HTTP 状态与错误处理
  3. 03审计后台任务和文件传输
  4. 04准备带文件行号的审查结论

安装

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

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

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

包含的文件

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

references/
async-networking.md
caching.md
error-handling.md
request-building.md

详细介绍

URLSession 代码审查

快速参考

主题参考资料
Async/Awaitasync-networking.md
请求request-building.md
错误error-handling.md
缓存caching.md

审查清单

响应验证
  • 验证 HTTP 状态码 — URLSession 不会因 404/500 抛出错误
  • 检查状态码前,将响应转换为 HTTPURLResponse
  • 同时处理传输错误(URLError)和 HTTP 错误
内存与资源
  • 移动或删除下载的文件(异步 API 不会自动删除)
  • 使用代理的会话调用 finishTasksAndInvalidate()
  • 长时间运行的任务使用 [weak self]
  • 在适当情况下取消已存储的 Task 引用
配置
  • 设置 timeoutIntervalForResource(默认值为 7 天!)
  • 为 URLCache 设置足够的容量(默认 512KB 太小)
  • 复用会话以进行连接池管理
后台会话
  • 使用唯一标识符(尤其是使用 App 扩展时)
  • 使用基于文件的上传(而非基于数据的上传)
  • 使用代理方法(而非完成处理器)
安全
  • 不硬编码机密信息(使用 Keychain)
  • 清理标头值,防止 CRLF 注入
  • 通过 URLComponents 设置查询参数(而非字符串拼接)

硬性门槛(报告发现前)

按顺序完成。前一个门槛未通过时,不要继续。

  1. 范围 — 通过条件: 至少指出一个正在审查的文件,其中 URLSession、URLRequest、HTTPURLResponse / URLResponse、URLCache 或 URLError 出现在网络请求路径中。如果均不适用,请停止并说明“超出范围”。
  2. HTTP 与传输 — 通过条件: 在指出缺少 HTTP 状态处理或“将 404 当作成功”之前,引用接收 response 的 completion、async 或 for await 路径的 文件:行号,并说明是否将响应转换为 HTTPURLResponse、是否检查 statusCode(或引用执行这些操作的辅助函数)。如果看不到处理程序,请说明 未知 并索要相关代码,不要臆断。
  3. 会话生命周期 — 通过条件: 对于带代理的自定义 URLSession,引用 finishTasksAndInvalidate() 或所依据的文档化长期运行/单例模式;如果发现依赖配置,则说明使用的是 .shared。如果只有临时的一次性 URLSession.shared 请求,且不存在代理问题,则跳过。
  4. 后台或文件传输(如适用) — 通过条件: 如果出现 URLSessionConfiguration.background、downloadTask 或限定于 App 扩展的会话,发现项必须按要求引用标识符唯一性、代理与完成处理器的用法,或文件 URL。如果这些 API 均未出现,请标记为 N/A 并继续。
  5. 严重程度与清单 — 通过条件: 每个 Critical 项都包含 文件:行号,并指出违反的 审查清单 小节(例如“响应验证”“后台会话”)。严重程度较低的项目仍须指出其依据所在的文件。

输出格式

### Critical
1. [FILE:LINE] Missing HTTP status validation
   - Issue: 404/500 responses not treated as errors
   - Fix: Check `httpResponse.statusCode` is 200-299

评论

支持 Markdown