Почему стоит использовать наш форматтер Scala
- Мгновенно форматируйте неструктурированный или неправильно выровненный код Scala
- Исправляйте пробелы вокруг типов, параметров и операторов
- Нормализуйте стиль скобок для классов, объектов, трейтов и методов
- Применяйте переносы строк в стиле scalafmt для длинных выражений и цепочек методов
- Поддерживает файлы `.scala`, `.sc` скрипты и `.sbt` сборки
- Код форматируется через защищенный бэкенд – не передается и не индексируется
- Адаптивный интерфейс редактора, работающий на ноутбуке, настольном компьютере и планшете
🛠️ Как форматировать код Scala онлайн for scala-formatter
1. Вставьте или загрузите ваш код Scala
📥 Вставьте ваш код Scala в редактор или перетащите файл `.scala`, `.sc` или `.sbt`. Редактор применяет подсветку синтаксиса Scala, чтобы вы могли быстро просмотреть ваш код.
2. Нажмите «Форматировать»
⚙️ Нажмите кнопку **Форматировать**. Ваш код отправляется по HTTPS в форматер в стиле scalafmt, который реорганизует пробелы, отступы и переносы строк без изменения семантики.
3. Просмотрите результат
🔍 Сравните очищенную версию с вашей оригинальной. Скобки, пробелы и пустые строки нормализованы, чтобы структура вашего кода была легче для восприятия.
4. Скопируйте или скачайте
📤 Скопируйте отформатированный код Scala обратно в вашу IDE или скачайте его как файл `.scala`, готовый к коммиту, ревью кода или развертыванию.
Технические характеристики
Поведение стилизации (в стиле Scalafmt)
Форматер стремится отражать общие соглашения scalafmt, чтобы ваш код выглядел идиоматично в современных проектах Scala.
| Аспект | Поведение | Примечания |
|---|---|---|
| Отступы и скобки | Единообразные отступы для `class`, `object`, `trait`, `def`, `if`, `match` и `for` | Делает вложенные потоки управления и сопоставления с образцом более читаемыми. |
| Пробелы в типах и параметрах | Нормализует пробелы вокруг двоеточий, стрелок и списков параметров | Например: `def f(x: Int): String` вместо `def f(x:Int):String`. |
| Импорты и пакеты | Сохраняет структуру пакетов и блоков импорта, отделяя их от определений | Улучшает навигацию и согласованность между файлами. |
| Пустые строки | Стандартизирует пустые строки вокруг определений верхнего уровня | Разделяет логические разделы, такие как модели, сервисы и вспомогательные компоненты. |
| Идемпотентность | Многократное выполнение форматирования дает одинаковый результат | Безопасно переформатировать так часто, как вам угодно, без смещения стиля. |
Совместимость с версиями Scala
Форматтер разработан для синтаксиса как Scala 2, так и Scala 3.
| Функция | Поддержка | Примечания |
|---|---|---|
| Scala 2.x | ✅ Да | Работает с распространёнными паттернами, такими как имплиситы, объекты-компаньоны и классические for-выражения. |
| Scala 3 (Dotty) | ✅ Да | Понимает given/using, методы расширения, перечисления и другие конструкции Scala 3. |
| Файлы сборки SBT | ✅ Да | Форматирует файлы `.sbt`, используемые в сборках и определениях зависимостей. |
Поддерживаемые входные данные и ограничения
Оптимизировано для файлов реальных проектов, а не только для небольших фрагментов.
| Параметр | Ограничение / Поведение | Примечания |
|---|---|---|
| Расширения файлов | .scala, .sc, .sbt | Исходные файлы, скрипты и определения сборки. |
| MIME-типы | text/x-scala | Используется внутренне для подсветки синтаксиса. |
| Максимальный размер входных данных | ≈ 2 МБ исходного кода | Слишком большие сгенерированные коды лучше форматировать через локальный scalafmt. |
| Кодировка | Рекомендуется UTF-8 | Содержимое не в UTF-8 следует преобразовать перед форматированием. |
Выполнение и безопасность
Форматирование выполняется через приватный, защищённый бэкенд, а не через публичные сторонние сервисы.
| Аспект | Поведение | Примечания |
|---|---|---|
| Транспорт | HTTPS-вызовы к API форматирования Scala | Ваш код передаётся безопасно и не раскрывается публично. |
| Таймаут | ~25 секунд на запрос | Предотвращает долго выполняющиеся или зависшие задания форматирования на проблемных входных данных. |
| Семантика | Только преобразования макета | Форматтер изменяет пробелы и макет, а не логику вашей программы. |
Используйте Scalafmt в вашем локальном рабочем процессе
Для полного контроля и форматирования всего репозитория установите scalafmt и интегрируйте его в вашу сборку или CI-пайплайн:
Универсальный (через sbt)
Добавьте scalafmt в ваш проект
addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.2")Добавляет sbt-плагин, чтобы вы могли запускать scalafmt из sbt-оболочки.
Отформатировать все исходники
sbt scalafmtAllФорматирует все Scala и sbt файлы в вашем проекте с использованием `.scalafmt.conf`.
Проверить форматирование в CI
sbt scalafmtCheckAllПрерывает сборку, если файлы неправильно отформатированы.
Типичные сценарии использования
Бэкенд и FP-сервисы
Поддерживайте согласованность и удобство проверки больших Scala-бэкендов и FP-кодовых баз.
- Стандартизируйте стиль в проектах Akka, ZIO, Cats Effect или Play.
- Очищайте код перед открытием pull request'ов или демонстрацией примеров.
- Нормализуйте формат после больших рефакторингов или миграций библиотек.
object A{def main(args:Array[String]){println("hi")}}
object A {
def main(args: Array[String]): Unit = {
println("hi")
}
}
Изучение и преподавание Scala
Сосредоточьтесь на функциональных концепциях и типах вместо споров о пробелах.
- Автоформатирование студенческих работ перед проверкой логики и паттернов.
- Показывайте примеры до/после форматирования при обучении стилю Scala.
- Подготавливайте чистые фрагменты кода для слайдов, документации и постов в блогах.
Сборка и инструментальные скрипты
Поддерживайте порядок в `.sbt` файлах сборки и небольших Scala-скриптах.
- Форматируйте настройки sbt и блоки зависимостей для удобства поддержки.
- Очищайте вспомогательные скрипты, используемые для миграций или внутренних инструментов.
❓ Frequently Asked Questions
❓Что такое scalafmt и как этот инструмент связан с ним?
🔧Можно ли настроить все правила scalafmt здесь?
🌐Поддерживается ли синтаксис Scala 3?
🔒Отправляется ли мой код Scala на публичный сервер?
HTTPS на приватный сервер форматирования, предназначенный только для этого инструмента, и не передается третьим лицам и не индексируется. Для высококонфиденциального или проприетарного кода вы можете запустить scalafmt локально.⚙️Изменит ли форматирование поведение моей программы на Scala?
Pro Tips
Храните файл `.scalafmt.conf` в вашем репозитории, чтобы ваш редактор, CI и `sbt scalafmt` использовали один и тот же стиль.
Создавайте отдельный коммит «только форматирование» перед рефакторингом, чтобы последующие diff'ы фокусировались на реальных изменениях кода, а не на пробелах.
Используйте единую максимальную ширину строки в вашей команде, чтобы избежать шумных diff'ов и конфликтующих стилей.
При обучении сначала показывайте неотформатированный код Scala, а затем отформатированную версию, чтобы подчеркнуть, как расположение улучшает читаемость.
Additional Resources
Other Tools
- Форматер CSS
- Форматер HTML
- Форматер JavaScript
- Форматер PHP
- Выбор цвета
- Экстрактор спрайтов
- Декодер Base64
- Кодировщик Base64
- Форматер C#
- Форматер CSV
- Dockerfile Formatter
- Форматер Elm
- Форматер ENV
- Форматер Go
- Форматер GraphQL
- Форматер HCL
- Форматер INI
- Форматер JSON
- Форматер LaTeX
- Форматер Markdown
- Форматер Objective-C
- Php Formatter
- Форматер Proto
- Форматер Python
- Форматер Ruby
- Форматер Rust
- Форматер shell-скриптов
- Форматер SQL
- Форматтер SVG
- Форматтер Swift
- Форматтер TOML
- Typescript Formatter
- Форматтер XML
- Форматтер YAML
- Форматтер Yarn
- Минификатор CSS
- Html Minifier
- Javascript Minifier
- Минификатор JSON
- Минификатор XML
- Просмотрщик HTTP-заголовков
- PDF в текст
- Тестер регулярных выражений
- Проверка позиций в SERP
- Поиск Whois