55. Настраиваем автоматическое форматирование кода
Oleg991Автоматическое форматирование кода в iOS-проекте - это классный инструмент для обеспечения читаемости и поддержки кодовой базы. В этой статье покажу как начать работу со swiftformat
.
Почему автоформатирование
Когда код форматируется сам, мы экономим силы и время. Не нужно читать отдельные предупреждения линтера и вспоминать как лучше написать ту или иную конструкцию в коде. Достаточно согласовать список правил для автоформатирования и настроить процесс, чтобы он работал у всех разработчиков одинаково.
Как только я узнал о таком инструменте, стал его использовать во всех своих пет-проектах 😁
Гайд по настройке
1) Скачиваем архив swiftformat.zip
со страницы с релизами в гитхабе:
2) Распаковываем архив и складываем файл скрипта в папку с вашим проектом - точно так же потом можно обновлять форматтер при выходе новых релизов
2.1) Запускаем скрипт (дважды кликаем по нему) и если видим предупреждение системы о блокировке скрипта, переходим в системные настройки -> конфиденциальность и безопасность
и разрешаем запускать этот скрипт
2.2) Создаем файл для настройки версии языка swift
, на которую будет опираться форматтер (.swift-version
), и указываем там версию swift
, которую поддерживает ваш проект и Xcode
2.3) Создаем файл для настройки правил форматтера (.swiftformat
), а тут можно почитать как создать такие файлы. Сами правила перечислены тут
3) Создаем папку для хуков в папке с проектом, назвать можно githooks
3.1) Нужно решить, на каком этапе работы с гитом будет происходить проверка на соблюдение правил формата. В качестве примера будем использовать пре-пуш хук, который будет срабатывать в момент выполнения пуша ваших изменений, и если код нужно отформатировать, то пуш закончится ошибкой, а в терминале/гит-клиенте отобразится сообщение о необходимости форматирования кода.
4) Создаем хук для нашей задачи и складываем в ранее созданную папку для хуков (githooks
):
#!/usr/bin/env bash SCRIPTDIR=$(dirname "$0") SWIFTFORMATDIR="$(dirname "$SCRIPTDIR")" if ! $SWIFTFORMATDIR/swiftformat . --lint; then # Нужно выполнить форматирование echo "" echo "Похоже есть код, который нужно отформатировать." echo "Запусти в терминале из папки с проектом файл swiftformat с точкой после пробела:" echo "$SWIFTFORMATDIR/swiftformat ." exit 1 else # Формат кода соответствует правилам exit 0 fi
Я не являюсь экспертом по гит-хукам и допускаю вероятность, что мой пример можно упростить или написать лучше
5) Настраиваем адрес папки с хуками для проекта. В терминале переходим в папку с проектом (cd myProject
) и вызываем команду:
git -C /*путь_к_репозиторию*/ config core.hooksPath ./githooks
5.1) Может потребоваться настроить разрешение для запуска хука, для этого есть такая команда:
chmod +x /*путь_к_репозиторию*/githooks/pre-push
Проверяем работу хука/форматтера
1) При попытке запушить что-нибудь в гит должна возникнуть ошибка, пример:
2) Запускаем форматтер в терминале из папки с проектом при помощи команды со скриншота: ./swiftformat .
и смотрим на изменения в проекте:
3) Теперь можно пушить изменения в гит ✅
Заключение
Автоформатирование позволяет сэкономить много времени и нервов, и в этой статье я постарался понятным языком описать необходимые шаги для настройки форматтера в проекте.
В статье не рассмотрены правила форматирования, потому что их можно изучить (и посмотреть примеры) в гитхабе.
Рекомендую изучить официальный ридми по swiftformat, если тема показалась интересной 🙂
Другие мои статьи можно почитать тут.