使用Roslyn分析仪更快地编写更好的代码

Roslyn是.NET编译器平台,甚至可以在运行代码之前帮助您捕获错误。 一个例子是Visual Studio中内置的Roslyn的拼写检查分析器。 假设您正在创建一个静态方法,并且将单词static 拼为statc 。 在运行代码之前,您将能够看到此拼写错误,因为Roslyn甚至在您完成代码行之前就可以在您输入的代码中产生警告。 换句话说,您不必构建代码即可发现自己犯了一个错误。



Roslyn分析仪还可以通过Visual Studio灯泡图标显示自动代码修复功能,该代码可让您立即修复代码。



但是,如果您可以捕获更多错误,该怎么办?


让我向您介绍Roslyn分析仪软件包。 这些分析器集合提供了更详细的分析,但未附带默认的Visual Studio工具。 要了解有关我们最喜欢的Roslyn分析仪的更多信息,请访问我们的Roslyn分析仪GitHub存储库 。 该存储库包含FxCop规则,这些规则仍然适用于现代软件开发,但现在以我们基于Roslyn的现代代码分析平台为目标。 让我们继续安装此软件包,以提高生产力并更快地编写更好的代码!

要将FxCop分析仪作为NuGet软件包安装:

  1. 假设您使用的是Visual Studio 2017 15.8版或更高版本,请选择Microsoft.CodeAnalysis.FxCopAnalyzers的最新版本。
  2. 使用程序包管理器UI在Visual Studio中安装程序包。



一旦安装了软件包,就可以从解决方案资源管理器中自定义分析仪诊断。 分析器节点将出现在解决方案资源管理器中的“引用或依赖项”节点下。 如果展开分析仪,然后展开其中一个分析仪部件,则可以看到部件中的所有诊断信息。



您可以在属性窗口中查看诊断的属性,包括其描述和默认严重性。 要查看属性,请在规则上单击鼠标右键,然后选择“属性”,或选择规则,然后按Alt + Enter。



在解决方案资源管理器中,每个诊断旁边的图标与您在编辑器中打开规则集时看到的图标相对应:

  • 圆圈中的“ i”表示信息的严重性
  • “!” 三角形表示警告的严重性
  • 圆圈中的“ x”表示错误的严重性
  • 浅色背景上的圆圈中的“ i”表示严重程度为“隐藏”
  • 圆圈中的“↓”表示诊断被抑制



然后,您可以从解决方案资源管理器中设置规则集的严重性。 在解决方案资源管理器中,展开“依赖关系”>“分析器”。 展开包含要为其设置严重性的规则的程序集。 右键单击规则,然后选择“设置规则集严重性”,然后在弹出菜单中选择严重性选项之一。



如果将规则严重性设置为警告,您将在代码中收到该特定规则集的警告。



现在,您了解了分析器的工作方式,可以提高生产率并更快地编写更好的代码!

常见问题解答:


问:此警告出现在Visual Studio中:“不赞成使用运行代码分析,而建议使用在构建过程中运行的FxCop分析器。 请参阅https://aka.ms/fxcopanalyzers迁移到FxCop分析器。” 这是什么意思?

答:FxCop是比Roslyn早十年的代码分析引擎。 就像我们将编译器向前移动(例如,引入了Roslyn)一样,我们也将代码分析技术向前移动到Roslyn平台。 由于它由.NET编译器平台提供支持,因此在您键入时可以在代码中产生警告。 换句话说,您不必构建代码即可发现自己犯了一个错误。

问:FxCop分析仪和旧版FxCop有什么区别?

答:FxCop分析器可以在编译过程中实时分析源代码,而旧版FxCop是静态代码分析,并在构建完成后分析二进制文件。 有关更多信息,请参阅罗斯林分析仪与。 静态代码分析FxCop分析器常见问题

问:我可以编写自定义分析器吗?

A:当然! 此处提供了有关如何编写分析器的文档

问:我应该使用Roslyn分析器还是.editorconfig来编写代码样式?

答:Roslyn分析器和.editorconfig文件是并行工作的。 在.editorconfig文件文本编辑器选项页中定义代码样式 ,实际上是在配置Visual Studio内置的Roslyn分析器。

问:分析仪是否在持续集成(CI)版本中工作?

答:是的,可以在CI版本中强制执行以NuGet软件包形式安装的分析仪。

问:在哪里可以请求更多分析仪或报告错误?

答:您可以在GitHub的Roslyn存储库中请求更多分析器并报告错误。

Source: https://habr.com/ru/post/zh-CN459838/


All Articles