首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

译 | 使用Roslyn分析器高效编写更好的代码

Roslyn 分析仪还可以通过 Visual Studio 灯泡图标显示自动代码修复,从而允许您立即修复代码。 ? 但是,如果你能捕捉到更多的错误呢? 让向您介绍 Roslyn 分析器包。...使用包管理器 UI Visual Studio 安装包。 ? 安装包后,只需从解决方案资源管理器自定义分析器诊断。分析器节点将显示解决方案资源管理器的"引用"或"依赖项"节点下。...有关详细信息,请参阅 Roslyn 分析器与静态代码分析(1) FxCop 分析器常见问题解答(2)。 问:可以编写自定义分析器吗? 答:当然可以!有关如何编写分析器的文档,请参阅此处(3)。...问:应该使用 Roslyn 分析器还是 .editorconfig 规范代码样式? 答:Roslyn 分析器 .editorconfig 文件是齐头并进的。... .editorconfig 文件或文本编辑器选项页上定义代码样式时,实际上正在配置内置于 Visual Studio Roslyn 分析器。 问:分析器持续集成 (CI) 生成工作吗?

2.3K30

基于 Roslyn 同时为 Visual Studio 插件 NuGet 包开发 .NETC# 源代码分析器 Analyzer 修改器 CodeFixProvider

本文将基于 Roslyn 开发一个 C# 代码分析器,你不止可以分析器作为 Visual Studio 代码分析重构插件发布,还可以作为 NuGet 包发布。...无论哪一种,你都可以支持 Roslyn 分析器扩展的 IDE(如 Visual Studio获得如下面动图所展示的效果。...可以很容易看出,如果我们这个分析器带有多个诊断建议,那么只读集合返回多个 DiagnosticDescriptor 的实例。...// 模板自带的实现,这里判断类名是否包含小写字母,如果包含则创建一个新的诊断建议改为大写字母。...将在其他的博客说明如何编写使用分析器项目的单元测试。

40320
您找到你想要的搜索结果了吗?
是的
没有找到

.NET 可移植性分析器

可移植性分析器作为 Visual Studio Extension 提供,用于分析每个项目的一个程序集;也可以作为 ApiPort 控制台应用提供,用于按指定文件或目录分析程序集。...如何使用 .NET 可移植性分析器 若要开始 Visual Studio 中使用 .NET 可移植性分析器,必须先从 Visual Studio Marketplace 下载扩展并进行安装。...解决方案范围视图 分析包含多个项目的解决方案一个很有用的步骤是,可视化依赖项了解程序集中各个子集的依赖关系。 一般的建议是,从依赖项关系图中的叶节点开始,自下而上的方式应用分析结果。...若要在 Visual Studio 中分析整个项目,请在“解决方案资源管理器”右键单击该项目,然后选择“分析程序集可移植性” 。...查看和解释可移植性结果 报表仅显示目标平台不支持的 API。 Visual Studio 运行分析后,你将看到弹出的 .NET 可移植性报表文件链接。

1.1K40

Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码

作为 Roslyn 入门篇文章,你将可以通过本文学习如何开始编写一个 Roslyn 扩展项目,如何开始分析一个解决方案(.sln)项目(.csproj)的代码文件(.cs)。...---- 本文是 Roslyn 入门系列之一: Roslyn 入门:使用 Visual Studio 的语法可视化(Syntax Visualizer)窗格查看和了解代码的语法树 Roslyn 入门:使用...▲ Visual Studio 新建项目,选择“控制台程序(.NET Framework)” 目前(2018-06-02 01:26),如果我们需要像本文一样分析现有的解决方案项目,那么 .NET...CSharpSyntaxRewriter 基类代码把它贴出来可以帮助我们理解它。...访问泛型参数 现在,我们继续之前打开解决方案项目文件代码后面增添代码: // 从我们一开始打开的项目文件获取语法树。

1.7K10

推荐 .NETC# 开发者安装的几款代码分析插件或对应的代码分析 NuGet 包

随着 Roslyn 的发布,带来了越来越多更强大的代码分析器可以编写高质量的代码带来更多的帮助。 作为 .NET/C# 开发者,强烈建议安装本文推荐的几款代码分析器。...Visual Studio 扩展形式的分析器可以让你一次安装对所有项目生效,但缺点是不能影响编译过程,只能作为 Visual Studio 编写代码时给出提示。...Visual Studio 2019 自带的分析器的诊断 ID 都是以 IDE 开头,因此你可以通过这个前缀来区分是否Visual Studio 2019 自带的分析器提示的。...提供了 500 多个代码分析重构。更值得推荐的一个原因是他为 Visual Studio 原本的很多报告了问题的代码提供了生成解决问题代码的能力。...如果说其他几款分析器可以帮你解决一些基本设计问题或者 Bug 的话,这款分析器可以帮你发现更大范围的问题。 最典型的,也是推荐这款分析器的最大原因是 —— 区域本地化!

