Перейти к основному содержимому

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

Повысьте эффективность процесса разработки, интегрировав популярные линтеры и форматтеры, такие как SQLFluff, sqlfmt, Black и Prettier. Используйте эти мощные инструменты напрямую в Studio IDE, не прерывая рабочий процесс разработки.

Details

Что такое линтеры и форматтеры? Линтеры анализируют код на наличие ошибок, багов и проблем со стилем, в то время как форматтеры исправляют правила стиля и форматирования. Подробнее о том, когда использовать линтеры или форматтеры, читайте в Часто задаваемых вопросах.

В dbt Cloud IDE вы можете выполнять проверку, автоматическое исправление и форматирование для пяти различных типов файлов:

В Studio IDE вы можете выполнять линтинг, автоисправление и форматирование для пяти различных типов файлов:

  • SQL — выполнять lint и исправления с помощью SQLFluff, а также format с помощью sqlfmt
  • YAML, Markdown и JSON — форматировать с помощью Prettier
  • Python — форматировать с помощью Black

Каждый тип файла имеет свои уникальные правила проверки и форматирования. Вы можете настроить процесс проверки, чтобы добавить больше гибкости и улучшить обнаружение проблем и стиля.

По умолчанию IDE использует правила sqlfmt для форматирования вашего кода, что делает его удобным для использования сразу. Однако, если у вас есть файл с именем .sqlfluff в корневом каталоге вашего проекта dbt, IDE будет использовать правила SQLFluff по умолчанию.

Используйте SQLFluff для проверки/форматирования вашего SQL-кода и просмотра ошибок кода на вкладке Code Quality.Используйте SQLFluff для проверки/форматирования вашего SQL-кода и просмотра ошибок кода на вкладке Code Quality.
Используйте sqlfmt для форматирования вашего SQL-кода.Используйте sqlfmt для форматирования вашего SQL-кода.
Форматируйте файлы YAML, Markdown и JSON с помощью Prettier.Форматируйте файлы YAML, Markdown и JSON с помощью Prettier.
Используйте кнопку config, чтобы выбрать инструмент.Используйте кнопку config, чтобы выбрать инструмент.
Настройте линтинг, задав собственные правила проверки кода, включая правила линтинга и стиля dbtonic.Настройте линтинг, задав собственные правила проверки кода, включая правила линтинга и стиля dbtonic.

Проверка

С помощью Studio IDE вы можете бесшовно использовать SQLFluff — настраиваемый SQL‑линтер, который предупреждает о сложных функциях, ошибках синтаксиса, форматирования и компиляции. Эта интеграция позволяет запускать проверки, исправлять и просматривать любые ошибки кода напрямую в Cloud Studio IDE:

  • Работает с Jinja и SQL.
  • Поставляется со встроенными правилами линтинга. Вы также можете настроить собственные правила линтинга.
  • Позволяет включить линтинг с такими опциями, как Lint (отображает ошибки линтинга и рекомендует действия) или Fix (автоматически исправляет ошибки в Studio IDE).
  • Отображает вкладку Code Quality для просмотра ошибок кода, обеспечивая прозрачность и управление качеством кода.
Эфемерные модели не поддерживаются

Проверка не поддерживает эфемерные модели в dbt v1.5 и ниже. Обратитесь к Часто задаваемым вопросам для получения дополнительной информации.

Включение проверки

Линтинг доступен во всех ветках, включая защищённую основную ветку git. Поскольку Studio IDE не позволяет делать коммиты в защищённую ветку, он предложит зафиксировать эти изменения в новой ветке.

  1. Чтобы включить линтинг, откройте файл .sql и перейдите на вкладку Code Quality.
  2. Нажмите кнопку </> Config в правом нижнем углу раздела консоли, под File editor.
  3. Во всплывающем окне конфигурации инструмента контроля качества кода вы можете выбрать sqlfluff или sqlfmt.
  4. Чтобы выполнить линтинг кода, выберите переключатель sqlfluff. (Используйте sqlfmt, чтобы отформатировать код.)
  5. После выбора переключателя sqlfluff вернитесь в раздел консоли (под File editor) и выберите кнопку из выпадающего списка Lint или Fix:
    • Кнопка Lint — отображает проблемы линтинга в Studio IDE в виде волнистых подчёркиваний в File editor. Вы можете навести курсор на подчёркнутую проблему, чтобы увидеть детали и доступные действия, включая опцию Quick Fix для исправления всех или отдельных проблем. После выполнения линтинга вы увидите сообщение с подтверждением результата. Линтинг не запускается повторно автоматически после сохранения файла — нажмите Lint ещё раз, чтобы запустить его снова.
    • Кнопка Fix — автоматически исправляет ошибки линтинга в File editor. По завершении исправлений вы увидите сообщение с подтверждением результата.
    • Используйте вкладку Code Quality для просмотра и отладки любых ошибок в коде.
