首页 > 解决方案 > 各种 Microsoft.CodeQuality.* 分析器之间有什么区别?

问题描述

我对 .NET Core 的各种代码分析器有点困惑。

如果您创建一个默认的 .NET Core Web 项目,您将获得Microsoft.CodeAnalysis.Analyzers.

此外,在 NuGet 上,还有Microsoft.CodeQuality.Analyzers(注意名称略有不同)。安装后,我看到它包含了更多的规则。

最后,还有Microsoft.CodeAnalysis.FxCopAnalyzers,它似乎包含Microsoft.CodeQuality.Analyzers

Microsoft.CodeAnalysis.Analyzers那么,Microsoft.CodeQuality.Analyzers和之间究竟是什么关系Microsoft.CodeAnalysis.FxCopAnalyzers呢?我的项目应该有什么?

PS 创建一个新项目后,我在 NuGet 中搜索Microsoft.CodeAnalysis.Analyzers包(我的项目中已经存在)。它找到它并声明我的项目具有 v1.1 并且需要将其升级到 v2.9.4。然而,根据 NuGet 的说法,v1.1 是在 2015 年发布的。这没有任何意义,因为我使用的是 VS2019,并且在 2015 年至 2019 年之间已经发布了很多该分析器的版本。

但是,当我将软件包升级到 2.9.4 时 - 分析器具有与 v1.1 相同的 3 条规则。那么我到底要升级什么?

标签: c#.net.net-corecode-analysisroslyn-code-analysis

解决方案


这在这里描述:https ://github.com/dotnet/roslyn-analyzers/blob/master/README.md

总之:

  • Microsoft.CodeQuality.Analyzers 是用于运行分析器的包。

    此包包含不特定于任何特定 API 使用的通用代码质量改进规则

  • Microsoft.CodeAnalysis.Analyzers 适用于代码分析创建者。所以用于创建分析器。
  • Microsoft.CodeAnalysis.FxCopAnalyzers:这是此存储库的主要分析器包,其中包含所有移植的 FxCop 代码分析规则 (CAxxxx)。

推荐阅读