50230

从零开始学习 dotnet 编译过程 Roslyn 源码分析

dotnet build 基础 你需要先了解 csproj 文件的结构,以便进行后续的学习: 理解 C# 项目 csproj 文件格式的本质编译流程 - 吕毅 项目文件的已知属性(知道了这些,就不会随便在...csproj 写死常量啦) - 吕毅 Roslyn 项目文件使用条件判断 - 林德熙 了解到 csproj 文件结构之后,你可以通过迁移一些项目,并确保他们编译通过来练习: 将 WPF、UWP...Code of Microsoft.NET.Sdk, Writing the Creative Extension of Compiling - 吕毅 还有一些 csproj 特性的使用: .NET/C# 可以代码多个...Main 函数,然后按需要随时切换 - 吕毅 Visual Studio解决方案资源管理器隐藏一些文件 - 吕毅 使用链接共享 Visual Studio 代码文件 - 吕毅 为 Visual...Studio 使用通配符批量添加项目文件 - 吕毅 Roslyn 使用 Directory.Build.props 管理多个项目配置 - 林德熙 Roslyn 使用 Directory.Build.props

24740

提高使用 Visual Studio 开发效率的键盘快捷键

而且因为 Roslyn 优秀的 API,有更多扩展可以使用此快捷键生效,详见:基于 Roslyn 同时为 Visual Studio 插件 NuGet 包开发 .NET/C# 源代码分析器 Analyzer...转到所有 不能每次都去解决方案里面一个个找文件,对吧!所以一个快速搜索文件符号的快捷键也是非常能够提升效率的。...Ctrl + , 转到所有(go to all) 不过建议将其改成: Ctrl + N 这是 ReSharper 默认的转到所有(Goto Everything)的快捷键 这可以帮助你快速找到整个解决方案的所有文件或符号...Ctrl + O 查找当前文件的所有成员(只搜一个文件,这可以大大提高命中率) Ctrl + T 转到符号(只搜类型名称、成员名称) Ctrl + G 查找当前文件的行号(比如你代码审查中看到一行有问题的代码...K, Ctrl + L 删除所有书签(会有对话框提示的,不怕误按) 如果配合书签面板,那么可以调查问题的时候很方便在找到的各种关键代码处跳转,避免每次都寻找。

31220

使用 .editorconfig 配置 .NETC# 项目的代码分析规则的严重程度

随着 Visual Studio 2019 更新, Visual Studio 编写代码的时候也带来了基于 Roslyn代码质量分析。...另外,你甚至可以整个代码仓库的外部文件夹放一个 .editorconfig 文件,这样,如果项目中没有对应的规则,那么外面文件的 .editorconfig 规则就会生效,这相当于间接做了一个全局生效的规则集...提示有问题的代码上按下重构快捷键(默认是 Ctrl + .),可以出现重构菜单,其中就有配置规则严重性的选项,直接选择即可自动添加到 .editorconfig 文件。...如果项目中没有 .editorconfig 文件,则会自动解决方案同目录下创建一个新的。...对这部分快捷键不了解的话可以阅读:提高使用 Visual Studio 开发效率的键盘快捷键 - walterlv。

26830

使用 Source Generator 在编译你的 .NET 项目时自动生成代码

本文将带你为你的某个库添加自动生成代码的逻辑。 本文 dotnetCampus.Ipc 项目为例,来说明如何为一个现成的 .NET 类库添加自动生成代码的功能。...这是一个本机内进行进程间通信的库,在你拥有一个 IPC 接口对应的实现之后,本库还会自动帮你生成通过 IPC 代理访问的代码。...: 开始编写一个基本的代码生成器 使用代码生成器生成需要的代码代码生成器加入到现有的 NuGet 包 调试代码生成器 一个基本的代码生成器 创建一个项目,例如 dotnetCampus.Ipc.Analyzers...至少要包含以下内容: TargetFramework 必须是 netstandard2.0,目前(Visual Studio 2022 MSBuild 17)不支持其他任何框架。...而我 dotnetCampus.Ipc 库编写的生成代码会稍微复杂一点,会根据项目中标记了 IpcPublic 的类的代码动态生成对这个类的代理访问对接代码,使用的是 Roslyn 进行语义分析。

43830

.Net 编译器平台 --- Roslyn

