Определение согласованных стилей программирования с помощью EditorConfig

Чтобы применить согласованные стили программирования для всех, кто работает в базе кода, можно добавить файл EditorConfig в решение или проект. Параметры файла EditConfig соответствуют спецификации формата файла, поддерживаемой EditorConfig.org. Многие редакторы кода и приложения поддерживают файлы EditorConfig, включая Visual Studio. Этот файл является переносимым компонентом, который передается вместе с кодом и позволяет применять стили написания кода даже вне среды Visual Studio.

В Visual Studio параметры файла EditorConfig имеют приоритет над параметрами глобального текстового редактора (доступ к которым можно получить, выбрав текстовый редактор в диалоговом окне "Параметры инструментов>"). Это означает, что каждую базу кода можно настроить для использования параметров текстового редактора, относящихся к конкретному проекту. При использовании файлов EditorConfig можно по-прежнему задавать собственные параметры личного редактора в текстовом редакторе Visual Studio. Эти параметры текстового редактора применяются всякий раз, когда вы работаете в базе кода без файла EditorConfig или когда файл EditorConfig не переопределяет определенный параметр. Пример такого предпочтения заключается в том, следует ли использовать вкладки или пробелы для стиля отступа кода.

При добавлении файла EditorConfig в проект в Visual Studio только новые строки кода форматируются на основе параметров EditorConfig. Форматирование существующего кода изменяется только при выполнении одной из следующих команд:

  • Очистка кода.

    Выберите "Очистка кода" в редакторе Visual Studio или нажмите клавиши CTRL+K, CTRL+E. Эта команда применяется к параметрам пробела, таким как стиль отступа и выбранные параметры стиля кода, такие как параметры круглых скобок.

  • Формат документа.

    Выберите "Изменить>расширенный>формат документа" или нажмите клавиши CTRL+K, CTRL+D в профиле по умолчанию. Эта команда применяется только к параметрам пробела, таким как стиль отступа.

Примечание.

Этот раздел относится к Visual Studio для Windows. Сведения о Visual Studio для Mac см. в разделе "Создание и редактирование пользовательского файла EditorConfig" в Visual Studio для Mac.

Согласованность кода

Параметры файла EditorConfig позволяют поддерживать согласованные стили кода и соглашения в базе кода независимо от используемого редактора или интегрированной среды разработки. Некоторые стили программирования, которые можно контролировать, являются отступными стилями, шириной табуляции, символами конца строки и кодировкой. Например, если в базе кода C# есть соглашение, которое отступы используют пять пробелов, документы используют кодировку UTF-8, а строки заканчиваются cr/LF, можно настроить файл EditorConfig для использования этого соглашения.

Файлы EditorConfig полезны при написании соглашений, используемых для личных проектов, отличаются от этих соглашений, используемых в проектах вашей команды. Например, вы можете предпочесть, что отступ добавляет символ табуляции в код. Однако ваша команда может предпочесть, чтобы отступ добавил четыре места. Файлы EditorConfig устраняют эту проблему, позволяя создавать конфигурацию для каждого сценария.

Так как файл .editorconfig в базе кода содержит параметры EditorConfig, они перемещаются вместе с этой базой кода. Параметры текстового редактора применяются при открытии файла кода в редакторе, совместимом с EditorConfig.

Примечание.

Соглашения, заданные в файле EditorConfig, не могут быть применены в конвейере CI/CD в качестве ошибок сборки или предупреждений. Все отклонения от стиля видны только в редакторе Visual Studio и списке ошибок.

Поддерживаемые параметры

Редактор в Visual Studio поддерживает основной набор свойств EditorConfig:

  • indent_style
  • indent_size
  • tab_width
  • end_of_line
  • charset
  • trim_trailing_whitespace
  • insert_final_newline
  • root

EditorConfig поддерживает все языки, поддерживаемые Visual Studio, за исключением параметров редактора EditorConfig поддержки XML.

