Какие инструменты для соблюдения стиля кода (linting) используются в iOS-разработке?

Ответ

Стандартным инструментом для линтинга Swift-кода является SwiftLint. Он автоматически проверяет код на соответствие соглашениям о стиле и некоторым best practices.

Как это работает:

  1. SwiftLint анализирует исходный код на основе набора правил.
  2. Правила настраиваются через файл .swiftlint.yml в корне проекта.

Пример конфигурации .swiftlint.yml:

disabled_rules:
  - trailing_whitespace # Отключаем конкретные правила
  - force_cast

opt_in_rules:
  - empty_count # Включаем дополнительные правила

line_length: 120 # Настраиваем максимальную длину строки

identifier_name:
  min_length: 2 # Минимальная длина идентификатора
  max_length: 50 # Максимальная длина
  excluded: # Исключения (например, стандартные 'id', 'x', 'y')
    - id
    - x
    - y

Интеграция в процесс разработки:

  • Локально: Запуск вручную или через скрипт фазы сборки (Build Phase) в Xcode.
  • Pre-commit хуки (например, через Husky): Автоматический запуск перед коммитом, чтобы не допустить нарушения стиля в репозиторий.
  • CI/CD (GitHub Actions, Bitrise): Проверка в pipeline, падение сборки при нарушении критических правил.

Результат: Инструмент обеспечивает единообразие кода в команде, сокращает время на ревью и помогает избегать распространённых антипаттернов.

Ответ 18+ 🔞

А, слушай, про линтинг Swift-кода! Ну, тут без вариантов, царь и бог — это SwiftLint, ёпта. Эта мартышлюшка прогоняет твой код через сито правил и орёт, если ты написал какую-то хуйню, а не красивый Swift.

Как эта магия, блядь, работает:

  1. SwiftLint, как занудный архитектор, тыкает пальцем в каждую строчку, сверяя её с кучей правил.
  2. А правила эти ты сам и настраиваешь в файлике .swiftlint.yml, который кидаешь в корень проекта. Без него он будет орать на всё подряд, как сумасшедший.

Вот, смотри, как примерно этот конфиг выглядит, чтоб не охуеть с самого начала:

disabled_rules:
  - trailing_whitespace # Выключаем придирки насчёт пробелов в конце строки, ибо иногда похуй
  - force_cast # Иногда force_cast — это осознанное решение, а не грех

opt_in_rules:
  - empty_count # Включаем дополнительные приколюхи, которые по умолчанию выключены

line_length: 120 # Чтобы не писали строчки длиной в километр, но и не задыхались

identifier_name:
  min_length: 2 # Имя переменной из одной буквы — это пиздец, чувак
  max_length: 50 # А имя длиннее этого — уже рассказ, а не идентификатор
  excluded: # Список священных исключений, на которые забиваем хуй
    - id
    - x
    - y

А теперь, самое весёлое — куда эту хуйню прикрутить, чтобы жизнь мёдом не казалась:

  • Локально в Xcode: Можно впендюрить в Build Phase, чтобы он орал при каждой сборке. Или запускать ручками, когда чувствуешь, что накосячил.
  • Pre-commit хуки (типа Husky): Вот это, блядь, мощь! Настроил — и теперь ты не закоммитишь свою поеботу, пока SwiftLint её не одобрит. Волнение ебать, но эффективно.
  • CI/CD (типа GitHub Actions): Это уже для параноиков и больших команд. Пускай пайплайн ломается на сервере, если кто-то протащил кривой код. Пизда бородавчатая тому, кто сломал билд!

Итог, блядь: Инструмент делает так, чтобы код в команде выглядел так, будто его писал один человек, а не десять разных мудаков с уникальным видением красоты. Ревью проходит быстрее, и меньше шансов накосячить с какой-нибудь мелочью. В общем, вещь!