支持对源代码进行静态分析,以便在编译期间检测潜在的代码问题。也支持编写自定义诊断代码修复,这使得开发人员可以根据自己的需求创建特定的诊断修复工具。...Roslyn SDK预览版包含了用于代码生成、分析重构的最新语言对象模型的草案。 我们希望未来的预览版包含用于脚本编写交互使用C#Visual Basic的API支持的草案。...这些体验可以Visual Studio 2013上通过“Roslyn”终端用户预览版预览。这个预览版是为了构建和测试基于Roslyn SDK的应用程序,并用于集成到Visual Studio。...但是,不需要终端用户预览版,可以独立于Visual Studio自己的应用程序中使用Roslyn API。 API 层 Roslyn由两个主要的API层组成——编译器API工作区API。...例如,C# 或 Visual Basic 的迭代器方法是一个单一的符号。然而,当迭代器方法被翻译为 CLR 元数据时,它是一个类型多个方法。

24030

使用 Roslyn 对 C# 代码进行语义分析

Roslyn 是微软为 C# 设计的一套分析器,它具有很强的扩展性。以至于我们只需要编写很少量的代码便能够分析我们的源代码。之前写过一些使用 Roslyn 进行语法分析的文章。...使用语法分析,可以轻松为代码编写提供各种错误报告以及修改代码(见这里)。而使用语义分析,你可以像在运行时使用反射一样,在编译时访问源代码的各种类型、属性、方法等,特别适合用来分析引用、生成代码等。...如果你正在编写代码分析器(Analyzer)修改器(CodeFix) 代码分析器修改器的入口方法可以得到一个 SyntaxNodeAnalysisContext 类型的参数,这个参数里面就可以拿到...关于代码分析器(Analyzer)修改器(CodeFix)可以参考之前的这些博客: 可参考:基于 Roslyn 同时为 Visual Studio 插件 NuGet 包开发 .NET/C# 源代码分析器...来追踪项目的 API 改动,帮助保持库的 API 兼容性 - walterlv 可参考:使用 Roslyn 分析代码注释,给 TODO 类型的注释添加负责人、截止日期 issue 链接跟踪 - walterlv

35520

Roslyn 入门:使用 .NET Core 版本的 Roslyn 编译并执行跨平台的静态的源码

曾经 生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型 一文中提到过这样的想法,在这篇文章希望只编写泛型的一个参数的版本 Demo,然后自动生成 2~16 个参数的版本...不过,在那篇文章写了一个应用程序来完成这样的事情。另一篇文章 如何创建一个基于命令行工具的跨平台的 NuGet 工具包 说到我们可以将这样的应用程序打包成一个 NuGet 工具包。...于是,想到可以使用 Roslyn项目中编写一段转换代码,我们使用通用的方式去编译执行这段代码,以便完成各种各样日益增加的类型转换需求。...准备工作 与之前 Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码 的不同,我们这次无需打开解决方案或者项目,而是直接寻找并编译源代码文件。...准备一份用于编译执行代码文件 直接使用 生成代码,从 T 到 T1, T2, Tn —— 自动生成多个类型的泛型 这篇文章的例子。把其中最关键的文件拿来用于编译生成试验。

1.3K10

Succinctly 中文系列教程(二) 20220109 更新

Succinctly Roslyn 教程 零、简介 一、Roslyn 项目:.NET 编译器平台 二、Visual Studio 2015 的编码:Roslyn 驱动的体验 三、穿越 Roslyn:...架构、API、语法 四、编写代码分析器 五、代码重构 六、向 NuGet 部署分析器 七、将分析器重构部署到 Visual Studio 图库 八、工作区,代码生成,发出 Succinctly SciPy...VS2013 教程 零、简介 一、同步设置通知 二、起始页回顾 三、代码编辑器改进 四、XAML 智能感知的改进 五、用于 Web Windows Azure 的 Visual Studio...代码编辑器的改进 四、XAML 编辑改进 五、IDE 定制:窗口布局 六、回顾错误列表调试改进 七、管理 NuGet 包 八、ASP.NET Azure 的 Visual Studio 2015...五、保存部分文件的附加程序 六、测试您的附加程序 七、Visual Studio 环境 八、解决方案 九、项目 十、IDE 窗口 十一、文件 十二、代码窗口 十三、代码模型 十四、工具窗口 十五、源代码生成

5.9K20

.NET 源代码分析概述

.NET Compiler Platform (Roslyn) 分析器会检查 C# 或 Visual Basic 代码代码质量样式问题。...提示 如果使用的是 Visual Studio,则许多分析器规则都有相关的代码修补程序,可以应用它们来纠正问题。 代码修补程序显示在灯泡图标菜单。...从 .NET 5 开始,无论是命令行还是 Visual Studio 内,你都可以在生成时启用代码样式分析。 代码样式冲突显示为带有“IDE”前缀的警告或错误。...这使你能够在生成时强制执行一致的代码样式。 Visual Studio:默认情况下,代码样式分析作为代码重构快速操作对 Visual Studio 的所有 .NET 项目启用。...另请参阅 代码质量分析规则引用 代码样式分析规则引用 Visual Studio 代码分析 .NET 编译器平台 SDK 教程:编写一个分析器代码修补程序