Используйте кнопку Lint или Fix в разделе консоли, чтобы проверить или автоматически исправить ваш код.Используйте кнопку Lint или Fix в разделе консоли, чтобы проверить или автоматически исправить ваш код.

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

SQLFluff — это настраиваемый SQL линтер, что означает, что вы можете настроить свои собственные правила проверки вместо использования настроек проверки по умолчанию в IDE. Вы можете исключить файлы и каталоги, используя стандартный файл .sqlfluffignore. Узнайте больше о синтаксисе в документации по синтаксису .sqlfluffignore.

Чтобы настроить свои собственные правила проверки:

  1. Создайте новый файл в корневом каталоге проекта (родительский или верхнеуровневый каталог для ваших файлов).
    Примечание: корневой каталог проекта — это каталог, в котором находится файл dbt_project.yml.
  2. Назовите файл .sqlfluff (обязательно добавьте . перед sqlfluff).
  3. Создайте и добавьте свой пользовательский код конфигурации.
  4. Сохраните изменения и закоммитьте их.
  5. Перезапустите Studio IDE.
  6. Протестируйте и приятного линтинга!

Линтинг снапшотов

По умолчанию dbt выполняет линтинг всех изменённых файлов .sql в вашем проекте, включая снапшоты. Snapshots могут быть определены как в YAML, так и в файлах .sql, однако их SQL не подлежит линтингу и может вызывать ошибки в процессе линтинга.

Чтобы SQLFluff не выполнял линтинг файлов снапшотов, добавьте директорию снапшотов в файл .sqlfluffignore (например, snapshots/).

Обратите внимание, что вам необходимо явно исключить снапшоты в файле .sqlfluffignore, поскольку dbt не игнорирует снапшоты автоматически на стороне бэкенда.

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

Обратитесь к файлу конфигурации SQLFluff для Jaffle shop для dbt-специфичных (или dbtonic) правил проверки, которые мы используем для наших собственных проектов:

Пример конфигурационного кода dbtonic, предоставленный dbt Labs
[sqlfluff]
templater = dbt
# Это изменение (с Jinja на dbt templater) сделает линтинг более медленным,
# потому что перед проверкой dbt‑код сначала будет скомпилирован в код для хранилища данных.
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

Чтобы узнать больше о лучших практиках стилизации, см. раздел How we style our SQL.

Настройка линтинга с помощью собственных правил линтинга кода, включая правила линтинга и стилизации dbtonic.Настройка линтинга с помощью собственных правил линтинга кода, включая правила линтинга и стилизации dbtonic.

Форматирование

В Studio IDE вы можете форматировать код в соответствии с руководствами по стилю одним нажатием кнопки. Studio IDE интегрируется с форматтерами, такими как sqlfmt, Prettier и Black, чтобы автоматически форматировать код пяти разных типов файлов — SQL, YAML, Markdown, Python и JSON:

  • SQL — Форматирование с помощью sqlfmt, который предоставляет единый способ форматирования dbt SQL и Jinja.
    • Примечание: Пользовательская конфигурация sqlfmt в Studio IDE не поддерживается.
  • YAML, Markdown и JSON — Форматирование с помощью Prettier.
  • Python — Форматирование с помощью Black.

Интеграции форматирования в Cloud Studio IDE берут на себя рутинные задачи, такие как форматирование кода, позволяя вам сосредоточиться на создании качественных моделей данных, совместной работе и достижении значимых результатов.

