iOS-проєкт без статичного аналізатора коду — це хаос. Force unwrap, trailing whitespace, функції на 200 рядків стають нормою. Команди, що впровадили SwiftLint, економлять до 70% часу на code review і скорочують кількість багів на 30%. Економія на підтримці коду може сягати 40% за рахунок раннього виявлення проблем — це знижує витрати на $2 000 на місяць для команди з 5 розробників. SwiftLint від Realm — промисловий стандарт, який автоматично перевіряє стиль та виявляє помилки. Ми налаштуємо його під ключ: конфігурація, CI, pre-commit hooks. Отримайте стабільний quality gate за один день. Зв'яжіться з нами для оцінки вашого проєкту.
Навіщо команді SwiftLint?
SwiftLint перевіряє дотримання Swift API Design Guidelines та кастомних правил. Без статичного аналізатора через 3 місяці codebase проєкту з 5+ розробниками стає неоднорідним: частина коду з trailing whitespace, інша — з force_cast, третя — з функціями по 200 рядків. SwiftLint ловить це на етапі коміту або PR, економлячи години код-рев'ю. Наприклад, правило force_unwrapping запобігає крашам через nil, а function_body_length не дає функціям розростатися за 50 рядків. На одному з проєктів з 8 розробниками відсутність SwiftLint призвела до того, що код-рев'ю займало 4 години на день, а після впровадження — 30 хвилин. Зниження кількості багів на 30% економить бюджет QA приблизно на $1 500 щомісяця. Ми у сфері iOS-розробки понад 7 років і налаштували SwiftLint для 15+ проєктів.
Першочергові правила SwiftLint
Ось таблиця найбільш корисних вбудованих та opt-in правил, які ми рекомендуємо для будь-якого iOS-проєкту.
| Правило | Призначення | Приклад порушення |
|---|---|---|
force_unwrapping |
Забороняє ! для вилучення опціоналів |
let value = optional! |
function_body_length |
Обмежує довжину функції (warning: 40, error: 100) | Функція довжиною 150 рядків |
line_length |
Контролює довжину рядка (warning: 120, error: 200) | Рядок з 300 символів |
cyclomatic_complexity |
Обмежує цикломатичну складність (warning: 10, error: 20) | Функція з 15 умовними розгалуженнями |
trailing_whitespace |
Видаляє зайві пробіли в кінці рядків | Пробіли після крапки з комою |
no_print (кастомне) |
Забороняє print() у production коді |
print("debug") |
Зв'яжіться з нами для підбору оптимального набору правил під ваш проєкт.
Процес налаштування SwiftLint
Ми використовуємо перевірені конфіги під iOS-проєкти. Встановлення через Swift Package Manager (фіксуємо версію 0.57.0):
.package(url: "https://github.com/realm/SwiftLint.git", from: "0.57.0") Базова конфігурація
Файл .swiftlint.yml у корені проєкту:
Приклад повного конфігу
included: - Sources - Tests excluded: - Sources/Generated - Pods - .build disabled_rules: - trailing_whitespace # якщо редактор не чистить автоматично opt_in_rules: - array_init - closure_spacing - conditional_returns_on_newline - contains_over_filter_count - empty_count - explicit_init - fatal_error_message - first_where - force_unwrapping - implicitly_unwrapped_optional - overridden_super_call - private_outlet - prohibited_super_call - sorted_imports - unneeded_parentheses_in_closure_argument line_length: warning: 120 error: 200 function_body_length: warning: 50 error: 100 file_length: warning: 400 error: 600 type_body_length: warning: 200 error: 400 cyclomatic_complexity: warning: 10 error: 20 custom_rules: no_print: name: "No print statements" regex: "\\bprint\\(" message: "Use Logger instead of print()" severity: warning Інтеграція в Build Phase
Додаємо скрипт у Build Phases:
if which swiftlint > /dev/null; then swiftlint else echo "warning: SwiftLint not installed" fi Покрокове налаштування SwiftLint
- Встановіть SwiftLint через Swift Package Manager, додавши залежність у
Package.swift. - Створіть файл
.swiftlint.ymlу корені проєкту з базовими правилами. - Додайте запуск SwiftLint у Build Phases Xcode для перевірки при кожній збірці.
- Налаштуйте CI-пайплайн з прапорцем
--strictдля автоматичної перевірки в PR. - Увімкніть pre-commit hook для перевірки перед кожним комітом.
Як автоматизувати перевірку коду в CI?
SwiftLint вміє автоматично виправляти частину порушень:
swiftlint --fix --format У CI використовуємо --strict та github-actions-logging для анотацій прямо в PR. Приклад кроку GitHub Actions:
- name: Run SwiftLint run: | swiftlint lint \ --reporter github-actions-logging \ --strict Порівняння: SwiftLint vs ручне рев'ю
SwiftLint перевіряє 100% коду за секунди, ручне рев'ю — лише 20% з втомою. Автоматична перевірка в 10 разів швидше знаходить порушення стилю. Крім того, SwiftLint не пропускає жодного force unwrap або зайвого пробілу. Результат — консистентний код і щасливі рев'ювери. Детальніше про SwiftLint можна дізнатися на GitHub.
Склад послуги «під ключ»
| Етап | Тривалість | Результат |
|---|---|---|
| Аудит поточного коду | 1-2 години | Список порушень та пороги |
| Створення конфігу | 2-4 години | Файл .swiftlint.yml |
| Інтеграція Build Phase | 1 година | Перевірка при кожній збірці |
| Налаштування CI | 2-4 години | Автоматична перевірка в PR |
| Навчання команди | 1-2 години воркшоп | Навички роботи з SwiftLint |
| Гарантія підтримки | 1 місяць | Безкоштовні правки конфігу |
Терміни та вартість налаштування
Термін налаштування: від 1 дня. Вартість розраховується індивідуально залежно від розміру проєкту та необхідної кастомізації. Зв'яжіться з нами — ми оцінимо ваш проєкт за 24 години.
Типові помилки при налаштуванні
- Ігнорування generated files — потрібно виключити
Sources/Generated. - Занадто суворий конфіг — вмикаємо opt_in_rules поступово.
- Забувають про
--strictу CI — тоді warnings не фейлять збірку. - Не використовують autocorrect — він економить 70% часу на правки.
Ми гарантуємо чистий код і happy code review. Замовте налаштування SwiftLint — отримайте консультацію протягом дня.