1.7K20

Roslyn 入门:使用 Visual Studio 的语法可视化(Syntax Visualizer)窗格查看和了解代码的语法树

,我们可以实时看到一个代码文件的语法树。...这对我们基于 Roslyn 编写静态分析修改工具非常有帮助。本文将介绍如何安装它使用它。...正在分析的代码文件是 MSTestEnhancer 的 ContractTestContext.cs;也就是的另一篇文章 Roslyn 入门:使用 Roslyn 静态分析现有项目中的代码 中所采用的例子...如果你是 Visual Studio 2017.6,并且安装 Visual Studio 时选择了 Visual Studio 扩展,那么你什么都不用做就已经安装好了。...现在,我们代码文件任意地移动光标、选择代码块,都可以 Syntax Visualizer 中看到对应的语法节点。这对我们基于 Roslyn 编写静态分析修改工具非常有帮助。

1K20

.NET 的工具诊断

本文中,您将了解 .NET 开发人员可用的各种工具。使用 .NET,您将拥有一个强大的软件开发工具包 (SDK),其中包括一个命令行界面 (CLI)。.....NET 命令行界面 .NET CLI 是一个跨平台的工具链,用于开发、构建、运行发布 .NET 应用程序。.NET CLI 包含在 .NET SDK 。...集成开发环境 您可以Visual Studio Code、Visual StudioVisual Studio for Mac 编写 .NET 应用程序。...诊断仪表 作为 .NET 开发人员,您可以使用常见的性能诊断工具来监控应用性能、使用跟踪分析应用、收集性能指标以及分析转储文件。您使用事件计数器收集性能指标,并使用分析工具深入了解应用程序的性能。...代码分析 .NET 编译器平台 (Roslyn) 分析器检查您的 C# 或 Visual Basic 代码是否存在代码质量代码样式问题。有关详细信息,请参阅.NET 源代码分析概述。

59800

代码分析的配置选项

其他选项(配置代码分析作为整体)可用作项目文件的属性。 最常见的配置选项是规则的严重性。 你可以为任意规则(包括代码质量规则代码样式规则)配置严重性级别。...例如,若要启用某个规则作为警告,可以分析器配置文件文件添加以下键值对: dotnet_diagnostic....suggestion 违规行为生成消息形式出现, Visual Studio IDE 建议形式出现。 silent 违规行为对用户不可见。 none 完全禁止显示规则。...Roslyn 分析器存储库列出了每个 .NET 版本的默认严重性。 该表,“禁用”与 none 对应,“隐藏”与 silent 对应,“信息”与 suggestion 对应。...提示 若要了解规则严重性 Visual Studio 的显示方式,请参阅严重性级别。 范围 单一规则 若要为单个规则设置规则严重性,请使用以下语法。 dotnet_diagnostic.

83430

Visual Studio 2022 出来啦!教你如何将 VS2019 的 VSIX 扩展插件项目迁移到 VS2022

如果你正好有一个Visual Studio 2019(或更早)开发的插件,那么可以通过阅读本文完成对插件项目的升级,支持 Visual Studio 2022。...至此,你再编译这个 Visual Studio 扩展项目,即可正常在旧的 Visual Studio 2019 新的 Visual Studio 2022 上安装: 完整改法 如果你比较强迫症,还是建议你完整改完整个项目...前者提供编写调试扩展的能力,而后者提供了新建模板 Roslyn 相关工具。...第二步:重新创建 VSIX 项目 新建一个 VSIX 项目: 第三步:复制并替换整个扩展文件可以把新创建项目的 csproj 文件 source.extension.vsixmanifest 文件替换掉原项目的这两个文件...如果需要一个修改示例,你可以看我的一个 Pull Request(拉取请求): 为插件添加 Visual Studio 2022 的支持 by walterlv · Pull Request #28 ·

48750

.Net Core 你必须知道的source-generators

源生成器是 C# 9 引入的一项功能,允许在编译过程动态生成代码。 它们直接与 C# 编译器集成(Roslyn)并在编译时运行,分析源代码并根据分析结果生成附加代码。...源生成器提供了一种简化的自动化代码生成方法,无需外部工具或单独的预编译步骤。 通过无缝集成到编译过程,源生成器可以提高生产力、减少错误并实现更高效的开发工作流程。...新引用不是传统的项目引用,必须手动编辑包含 OutputItemType ReferenceOutputAssembly 属性。...控制台应用程序本身不实现 HelloFrom 方法,而是在编译过程从源生成器项目生成的源。 如果使用的是 Visual Studio,则可以看到源生成的文件。...解决方案资源管理器”窗口中,展开“依赖项”>“分析器”>“SourceGenerator”>“SourceGenerator.HelloSourceGenerator”,然后双击“Program.g.cs

8110
领券