如何在许多项目中配置Roslyn Analyzers?

Jod*_*ell 13 c# stylecop roslyn .net-core

我想在组织中强制执行代码质量和一致的样式。

为此,我计划将Roslyn AnalyzersStyleCop添加到我的项目中。

为了满足我们公认的编码标准,这些分析仪将需要其他配置。理想情况下,将使用.editorconfig进行此类配置,否则,将使用规则集进行配置

在我的组织中,我们在许多存储库中都有许多项目,许多解决方案。我想尽可能广泛地执行这些标准。我不想将所有分析器软件包和配置都添加到每个项目中,是否有更好,更容易,更容易保持一致的方式来实现这一目标?

我有一个想法,我可以为我的组织制作一个NuGet软件包,其中包含我组织的选定分析器,任何配置以及实际上可能创建的任何自定义分析器。该“捆绑”包可以添加到每个项目中,避免了繁琐且容易出错的重复。这可能吗,甚至是个好主意吗?有人做过吗?

Pau*_*ado 5

您可以使用Directory.Build.propsDirectory.Build.targets向项目中添加属性和目标。


jee*_*bda 5

您可以做一些事情

  • 将 NuGet 包添加到项目中(这是我们在工作场所所做的),我们添加了 StyleCop 和 FxCop,并在其之上添加了我们的自定义设置。这是工作。在这种情况下,分发非常容易。

  • 添加 Directory.Build.props 和 Directory.Build.targets 作为 @Paulo Morgado 提到的 - 它们可以在项目级别和解决方案级别进行配置

  • 您也可以使用 editorConfig。它正在被广泛采用。FxCop 和 StyleCop 都与 editorConfig 配合得很好。EditorConfig也可以打包在Nuget中并分发。将 FXCop 与 EditorConfig 集成。

例如,要创建 nuget 包,请使用 .nuspec 文件创建 .netstandard 库,最基本的示例是

<?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>
Run Code Online (Sandbox Code Playgroud)

当然,您也可以包含自定义的编码规则并包含它们。