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

时间:2019-07-30 14:54:54

标签: c# .net-core stylecop roslyn-code-analysis

我想在组织中提高代码质量和样式一致。

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

为了符合我们公认的编码标准,这些分析仪将需要其他配置。理想情况下,将使用.editorconfig like this进行配置,否则,将使用using rule sets进行配置。

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

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

您可以做一些事情

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

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

  • 您也可以使用editorConfig。它被广泛采用。 FxCop和StyleCop都可以与editorConfig一起很好地工作。 EditorConfig也可以打包在Nuget中并分发。 Integration FXCop with 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>

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

答案 2 :(得分:0)

  1. 对于现有项目,您可以创建一个脚本(powershell)并更新所有项目,以便将规则添加为一次性过程。
  2. 您可以设置一个“自定义项目模板”,并将这些规则作为依赖项包括在内,并强制使用所有新创建的项目模板来创建所有项目。
  3. 启用门控签入,然后像上面建议的一样,可以将道具/目标添加到构建服务器上的“ msbuild”,并包括在默认构建目标中。如果项目没有设置标准,则无法通过检入。