Swift-инструментарий: IDE, линтеры и форматтеры для профи

Онлайн-тренажер Python для начинающих

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

Начать курс

Введение: Почему инструменты решают всё

Если вы когда-нибудь писали код на Swift без использования линтеров или форматтеров, вы наверняка сталкивались с ситуацией, когда через месяц возвращаетесь к своему проекту и не можете понять, что там написано. "Кто автор этого безобразия?" — спрашиваете вы себя, забыв, что писали этот код лично. Знакомо?

Разработка на Swift — это не только про синтаксис и фреймворки. Это ещё и про экосистему инструментов, которые превращают хаос в порядок, а простого кодера — в профессионала. В этой статье мы разберём три ключевых слоя инструментария: IDE (среда разработки), линтеры (анализаторы кода) и форматтеры (автоматические укладчики стиля). Вы узнаете, как выбрать правильную IDE, настроить SwiftLint как злого (но справедливого) ревьюера и приручить SwiftFormat, чтобы код выглядел так, будто его писал один человек — даже если над проектом работает целая команда.

Поехали!

1. IDE для Swift: Выбираем боевую платформу

Начнём с главного — среда разработки. Без неё вы как хирург без скальпеля. В мире Swift есть три основных игрока: Xcode, AppCode (RIP?) и VS Code с расширениями. Давайте разберём каждого.

Xcode — стандарт де-факто

Xcode — это родная IDE от Apple. Если вы пишете под iOS/macOS, избежать её не получится. Она даёт: Interface Builder, симуляторы, дебаггер, интеграцию с Git и, конечно, компилятор Swift.

Плюсы: всё в одном флаконе, поддержка новых фич Swift в день выхода, отличная работа с Core Data и Metal.

Минусы: интерфейс иногда подтормаживает, автодополнение не всегда умное, а поиск по проекту — это отдельный вид боли. Но привыкаешь.

AppCode — альтернатива от JetBrains

Когда-то AppCode был серьёзным конкурентом. Он предлагал умный рефакторинг, быстрый поиск и приятный интерфейс. Но в 2022 году JetBrains объявила, что прекращает активную разработку. Однако если у вас уже есть лицензия — он всё ещё работает и может быть полезен для больших проектов.

VS Code — лёгкий и гибкий

Для тех, кто не хочет тащить Xcode ради одного скрипта на Swift. VS Code с расширением Swift for Visual Studio Code (от сообщества Swift) даёт подсветку, автодополнение и даже дебаггинг. Идеально для серверного Swift (Vapor) или небольших утилит.

Пример настройки: установите расширение, откройте папку с проектом и используйте команду Swift: Build.

// Простой скрипт для проверки работы в VS Code
import Foundation

let greeting = "Hello, Swift developer!"
print(greeting)

Итог по IDE: для iOS-разработки — Xcode. Для серверного Swift или быстрых экспериментов — VS Code. AppCode — для ностальгии.

2. Линтеры: SwiftLint — ваш цифровой ревьюер

Теперь перейдём к линтерам. Линтер — это инструмент, который проверяет ваш код на соответствие правилам стиля и потенциальные ошибки. В мире Swift король — SwiftLint.

Что такое SwiftLint?

SwiftLint — это open-source инструмент, который анализирует ваш Swift-код и сообщает о нарушениях. Он основан на правилах, описанных в официальном Swift Style Guide от Ray Wenderlich, но вы можете кастомизировать его под себя.

Установка и настройка

Установить SwiftLint проще всего через Homebrew:

brew install swiftlint

Затем создайте файл .swiftlint.yml в корне проекта. Вот пример минимальной конфигурации:

# .swiftlint.yml
disabled_rules:
  - trailing_whitespace
  - force_cast
opt_in_rules:
  - empty_count
  - contains_over_first_not_nil
included:
  - Sources
excluded:
  - Carthage
  - Pods

Пример работы

Допустим, вы написали такой код:

let array = [1,2,3]
if array.count == 0 {
    print("Empty")
}

SwiftLint выдаст предупреждение: Empty count: prefer using isEmpty over count == 0. Исправляем:

let array = [1,2,3]
if array.isEmpty {
    print("Empty")
}

Красиво и по стандартам. SwiftLint также может автоматически исправлять некоторые ошибки (через флаг --fix).

Интеграция с Xcode

Добавьте SwiftLint в Build Phases вашего проекта:

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

Теперь каждое предупреждение будет отображаться прямо в Xcode.

3. Форматтеры: SwiftFormat и не только

Если линтер указывает на проблемы, то форматтер исправляет их автоматически. Самый популярный форматтер для Swift — SwiftFormat.

SwiftFormat — автоматический порядок

SwiftFormat переформатирует ваш код в соответствии с заданными правилами. Он умеет расставлять пробелы, переносы, менять порядок импортов и даже преобразовывать старый синтаксис в новый.

Установка и использование

brew install swiftformat

Запуск в консоли:

swiftformat . --swiftversion 5.9

Пример: до форматирования:

func  add(a:Int,b:Int)->Int{return a+b}

После:

func add(a: Int, b: Int) -> Int {
    return a + b
}

Чисто, читаемо, профессионально.

Настройка правил

Создайте файл .swiftformat в корне проекта:

# .swiftformat
--indent 4
--allman false
--stripunusedargs always
--closingparen sameline

Альтернативы: Periphery и SourceKit-LSP

Periphery — это не форматтер, а детектор мёртвого кода. Он находит неиспользуемые функции, классы и переменные. Полезно для рефакторинга больших проектов.

SourceKit-LSP — это протокол для взаимодействия с компилятором Swift, который используется в VS Code и других редакторах для автодополнения и диагности

Блоги

Рекомендаций по книгам