Как настроить Roslyn Analyzers во многих проектах?

Я хочу обеспечить качество кода и согласованные стили в моей организации.

Для этого я планирую добавить Roslyn Analyzers и StyleCop в мои проекты.

Чтобы соответствовать нашим согласованным стандартам кодирования, эти анализаторы нуждаются в дополнительной настройке. В идеале они должны быть настроены с использованием .editorconfig, например, или, если это невозможно, с использованием наборов правил.

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

У меня есть идея, что я мог бы создать пакет NuGet для своей организации, который бы включал в мою организацию выбранных анализаторов, любую конфигурацию и даже любые пользовательские анализаторы, которые могут быть созданы. Этот "пакетный" пакет можно добавить в каждый проект, избегая утомительного и подверженного ошибкам повторения. Это возможно, это даже хорошая идея? Кто-нибудь еще сделал это?

Ответ 2

Есть несколько вещей, которые вы можете сделать

  • Добавить пакет NuGet в проект (это то, что мы делаем на нашем рабочее место), мы добавили StyleCop и FxCop с нашими индивидуальными настройками. Это работает. Распределение очень легко в это дело.

  • Добавьте Directory.Build.props и Directory.Build.targets как @Paulo Morgado упомянуто - их можно настраивать на уровне проекта и решения

  • Вы также можете использовать editorConfig. Это широко применяется. И FxCop, и StyleCop очень хорошо работают с editorConfig. EditorConfig также может быть упакован в Nuget и распространен. Интеграция FXCop с EditorConfig.

Например, чтобы создать пакет nuget, создайте библиотеку .netstandard с файлом .nuspec, самый простой пример -

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
  <metadata>

    <dependencies>
      <dependency id="StyleCop.Analyzers" version=""/>
      <dependency id="Microsoft.CodeAnalysis.FxCopAnalyzers" version=""/>
    </dependencies>
  </metadata>

</package>

И, конечно, вы можете включить свои собственные правила кодирования, а также включить их.

Ответ 3

  1. Для существующих проектов вы можете создать скрипт (powershell) и обновить все проекты так, чтобы правила добавлялись как единовременный процесс.
  2. Вы можете настроить пользовательский шаблон проекта и включить эти правила в качестве зависимости и сделать его обязательным, все проекты должны быть созданы с использованием вновь созданного шаблона проекта.
  3. Включите Gated Checkin, и затем, как кто-то, предложенный выше, вы можете добавить реквизиты/цели для "msbuild" на сервере сборки и включить в них цели сборки по умолчанию. Если в проекте не установлены стандарты, регистрация не пройдена.