Настройка SwiftLint для проверки стиля iOS-кода

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Настройка SwiftLint для проверки стиля iOS-кода
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Настройка SwiftLint для проверки стиля iOS-кода

SwiftLint — статический анализатор Swift-кода от Realm. Проверяет соблюдение Swift API Design Guidelines и кастомных правил команды. На проекте с 5+ разработчиками без SwiftLint через три месяца часть кода будет с trailing whitespace, другая — с force_cast и force_unwrapping разбросанными где попало, а ещё часть — с функциями по 200 строк.

Установка и базовая конфигурация

Через Swift Package Manager (предпочтительно для команд — версия фиксируется):

// Package.swift или через Xcode → Add Package Dependencies
.package(url: "https://github.com/realm/SwiftLint.git", from: "0.57.0")

Запуск в Build Phase:

# Build Phase → Run Script
if which swiftlint > /dev/null; then
  swiftlint
else
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

Файл .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

Autocorrect в CI

SwiftLint умеет автоматически исправлять часть нарушений:

swiftlint --fix --format

В CI это используется как отдельный шаг: исправляет, коммитит изменения обратно в ветку. Но обычно надёжнее — запускать --fix локально через pre-commit hook.

Pre-commit hook

#!/bin/bash
# .git/hooks/pre-commit

git diff --cached --name-only --diff-filter=ACM | grep "\.swift$" | while read FILE; do
  swiftlint lint --path "$FILE" --quiet
  if [ $? -ne 0 ]; then
    echo "SwiftLint failed for $FILE"
    exit 1
  fi
done

Или через lefthook / pre-commit framework — удобнее для управления в команде.

Интеграция в CI

- name: Run SwiftLint
  run: |
    swiftlint lint \
      --reporter github-actions-logging \
      --strict

--strict превращает warnings в ошибки. --reporter github-actions-logging выводит нарушения в формате GitHub PR Annotations — они отображаются прямо на строках кода в PR Review.

Срок: 1 день. Стоимость рассчитывается индивидуально.