swift-runtime-trap-fuzz
단위 테스트가 못 보는 Swift 런타임 트랩을 퍼징으로 찾는 방법과 안전한 산술 수정 패턴입니다.
어떤 문제를 푸나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
swiftswiftuiiosfuzzingcrashinteger-overflowtestingclaude-skills
2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.