【问题标题】:What is the difference between various Microsoft.CodeQuality.* analyzers?各种 Microsoft.CodeQuality.* 分析器之间有什么区别?
【发布时间】:2019-09-27 22:16:06
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 我不太确定您所说的 MS.CA.Analyzers 是在默认 Web 项目中创建的。我不这么认为。我只看到 MS.AspNetCore 相关的分析器。无论如何,github page 是一个很好的起点。我同意名字有点混乱。 MS.CA.Analyzers 包含专门针对 MS.CA 中的 API 的分析器,它们是 C# 编译器的 API。我通常会说你只需要 FxCopAnalyzers,MS.CQ.Analyzers 是由那个包带来的。
  • @MikeZboray 来自一个全新的项目。 i.imgur.com/F74ceUW.png
  • 现在还有 Microsoft.CodeAnalysis.CSharp.AnalyzersMicrosoft.CodeAnalysis.NetAnalyzersMicrosoft.CodeAnalysis.CSharp.NetAnalyzers 以及所有其他人 - 并且不要忘记 StyleCop 规则 - 哎呀

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


【解决方案1】:

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

总结:

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

    此包包含常见的代码质量改进规则,这些规则并不特定于任何特定 API 的使用

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

【讨论】:

  • 您在哪里读到不建议将 FxCopAnalyzers 用于新项目?
  • “Microsoft 创建了一组分析器,称为 Microsoft.CodeAnalysis.FxCopAnalyzers,其中包含来自遗留分析的最重要的“FxCop”规则”。来自docs.microsoft.com/en-us/visualstudio/code-quality/…。但我现在看到它有点模棱两可。我想我误解了它。
猜你喜欢
  • 2015-03-25
  • 2012-01-13
  • 1970-01-01
  • 2021-07-24
  • 2011-05-24
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 2020-06-08
相关资源
最近更新 更多