Конфигурирование стиля кода в Visual Studio 2017


    Предлагаю вашему вниманию перевод полезной статьи о том, как настраивать и применять правила написания кода в вашей команде.

    Visual Studio 2017 обеспечивает соблюдение стиля написания кода и поддержку EditorConfig. Новая версия включает в себя больше правил для code style и позволяет разработчикам настраивать стиль кода через EditorConfig.

    Что такое EditorConfig?


    EditorConfig — это формат файла с открытым исходным кодом, который помогает разработчикам настраивать и применять правила форматирования и соглашения о стиле написания кода для получения более читаемых кодовых баз (codebases). Файлы EditorConfig легко включаются в систему управления версиями и применяются на уровне репозитория и проекта. Соглашения EditorConfig переопределяют их эквиваленты в ваших личных настройках, так что соглашения из кодовой базы имеют приоритет над индивидуальным разработчиком.

    Простота и универсальность редактора EditorConfig делают его привлекательным выбором для командных параметров code style в Visual Studio (и за его пределами). Microsoft вместе с сообществом EditorConfig, добавили его поддержку в Visual Studio и продолжают расширять формат, включая в него параметры code style характерные для .NET среды.

    EditorConfig и .NET Code Style


    Разработчики имеют возможность глобально настроить свои личные предпочтения для стиля написания кода в Visual Studio через меню Tools > Options. Теперь, в VS 2017 вы можете настроить свои соглашения о кодировании в файле EditorConfig, и любые нарушения правил сразу же попадают в редактор по мере ввода. Это означает, что теперь, независимо от того, на какой стороне вы находитесь в дебатах по code style, вы можете выбрать, те соглашения, которые, по вашему мнению, наилучшим образом подходят для любой части вашей кодовой базы — будь то целый solution или только некий legacy раздел, для которого вы не хотите изменять эти соглашения. Чтобы продемонстрировать некоторые особенности этой функциональности, можно взглянуть на изменения которые были сделаны для использования EditorConfig в репозиторие Roslyn

    Начало работы


    Roslyn в полной мере использует стиль, описанный в .NET Foundation Coding Guidelines. Настройка правил в файле EditorConfig позволит разработчикам отслеживать нарушения своих правил кодирования по мере их ввода, а не в процессе code review.

    Чтобы определить стиль кода и параметры форматирования для всего репозитория, просто добавьте файл .editorconfig в каталог верхнего уровня. Чтобы установить эти правила в качестве «корневых» параметров, добавьте следующее в .editorconfig (вы можете сделать это в своем редакторе / IDE по выбору):

    # top-most EditorConfig file
    root = true

    Параметры EditorConfig применяются сверху вниз с переопределениями, то есть вы описываете общие правила наверху и переопределяете их дальше вниз в своем дереве каталогов по мере необходимости. В репозитории Roslyn файлы в каталоге Compilers не используют var, поэтому мы можем просто создать другой файл .editorconfig, который содержит различные настройки для предпочтений var, и эти правила будут применяться только к файлам в этом каталоге. Обратите внимание, что когда мы создаем этот EditorConfig файл в каталоге Compilers, то нам не нужно добавлять root = true (это позволит наследовать правила из родительского каталога или, в данном случае, из каталога Roslyn верхнего уровня).



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


    Теперь, когда у нас есть файлы EditorConfig в наших каталогах, мы можем начать определять некоторые правила. Существует восемь правил форматирования, которые обычно поддерживаются через EditorConfig в редакторах и IDE: charset, indent_style, indent_size, tab_width, end_of_line, trim_trailing_whitespace, insert_final_newline и max_line_length. Начиная с версии VS 2017 поддерживаются только первые пять правил форматирования. Чтобы добавить правило форматирования, укажите типы (ы) файлов, к которым вы хотите применить правило, а затем определите свои правила, например:

    # Code files
    [*.cs,*.csx,*.vb,*.vbx]
    indent_size = 4

    Правила стиля кода


    После совместной работы с сообществом EditorConfig формат файла был расширен, чтобы поддерживать стиль кода .NET. Также расширился набор конвенций по кодированию, которые могут быть сконфигурированы и применены для включения таких правил, как предпочтение collection initializers, expression-bodied members, C#7 pattern matching и многое другое!

    Давайте рассмотрим пример того, как могут быть определены соглашения о кодировании:

    # CSharp code style settings:
    [*.cs]
    csharp_style_var_for_built_in_types = true : none
    csharp_style_var_elsewhere = true : error
    csharp_style_expression_bodied_methods = false : suggestion
    csharp_style_throw_expression = true : warning

    Левая сторона — это имя правила, правая сторона указывает настройки правила: уровень предпочтения и уровень выполнения, соответственно.

    • Настройки предпочтений могут быть либо true(означать, «использовать это правило»), либо false (что означает «не использовать это правило»).
    • Уровень выполнения одинаковый для всего анализа кода на основе Roslyn и может быть от наименьшей серьезности до самого серьезного: none, suggestion, warning или error.

    В конечном счете, ваша сборка будет не удачной, если вы нарушите правило, которое принудительно выполняется на уровне серьезности ошибки. Чтобы увидеть все правила стиля кода, доступные в VS 2017, и окончательные правила стиля кода Roslyn, см. Roslyn .editorconfig или ознакомьтесь с документацией.

    Если вам нужно переосмыслить различные уровни серьезности и то, что они делают:



    Совет: серые точки, которые указывают на предложение, довольно серые. Чтобы разнообразить вашу жизнь, попробуйте изменить их на приятный розовый. Для этого перейдите в меню Tools > Options > Environment > Fonts and Colors > Suggestion ellipses (…) и задайте для параметра следующий настраиваемый цвет (R: 255, G: 136, B: 196):



    Опыт работы в Visual Studio


    Когда вы добавляете файл EditorConfig к существующему репозиторию или проекту, файлы не проверяются автоматически, чтобы соответствовать вашим соглашениям. Когда вы добавляете или редактируете EditorConfig файл, чтобы применить новые настройки, вы должны закрыть и открыть все открытые файлы, которые у вас есть. Чтобы весь документ придерживался правил форматирования кода, определенных в ваших настройках, вы можете использовать Format Document (Ctrl + K, D). Эта проверка не изменяет код, но вы можете использовать меню быстрых действий (Ctrl +.), чтобы применить исправление стиля кода ко всем вхождениям в документе/проекте/решении.



    Совет: Чтобы проверить, что в вашем документе используются пробелы или табуляции, включите Edit > Advanced > View White Space.

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



    Обратите внимание, что это означает, что EditorConfig файлы переопределяют любые настройки стиля кода, которые вы настроили в меню Tools > Options.

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

    Вывод


    Visual Studio 2017 — просто ступенька в конфигурации соглашения о написания кода. Чтобы узнать больше о поддержке EditorConfig в Visual Studio 2017, ознакомьтесь с документацией.

    Спасибо за внимание!
    • +16
    • 21,8k
    • 7
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      +1
      Полезная штука. Только надо уговорить всех в команде переползти на VS 2017))
        0
        EditorConfig работает и с VS 2015
          +1
          А с решарпером его кстати можно задружить как-нибудь? Что бы решарпер брал для клинапа настройки editorConfig например.
            +1
            Вот инфа этому вопросу https://youtrack.jetbrains.com/issue/RSRP-461746
        0
        Может кто-нибудь подскажет как научить VS2015-2017 делать отступы в один пробел внутри круглых скобок везде кроме определения функций? Т.е. «void n(int i)» — без пробелов, но «x = n( i )» — вокруг «i» пробелы. VS2010 так умела…
          0
          Вы пробовали поставить галочки для этих параметров?
          Insert space within argument list parentheses
          Insert space within parentheses of expressions
          Insert space within parentheses of type casts
          Insert space within parentheses of control flow statements

          и снять галочку для
          Insert space within parameter list parentheses

          Tools > Options > Text Editor > C# > Code Style > Formatting > Spacing
            0
            Нужно в C++.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое