Julia. Форматирование кода
2026-03-21
·
4 мин. для прочтения
Julia. Форматирование кода.
Содержание
1 Пакет JuliaFormatter.jl
1.1 Общая информация
- Репозиторий: https://github.com/domluna/JuliaFormatter.jl
1.2 Установка
- Установите пакет через REPL:
using Pkg
Pkg.add("JuliaFormatter")
- Или в командной строке:
julia -e 'using Pkg; Pkg.add("JuliaFormatter")'
1.3 Использование из REPL
Вызовите
formatна файле или каталоге:using JuliaFormatter format("myfile.jl") # форматирует один файл format("src/") # форматирует все .jl файлы в папке format(".") # рекурсивно форматирует всё в текущей директорииПо умолчанию используется стиль BlueStyle — стандартный для Julia.
Можно явно указать другой стиль (например,
YASStyle,DefaultStyle):format("src/", style=YASStyle())
1.4 Использование из командной строки
- После установки пакета выполните:
julia -e 'using JuliaFormatter; format(".")'
1.5 Отдельный инструмент командной строки
Начиная с версии 2.2.0, JuliaFormatter предоставляет исполняемый файл для работы из командной строки
jlfmt.Установка:
pkg> app add JuliaFormatterПрименение:
# Format a file and write to stdout jlfmt src/file.jl # Format a file in place jlfmt --inplace src/file.jl # Check if all files in a directory are already formatted with verbose mode jlfmt --check -v src/ # Format all files in a directory with multiple threads jlfmt --threads=6 -- --inplace -v src/ # Show diff without modifying files jlfmt --diff src/file.jl
1.6 Рекомендации по стилю
BlueStyle — де-факто стандарт, используется в большинстве пакетов Julia. Он соответствует официальному руководству по стилю.
Для проектов можно зафиксировать стиль, добавив в корень файл
.JuliaFormatter.toml:style = "blue" margin = 92 indent = 4Этот файл будет применяться при вызове
format(".")без дополнительных параметров.
1.7 Форматирование без изменения файла (проверка)
- Если нужно только проверить, требуется ли форматирование, используйте:
format("src/", overwrite=false) # покажет изменения, но не применит их
2 Пакет Runic.jl
2.1 Общая информация
- Репозиторий: https://github.com/fredrikekre/Runic.jl
3 Сравнение Runic.jl и JuliaFormatter.jl
3.1 Общая информация
- JuliaFormatter.jl предлагает максимальную гибкость: вы можете настроить практически всё — от количества пробелов до того, как форматировать kwargs и цепочки вызовов.
- Это удобно для проектов, где команда уже имеет устоявшиеся предпочтения.
- Runic.jl следует философии
gofmt: полное отсутствие конфигурации.- Это устраняет дискуссии о форматировании в код-ревью.
3.2 Таблица
Таблица 1:
Сравнение Runic.jl и JuliaFormatter.jl
| Характеристика | JuliaFormatter.jl | Runic.jl |
|---|---|---|
| Философия | Гибкий, настраиваемый под ваш стиль | Не имеет конфигурации |
| Подход | Ваше мнение — ваш выбор | Стиль gofmt: никто не любит, но все его используют |
| Конфигурация | .JuliaFormatter.toml с множеством опций | Отсутствует — только вкл/выкл через комментарии |
| Встроенные стили | BlueStyle, YASStyle, SciMLStyle, DefaultStyle | Только один фиксированный стиль |
| Форматирование блоков | Настраиваемое | Всегда начинаются и заканчиваются с новой строки |
| Отступы | Настраиваемые (по умолчанию 4) | Фиксированные 4 пробела |
| Ограничение строки | margin (по умолчанию 92) | Нет — “используйте Enter или рефакторите код” |
| Специфичные правила | alignAssignment, alwaysForIn, pipeToFunctionCall и др. | Обработка “жесткой” и “мягкой” индентации для цепочек операторов |
| Интеграция VS Code | Встроенная в расширение Julia | Через стороннее расширение Custom Local Formatters |
| Интеграция Neovim | Через conform.nvim | Через conform.nvim (с ручной настройкой) |
| CLI | format(), format_file(), format_text(), jlfmt | runic с флагами –check, –diff, –inplace |
| Git интеграция | Можно настроить | git-runic для форматирования только измененных строк |
| Производительность | Стандартная | Может быть скомпилирован в бинарник (runicc) для скорости |
| Требования к Julia | Julia 1.0+ | Рекомендуется Julia 1.12+ для флага -m |
| Статус | Стабильный, широко используется | Новый (с 2024), активно развивается |
3.3 Форматирование
JuliaFormatter.jl позволяет настраивать множество аспектов:
- Предел длины строки через
margin - Выравнивание присваиваний (
alignAssignment) - Автозамену
for i = 1:10наfor i in 1:10(alwaysForIn) - Преобразование
x |> fвf(x)(pipeToFunctionCall)
- Предел длины строки через
Runic.jl придерживается строгих правил:
- 4 пробела отступа — всегда
- Блоки всегда начинаются и заканчиваются с новой строки
- Нет ограничения длины строки — разработчик сам решает, где переносить
- Умная обработка цепочек операторов с “мягкой” индентацией
- Пробелы вокруг всех инфиксных операторов, включая kwargs
3.4 Отключение форматирования
- Оба инструмента позволяют временно отключать форматирование с помощью комментариев:
#! format: off # JuliaFormatter.jl
# runic: off # Runic.jl
# здесь код не форматируется
#! format: on # JuliaFormatter.jl
# runic: on # Runic.jl
- Runic также позволяет отключить форматирование до конца файла одной командой
# runic: offна верхнем уровне .

Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы.
Научные интересы относятся к области теоретической физики и математического моделирования.