맥·모바일 개발Mac & mobile

swift-runtime-trap-fuzz

단위 테스트가 못 보는 Swift 런타임 트랩을 퍼징으로 찾는 방법과 안전한 산술 수정 패턴입니다.

GitHub에서 보기View on GitHub

어떤 문제를 푸나The problem

Swift에서 Int 오버플로, Int(Double.nan), 범위를 벗어난 변환, 배열 인덱스 오류는 프로세스를 죽이는 트랩입니다. 표로 적어 둔 기대값 테스트는 적어 둔 답만 검사하므로 사용자가 두 번 탭해서 앱이 죽는 입력은 볼 수 없습니다.

고정 시드의 LCG로 경계값을 자주 뽑아 공개 엔진 진입점을 두드리는 퍼징 레시피와 정확도를 유지하는 수정 패턴을 정리했습니다. 시작용 퍼즈 골격 파일도 들어 있습니다.

이런 분께 맞습니다Who it is for

사용자 입력으로 산술이나 Double에서 Int 변환을 하는 SwiftUI 앱을 만드는 개발자.

무엇을 하나What it does

  • 고정 시드로 실패를 재현하고, 0, 1, -1, 상한, 상한+1, 아주 큰 값, NaN, 무한대를 자주 뽑습니다.
  • multipliedReportingOverflow 등으로 넘치면 정밀도를 낮춰 다시 시도하고, 한 방향으로만 저하시킵니다.
  • Double(Int.max)는 2^63으로 올림되므로 x < Double(Int.max)는 안전하고 <=가 트랩입니다. Int(exactly:)가 더 깔끔합니다.
  • references/fuzz-skeleton.swift가 출발점 하니스입니다.

알아둘 한계Limits

  • 레시피와 골격일 뿐 패키지된 라이브러리가 아닙니다. 하니스는 앱의 진입점에 맞게 고쳐 써야 합니다.

받아서 쓰기Get it

# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/swift-runtime-trap-fuzz.git

# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/swift-runtime-trap-fuzz.git ~/.claude/skills/swift-trap-fuzz

정보Info

분류Category
맥·모바일 개발Mac & mobile
형태Type
지식 문서Knowledge pack
라이선스License
MIT
필요한 것Requires
없음 (SKILL.md를 읽기만 하면 됩니다)
저장소Repository
swift-runtime-trap-fuzz
토픽Topics
swift swiftui ios fuzzing crash integer-overflow testing claude-skills

2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.

공유하기Share

문자Message 네이버 블로그Naver Blog X Facebook