相关文章推荐
叛逆的充电器  ·  /usr/bin/ld ...·  1 年前    · 
含蓄的显示器  ·  Marshal.AllocHGlobal() ...·  1 年前    · 
会搭讪的钢笔  ·  PostgreSQL ...·  1 年前    · 

旧版 FxCop 在已编译的程序集上运行生成后分析。 它作为单独的可执行文件运行,名为 FxCopCmd.exe 。 FxCopCmd.exe 加载已编译的程序集,运行代码分析,然后报告结果(或“诊断”)

.NET 分析器基于 .NET Compiler Platform(“Roslyn”)。 你 可以从 .NET SDK 启用它们,或者将它们安装为 NuGet 包 ,该包为项目或解决方案所引用。 分析器在编译器执行期间运行基于源代码的分析。 分析器托管在编译器进程(csc.exe 或 vbc.exe)中,并在生成项目时运行分析。 报告分析器结果以及编译器结果。

FxCop 分析器和 .NET 分析器之间有什么区别?

FxCop 分析器和 .NET 分析器都是指 .NET Compiler Platform(“Roslyn”)对 FxCop CA 规则的分析器实现。 在 Visual Studio 2019 16.8 和 .NET 5.0 之前的版本中,这些分析器作为 Microsoft.CodeAnalysis.FxCopAnalyzers NuGet 包 提供。 从 Visual Studio 2019 16.8 和 .NET 5.0 开始,这些分析器 包含在 .NET SDK 中 。 它们也作为 Microsoft.CodeAnalysis.NetAnalyzers NuGet 包 提供。 请考虑 从 FxCop 分析器迁移到 .NET 分析器

“运行代码分析”命令是否运行 .NET 分析器?

在 Visual Studio 2019 16.5 版本之前,选择“分析”>“运行代码分析”时,它会执行旧式分析。 从 Visual Studio 2019 16.5 开始,“运行代码分析”菜单选项会针对所选项目或解决方案执行基于 Roslyn 的分析器。 如果已安装 .NET 分析器,也会执行这些分析器。 有关详细信息,请参阅 如何:手动运行托管代码的代码分析

RunCodeAnalysis msbuild 项目属性是否运行分析器?

不是。 项目文件(例如 .csproj)中的 RunCodeAnalysis 属性仅用于执行旧版 FxCop 。 它将运行调用 FxCopCmd.exe 的生成后 msbuild 任务

那么我该如何运行 .NET 分析器呢?

若要运行 .NET 分析器,请首先 从 .NET SDK 启用它们,或将其安装为 NuGet 包 。 然后在 Visual Studio 中或使用 msbuild 生成项目或解决方案。 Roslyn 分析器生成的警告和错误将显示在“错误列表”或命令窗口中。

即使在安装了 .NET 分析器 NuGet 包之后,我仍会收到 CA0507 警告

如果已安装 .NET 分析器,但继续收到“‘运行代码分析’已被弃用,以支持在生成期间运行的 FxCop 分析器”的 CA0507 警告,可能需要将 项目文件 中的“RunCodeAnalysis”msbuild 属性设置为“false”。 否则,每次生成后将执行旧式分析。

<RunCodeAnalysis>false</RunCodeAnalysis>
			

哪些规则已移植到 .NET 分析器中?

有关已移植到 .NET 分析器的旧分析规则的信息,请参阅 Fxcop 规则端口状态

代码分析警告被视为错误

如果项目使用生成选项将警告视为错误,分析器警告可能会显示为错误。 要防止代码分析警告被视为错误,请执行代码分析 FAQ 中的步骤。

  • .NET Compiler Platform 分析器概述
  • 迁移到 .NET 分析器
  • 安装 .NET 分析器
  •