TGViewer
YDC — Pizza Powered iOS YDC — Pizza Powered iOS @youngdacode · 242 subscribers
Post #25 168
😁 Всем привет 👋
Хочу рассказать про крутой инструмент - Reaper и поделиться опытом его интеграции 🚀

🤔 В чём проблема?

Большой проект может обрастать тоннами неиспользуемого кода: устаревшие фичи, классы после рефакторинга, забытые методы. Как итог:

🐌 Медленная сборка: компилятор тратит силы впустую
🥵 Сложный рефакторинг: страшно удалять, «а вдруг где-то используется?»
😵‍💫 Раздутый размер приложения

⚔️ Reaper vs. Статический анализ (Periphery)

Статические анализаторы вроде Periphery — это отлично, но есть нюансы:

🐢 Долгие прогоны на CI, которые сложно встроить в каждый PR
🫣 Слепые зоны: бессильны против кода, управляемого извне (например, Remote Config)

Reaper подходит к вопросу иначе - это runtime-анализ. Он видит, что реально используется в работе приложения 🕵️

🔍 Что под капотом Reaper?

Reaper работает на уровне Mach-O файлов и рантайма:

- Для Obj-C: отслеживает момент инициализации объекта в рантайме (бит RW_INITIALIZED)
- Для Swift: всё намного сложнее. Вкратце - анализирует секцию __swift5_types, проверяет kind объекта, отсутствие resilient superclass, отсутсвие generic и тд. Полную логику проверки мы рассмотрим отдельно в будущем 💫

🛠 Как внедрить?

Интеграция состоит из двух частей:

🖥️ Бекенд:

Есть референсный пример от разработчиков, от которого можно отталкиваться, а лучше написать полностью свое решение.

Базовый функционал:
- Ручка для агрегации известных типов 📋
- Ручка для отправки отчёта с устройств 📨
- Дашборд со статистикой 📊

📱 Мобилка:

1️⃣ Один раз на CI запускаете скрипт, который выцепляет все отслеживаемые объекты в вашем коде (делается на этапе сборки 1 раз на релиз, но можно придумать и иную политику)

2️⃣ Интегрируем Reaper SDK (есть в SPM/CocoaPods) и инициализируем при запуске приложения

3️⃣ При уходе приложения в background отправляем на ваш сервер «отчёт» со списком использованных сущностей за эту сессию

💎 Вывод

Reaper — это не замена статическому анализу, а мощное дополнение к нему. Он даёт данные с реальных устройств ваших пользователей, раскрывая слепые зоны статического анализа ✨

У инструмента есть потенциал, мы продолжим его обкатывать и поделимся результатом ⚙️

📎 Ссылки:
➡️ Репозиторий Reaper
➡️ Пример Backend
➡️ Репозиторий Periphery

#M #iOS #TeamWork #Reaper #Periphery

👏
GitHub GitHub - getsentry/Reaper-iOS: A tool for detecting unused code A tool for detecting unused code. Contribute to getsentry/Reaper-iOS development by creating an account on GitHub.
  • 👍 2
More from @youngdacode
  1. Mar 10, 2026😄 Статья CoordinatorKit 2.0: Production-Ready SwiftUI Navigation это пример честного разб…
  2. Mar 4, 2026☝️ 🚀 Как MCP-аналитика помогает AI-агентам кодирования принимать более «осознанные» решен…
  3. Feb 16, 2026☝️ В прошлом посте мы говорили про клиент-серверное взаимодействие: API, REST, запрос-отве…
  4. Feb 15, 2026☝️ 📦 Размер приложения — это не просто цифра в App Store Размер приложения напрямую влияе…
  5. Feb 13, 2026😏 Разберём разницу между some View и AnyView в SwiftUI. Тема не новая, но споры о правиль…
  6. Feb 9, 2026Вечернее-занимательное чтение. Пишет iOS разработчик с опытом, обзор на пост от iOS разраб…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →