Проверка и форматирование кода
Повысьте эффективность процесса разработки, интегрировав популярные линтеры и форматтеры, такие как SQLFluff, sqlfmt, Black и Prettier. Используйте эти мощные инструменты напрямую в Studio IDE, не прерывая рабочий процесс разработки.
Что такое линтеры и форматтеры?
Линтеры анализируют код на наличие ошибок, багов и проблем со стилем, в то время как форматтеры исправляют правила стиля и форматирования. Подробнее о том, когда использовать линтеры или форматтеры, читайте в Часто задаваемых вопросах.
В Studio IDE вы можете выполнять линтинг, автоисправление и форматирование для пяти различных типов файлов:
- SQL: Проверка и исправление с помощью SQLFluff, а также форматирование с помощью sqlfmt
- YAML, Markdown и JSON: Форматирование с помощью Prettier
- Python: Форматирование с помощью Black
Каждый тип файла имеет свои уникальные правила проверки и форматирования. Вы можете настроить процесс проверки, чтобы добавить больше гибкости и улучшить обнаружение проблем и стиля.
По умолчанию IDE использует правила sqlfmt для форматирования вашего кода, что делает его удобным для использования сразу. Однако, если у вас есть файл с именем .sqlfluff в корневом каталоге вашего проекта dbt, IDE будет использовать правила SQLFluff по умолчанию.
Проверка
В Studio IDE вы можете без труда использовать SQLFluff, настраиваемый SQL-линтер, который предупреждает о сложных функциях, ошибках синтаксиса, форматирования и компиляции. Эта интеграция позволяет запускать проверки, исправлять и отображать любые ошибки кода непосредственно в Studio IDE:
- Работает с Jinja и SQL.
- Поставляется со встроенными правилами линтинга. Вы также можете настроить собственные правила линтинга.
- Позволяет включить линтинг с такими опциями, как Lint (отображает ошибки линтинга и рекомендует действия) или Fix (автоматически исправляет ошибки в Studio IDE).
- Предоставляет вкладку Качество кода для просмотра результатов линтинга и форматирования. Некоторые диагностические сообщения редактора также отображаются на вкладке Проблемы.
- Studio IDE выполняет линтинг с помощью движка dbt v1, даже если ваша среда разработки использует канал выпусков v2 Stable. Подробнее см. в разделе Ограничения dbt v2.
- Линтинг не поддерживает эфемерные модели в dbt v1.5 и более ранних версиях. Подробнее см. в разделе Часто задаваемые вопросы.
Включение проверки
Линтинг доступен во всех ветках, включая защищённую основную ветку git. Поскольку Studio IDE не позволяет делать коммиты в защищённую ветку, он предложит зафиксировать эти изменения в новой ветке.
- Чтобы включить линтинг, откройте файл
.sqlи нажмите вкладку Качество кода. - Нажмите кнопку
</> Configв правой части раздела консоли, под Редактором файлов. - В диалоговом окне Настройка инструмента проверки качества кода выберите SQLFluff (линтинг & форматирование).
- Нажмите Сохранить.
- После сохранения на панели инструментов над консолью (под Редактором файлов) выберите Проверить файл или Проверить и исправить файл:
- Проверить: Показывает проблемы, обнаруженные при линтинге в Studio IDE, в виде волнистого подчёркивания в Редакторе файлов. Наведите указатель на подчёркнутую проблему, чтобы просмотреть подробности и доступные действия, включая опцию Быстрое исправление для исправления всех или отдельных проблем. После линтинга появится сообщение с результатом. Линтинг не запускается повторно после сохранения. Нажмите Проверить ещё раз, чтобы повторно запустить линтинг.
- Исправить: Автоматически исправляет ошибки линтинга в Редакторе файлов. После завершения исправления появится сообщение с результатом.
- Используйте вкладку Качество кода для просмотра результатов линтинга и журналов. Проверяйте вкладку Проблемы на наличие связанных диагностических сообщений редактора.
Используйте кнопку Проверить или Исправить в разделе консоли для линтинга или автоматического исправления кода.Линтинг нескольких файлов
Вы можете выполнять линтинг нескольких SQL-файлов одновременно в зависимости от того, как вы работаете с dbt. Поведение различается в Studio IDE, dbt v1 и dbt platform CLI.
-
Studio IDE: По умолчанию линтинг выполняется для всех изменённых файлов
.sqlв проекте в текущей ветке. Подробнее см. в разделе Линтинг снимков. -
dbt v1: Не включает встроенный линтер. Для линтинга SQL-файлов в проекте используйте сторонний линтер, например SQLFluff, настроенный на использование шаблонизатора dbt. Вы можете выполнять линтинг нескольких файлов, указав один или несколько путей к файлам или каталогам в качестве аргументов команды.
-
dbt platform CLI: Поддерживает те же команды линтинга, что и dbt v1:
dbt sqlfluff lint [PATHS]... [flags]Если путь не указан (например,
dbt sqlfluff lint), линтинг выполняется для всех SQL-файлов в проекте.
Настройка проверки
SQLFluff — это настраиваемый SQL линтер, что означает, что вы можете настроить свои собственные правила проверки вместо использования настроек проверки по умолчанию в IDE. Вы можете исключить файлы и каталоги, используя стандартный файл .sqlfluffignore. Узнайте больше о синтаксисе в документации по синтаксису .sqlfluffignore.
Чтобы настроить свои собственные правила проверки:
- Создайте новый файл в корневом каталоге проекта (родительском каталоге или каталоге верхнего уровня для ваших файлов). Примечание: Корневой каталог проекта — это каталог, в котором находится файл
dbt_project.yml. - Назовите файл
.sqlfluff(обязательно добавьте.передsqlfluff). - Создайте и добавьте свой пользовательский код конфигурации.
- Сохраните изменения и закоммитьте их.
- Перезапустите Studio IDE.
- Протестируйте и приятного линтинга!
Линтинг снапшотов
По умолчанию dbt выполняет линтинг всех изменённых файлов .sql в вашем проекте, включая снапшоты. Snapshots могут быть определены как в YAML, так и в файлах .sql, однако их SQL не подлежит линтингу и может вызывать ошибки в процессе линтинга.
Чтобы SQLFluff не выполнял линтинг файлов снапшотов, добавьте директорию снапшотов в файл .sqlfluffignore (например, snapshots/).
Обратите внимание, что вам необходимо явно исключить снапшоты в файле .sqlfluffignore, поскольку dbt не игнорирует снапшоты автоматически на стороне бэкенда.
Настройка правил линтинга dbtonic
Обратитесь к файлу конфигурации SQLFluff для Jaffle shop для dbt-специфичных (или dbtonic) правил проверки, которые мы используем для наших собственных проектов:
Пример кода конфигурации dbtonic от dbt Labs
[sqlfluff]
templater = dbt
# This change (from Jinja to dbt templater) will make linting slower
# because linting will first compile dbt code into data warehouse code.
runaway_limit = 10
max_line_length = 80
indent_unit = space
[sqlfluff:indentation]
tab_space_size = 4
[sqlfluff:layout:type:comma]
spacing_before = touch
line_position = trailing
[sqlfluff:rules:capitalisation.keywords]
capitalisation_policy = lower
[sqlfluff:rules:aliasing.table]
aliasing = explicit
[sqlfluff:rules:aliasing.column]
aliasing = explicit
[sqlfluff:rules:aliasing.expression]
allow_scalar = False
[sqlfluff:rules:capitalisation.identifiers]
extended_capitalisation_policy = lower
[sqlfluff:rules:capitalisation.functions]
capitalisation_policy = lower
[sqlfluff:rules:capitalisation.literals]
capitalisation_policy = lower
[sqlfluff:rules:ambiguous.column_references] # Number in group by
group_by_and_order_by_style = implicit
Подробнее о рекомендациях по оформлению см. в разделе Как мы оформляем SQL.
Настройте линтинг с помощью собственных правил проверки кода, включая линтинг/оформление по стандарту dbtonic.Форматирование
В Studio IDE вы можете форматировать код в соответствии с руководствами по стилю одним нажатием кнопки. Studio IDE интегрируется с такими форматтерами, как sqlfmt, Prettier и Black, для автоматического форматирования кода в файлах пяти типов: SQL, YAML, Markdown, Python и JSON.
- SQL: Форматирование с помощью sqlfmt, который предоставляет единый способ форматирования SQL и Jinja в dbt.
- Примечание: Пользовательская конфигурация sqlfmt в Studio IDE не поддерживается.
- YAML, Markdown и JSON: Форматирование с помощью Prettier.
- Python: Форматирование с помощью Black.
Интеграции Studio IDE с форматтерами берут на себя ручные задачи, такие как форматирование кода, позволяя вам сосредоточиться на создании качественных моделей данных, совместной работе и достижении значимых результатов.
Форматирование SQL
Чтобы форматировать ваш SQL-код, dbt интегрируется с sqlfmt — это строгий форматтер SQL-запросов, который предлагает единый, однозначный способ форматирования SQL и Jinja.
По умолчанию Studio IDE использует правила sqlfmt для форматирования кода, поэтому кнопка Форматировать доступна и готова к использованию сразу. Однако если в корневом каталоге проекта dbt есть файл с именем .sqlfluff, Studio IDE по умолчанию использует правила SQLFluff.
Форматирование доступно во всех ветках, включая защищённую основную git‑ветку. Поскольку Studio IDE не позволяет делать коммиты напрямую в защищённую ветку, он предложит закоммитить эти изменения в новую ветку.
- Откройте файл
.sqlи нажмите вкладку Качество кода. - Нажмите кнопку
</> Configв правой части консоли. - В диалоговом окне Настройка инструмента проверки качества кода выберите sqlfmt (только форматирование).
- Нажмите Сохранить.
- После сохранения на панели инструментов над консолью (под Редактором файлов) выберите кнопку Форматировать.
- Кнопка Format автоматически форматирует ваш код в Редакторе файлов. После автоматического форматирования вы увидите сообщение, подтверждающее результат.
Форматирование YAML, Markdown, JSON
Чтобы форматировать код YAML, Markdown или JSON, dbt интегрируется с Prettier — форматировщиком кода с жёстко заданными правилами. Форматирование доступно во всех ветках, включая защищённую основную git-ветку. Поскольку Studio IDE не позволяет выполнять коммиты в защищённую ветку, он предлагает зафиксировать эти изменения в новой ветке.
- Откройте файл
.yml,.mdили.json. - На панели инструментов над консолью (под Редактором файлов) выберите кнопку Форматировать, чтобы автоматически отформатировать код в Редакторе файлов. Используйте вкладку Качество кода для просмотра результатов форматирования.
- После автоматического форматирования вы увидите сообщение, подтверждающее результат.
Вы можете добавить конфигурационный файл для настройки правил форматирования для файлов YAML, Markdown или JSON с помощью Prettier. IDE ищет конфигурационный файл на основе порядка приоритета. Например, сначала она проверяет наличие ключа "prettier" в вашем файле package.json.
Подробнее о порядке приоритетов и настройке файлов см. в документации Prettier. Обратите внимание, файлы .prettierrc.json5, .prettierrc.js и .prettierrc.toml в настоящее время не поддерживаются.
Форматирование Python
Для форматирования вашего Python-кода dbt интегрируется с Black — строгим форматтером кода Python. Форматирование доступно во всех ветках, включая защищённую основную git-ветку. Поскольку Studio IDE не позволяет выполнять коммиты в защищённую ветку, он предлагает закоммитить эти изменения в новую ветку.
- Откройте файл
.py. - На панели инструментов над консолью (под Редактором файлов) выберите кнопку Форматировать, чтобы автоматически отформатировать код в Редакторе файлов.
- После автоматического форматирования вы увидите сообщение, подтверждающее результат.