Форматирование SQL

Чтобы форматировать ваш SQL-код, dbt интегрируется с sqlfmt — это строгий форматтер SQL-запросов, который предлагает единый, однозначный способ форматирования SQL и Jinja.

По умолчанию Studio IDE использует правила sqlfmt для форматирования вашего кода, поэтому кнопка Format доступна сразу и ею удобно пользоваться. Однако, если в корневом каталоге вашего dbt‑проекта есть файл с именем .sqlfluff, Studio IDE по умолчанию будет использовать правила SQLFluff.

Форматирование доступно во всех ветках, включая защищённую основную git‑ветку. Поскольку Studio IDE не позволяет делать коммиты напрямую в защищённую ветку, он предложит закоммитить эти изменения в новую ветку.

  1. Откройте файл .sql и нажмите на вкладку Code Quality.
  2. Нажмите на кнопку </> Config на правой стороне консоли.
  3. В всплывающем окне конфигурации инструмента качества кода у вас есть возможность выбрать sqlfluff или sqlfmt.
  4. Чтобы форматировать ваш код, выберите радиокнопку sqlfmt. (Используйте sqlfluff для проверки вашего кода).
  5. После того как вы выбрали радиокнопку sqlfmt, перейдите в раздел консоли (расположенный ниже Редактора файлов), чтобы выбрать кнопку Format.
  6. Кнопка Format автоматически форматирует ваш код в Редакторе файлов. После автоматического форматирования вы увидите сообщение, подтверждающее результат.
Используйте sqlfmt для форматирования вашего SQL-кода.Используйте sqlfmt для форматирования вашего SQL-кода.

Форматирование YAML, Markdown, JSON

Чтобы форматировать код YAML, Markdown или JSON, dbt интегрируется с Prettier — форматировщиком кода с жёстко заданными правилами. Форматирование доступно во всех ветках, включая защищённую основную git-ветку. Поскольку Studio IDE не позволяет выполнять коммиты в защищённую ветку, он предлагает зафиксировать эти изменения в новой ветке.

  1. Откройте файл .yml, .md или .json.
  2. В разделе консоли (расположенном ниже Редактора файлов) выберите кнопку Format, чтобы автоматически форматировать ваш код в Редакторе файлов. Используйте вкладку Code Quality для просмотра ошибок кода.
  3. После автоматического форматирования вы увидите сообщение, подтверждающее результат.
Форматируйте файлы YAML, Markdown и JSON с помощью Prettier.Форматируйте файлы YAML, Markdown и JSON с помощью Prettier.

Вы можете добавить конфигурационный файл для настройки правил форматирования для файлов YAML, Markdown или JSON с помощью Prettier. IDE ищет конфигурационный файл на основе порядка приоритета. Например, сначала она проверяет наличие ключа "prettier" в вашем файле package.json.

Для получения дополнительной информации о порядке приоритета и о том, как настраивать файлы, обратитесь к документации Prettier. Обратите внимание, что файлы .prettierrc.json5, .prettierrc.js и .prettierrc.toml в настоящее время не поддерживаются.

Форматирование Python

Для форматирования вашего Python-кода dbt интегрируется с Black — строгим форматтером кода Python. Форматирование доступно во всех ветках, включая защищённую основную git-ветку. Поскольку Studio IDE не позволяет выполнять коммиты в защищённую ветку, он предлагает закоммитить эти изменения в новую ветку.

  1. Откройте файл .py.
  2. В разделе консоли (расположенном ниже Редактора файлов) выберите кнопку Format, чтобы автоматически форматировать ваш код в Редакторе файлов.
  3. После автоматического форматирования вы увидите сообщение, подтверждающее результат.
Форматируйте файлы Python с помощью Black.Форматируйте файлы Python с помощью Black.

Часто задаваемые вопросы

 Когда следует использовать SQLFluff, а когда sqlfmt?
 Могу ли я вложить файлы `.sqlfluff`?
 Могу ли я запускать команды SQLFluff из терминала?
 Какие факторы следует учитывать при использовании линтинга dbt?

Нашли ошибку?

0
Loading