(二)如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

时间:2022-06-03 07:24:50

上一篇我们讲了如何建立一个简单的Roslyn分析项目如分析检查我们的代码。

今天我们主要介绍各个项目中具体的作用以及可视化分析工具。

(二)如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

还是这种截图,可以看到解决方案下一共有三个项目。

Analyzer1 : 这是比较核心的模块,主要包括两块内容,代码问题的诊断(diagnostics )和代码问题的修复(fix),该项目编译后会生成一个analyzer DLL文件。当然,同时也会生成一个NuGet package。

Analyzer1.Vsix: 这是一个扩展插件,会把第一个项目生成的analyzer Dll文件嵌入进去。我们启动/调试项目的时候会运行Analyzer.Vsix这个项目,会生成一个VS窗口实例。(对于VS扩展插件知识,其实了解的同学如果觉得VS有些按钮或功能不足,完全可以通过自定义VS扩展插件实现自己想要的IDE功能)

Analyzer1.Test: 单侧项目不用多说,主要测试analyzer 项目代码work情况。

大家主要看看Analyzer1里的核心代码即可,当然如果要写出好的检查分析代码,则必须要借助一个工具 Syntax Visualizer :

(二)如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

这是左侧的Syntax Visualizer 语法可视化工具,当你点击任意节点时,右侧则会自动选中相关的代码或空格符号等内容。

(二)如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

简单理解,蓝色为代码结构,绿色表示一些独立的单词、数字、符号等。红色的则表示空格、注释等。

这里我找了一个Syntax Visualizer 结构树的图:

(二)如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

其代码内容为:

Regex.Match("my text", @"\pXXX"); 大家可以比对上面的图看看。

今天基本上就是这样,大家可以看一下代码,自己操作一遍。后面将会开始我们第一个诊断程序的编写。