EditorConfig поддерживает соглашения о стиле кода, включая язык, форматирование и соглашения об именовании для C# и Visual Basic.

Добавление и удаление файлов EditorConfig

При добавлении файла EditorConfig в проект или базу кода Visual Studio форматирует все новые строки кода, которые вы записываете в соответствии с параметрами файла EditorConfig. Однако Visual Studio не преобразует существующие стили в новые, пока не отформатируйте документ или не выполните очистку кода. Например, если отступы в файле отформатированы с помощью вкладок, и вы добавляете файл EditorConfig, который форматирует отступы пробелами, отступы не преобразуются в пробелы автоматически. При форматировании документа (выберите "Изменить>>расширенный формат документа" или нажмите клавиши CTRL K, CTRL++D), параметры пробела в файле EditorConfig применяются к существующим строкам кода.

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

Добавление файла EditorConfig в проект

Чтобы добавить файл EditorConfig в проект или решение, выполните следующие действия.

  1. Откройте проект или решение в Visual Studio. Выберите решение или узел проекта в зависимости от того, должны ли параметры EditorConfig применяться ко всем проектам в решении или только к одному. В проекте или решении также можно выбрать папку, в которую будет добавлен файл EDITORCONFIG.

  2. В меню выберите "Добавить новый элемент проекта>" или нажмите клавиши CTRL+SHIFT+A.

    Откроется диалоговое окно Добавление нового элемента .

  3. В поле поиска введите editorconfig.

    В результатах поиска отобразятся два шаблона элементов для файла editorconfig.

    Снимок экрана: шаблоны элементов файла EditorConfig в Visual Studio.

  4. Выберите шаблон файла editorconfig (пустой), чтобы добавить файл EditorConfig, предварительно заполненный параметрами EditorConfig по умолчанию для пробелов, стиля кода и соглашений об именовании. Или выберите шаблон файла editorconfig (.NET), чтобы добавить файл EditorConfig, предварительно заполненный стандартным пробелами .NET, стилем кода и соглашениями об именовании.

    Новый файл .editorconfig отображается в Обозреватель решений, который открывается в редакторе в виде новой вкладки.

    Снимок экрана: файл editorconfig в Обозреватель решений и редакторе.

  5. При необходимости измените файл и сохраните его.

Другие способы добавления файла EditorConfig

Существует еще несколько способов добавления в проект файла EditorConfig:

  • Используйте IntelliCode для Visual Studio для создания файла editorconfig в решении. Щелкните правой кнопкой мыши Обозреватель решений и выберите в контекстном меню команду Add>New EditorConfig (IntelliCode). IntelliCode для Visual Studio определяет стили кода из существующего кода, а затем создает файл EditorConfig с предопределенными параметрами стиля кода.

  • Автоматически создайте файл EditorConfig на основе параметров стиля кода.

Иерархия и приоритет файлов

При добавлении файла .editorconfig в папку в иерархии файлов его параметры применяются ко всем применимым файлам на этом уровне и ниже. Можно также переопределить параметры EditorConfig для конкретного проекта, базы кода или части кода так, чтобы использовать другие соглашения, чем в остальных частях базы кода. Это может быть полезно при включении кода из другого места и не хотите изменять его соглашения.

Следуйте приведенным ниже рекомендациям:

  • Чтобы переопределить некоторые или все параметры EditorConfig, добавьте файл EDITORCONFIG на уровне иерархии файлов, к которой следует применить эти переопределенные параметры. Новые параметры файла EditorConfig применяются к файлам на том же уровне и файлах в любых подкаталогах.

    Снимок экрана: иерархия EditorConfig.

  • Если вы хотите переопределить некоторые параметры, но не все параметры, укажите только эти параметры в файле editorconfig . Переопределяются только те свойства, которые вы явно перечисляете в файле editorconfig нижнего уровня. Другие параметры из любых файлов editorconfig более высокого уровня продолжают применяться.

  • Если вы хотите убедиться, что к этой части базы кода не применяются никакие параметры из файлов editorconfig более высокого уровня, добавьте root=true свойство в файл editorconfig нижнего уровня.

    # top-most EditorConfig file for this level
    root = true
    

Файлы EditorConfig считываются сверху вниз. Если есть несколько свойств с одинаковым именем, последнее найденное свойство с одинаковым именем имеет приоритет.

Изменение файлов EditorConfig

Visual Studio 2022 предоставляет визуальный редактор для файлов EditorConfig.

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

Visual Studio помогает редактировать файлы EditorConfig, предоставляя списки завершения IntelliSense. Например:

Снимок экрана: IntelliSense в файле EditorConfig.

Если вы редактируете множество файлов EditorConfig, вы можете найти расширение Language Service EditorConfig. В число возможностей этого расширения входят выделение синтаксиса, улучшенная технология IntelliSense, функции проверки и форматирования кода.

Снимок экрана: IntelliSense с расширением Language Service EditorConfig.

Пример

В следующем примере показано состояние отступа фрагмента кода C# до и после добавления файла EditorConfig в проект:

  1. В диалоговом окне "Параметры инструментов>" задайте параметры текстового редактора>C#>TAB для текстового редактора Visual Studio, чтобы создать четыре пробела при нажатии клавиши TAB.

    Снимок экрана: параметр вкладки

  2. Как ожидалось, при нажатии клавиши TAB на следующей строке она отступит, добавив четыре пробела символов.

    Снимок экрана: ключ TAB, добавляющий пробелы в код.

    Снимок экрана: ключ TAB, добавляющий пробелы в код.

  3. Используйте EditorConfig для переключения параметров вкладок для использования вкладок.

    Выберите "Использовать вкладки " в файле EditorConfig.

    Снимок экрана: настройка использования вкладок для клавиши TAB.

    Добавьте новый файл с именем .editorconfig в проект со следующим содержимым. Индикатор [*.cs] означает, что это изменение применяется только к файлам кода C#в проекте.

    # Top-most EditorConfig file
    root = true
    
    # Tab indentation
    [*.cs]
    indent_style = tab
    
  4. При нажатии клавиши TAB символы вкладок теперь отображаются вместо пробелов.

    Снимок экрана: клавиша TAB, добавляющая символы вкладок в код.

    Снимок экрана: клавиша TAB, добавляющая символы вкладок в код.

Устранение неполадок параметров EditorConfig

Если файл EditorConfig существует в любом месте структуры каталогов в расположении проекта или выше, Visual Studio применяет параметры редактора в этом файле к редактору. В этом случае в строке состояния может появиться следующее сообщение:

User preferences for this file type are overridden by this project's coding conventions.

Это означает, что если какие-либо параметры редактора в текстовом редакторе параметров инструментов>>(например, размер отступа, размер вкладки или соглашения о коде) указаны в файле EditorConfig или выше проекта в структуре каталогов, соглашения в файле EditorConfig переопределяют параметры в текстовом редакторе.

Чтобы устранить неполадки EditorConfig, выполните следующие действия.

  1. Чтобы отключить поддержку EditorConfig для Visual Studio, снимите флажок "Следовать соглашениям о написании проекта" в текстовом редакторе параметров>инструментов.>

    Снимок экрана, на котором показан параметр для соглашений о кодировании проекта.

  2. Чтобы найти файлы EditorConfig в родительских каталогах проекта, откройте командную строку и выполните следующую команду из корня диска, содержащего проект.

    dir .editorconfig /s
    
  3. Чтобы управлять область соглашений EditorConfig, задайте root=true свойство в файле editorconfig в корне репозитория или в каталоге, который находится в проекте.

    В Visual Studio поиск файла EDITORCONFIG выполняется в каталоге, где находится открытый файл, и во всех его родительских каталогах. Поиск завершается по достижении корня пути к файлу или при нахождении файла EDITORCONFIG с root=true.