Roslyn简介
Roslyn是一个开源的C#、VB编译器,它提供了丰富的代码分析API,第三方应用可以基于这些API来开发自己的代码分析工具。Roslyn应用在VS2015及以上版本。
开发基于Roslyn的代码分析器 Roslyn提供了相关的SDK,可以通过SDK来开发自己的代码分析器:
1. 首先需要安装.Net Compiler Platform SDK:
VS2017 15.5之前的版本可以通过下面连接下载并安装:
https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.NETCompilerPlatformSDK
VS2017 15.5之后的版本可以通过Visual Studio Installer进行安装:
2. 创建一个Analyzer with Code Fix的项目:
3. 分析器代码简介:
代码结构:
创建的项目中一共有三个子项目,分别是分析器、分析器测试项目以及vsix安装包项目如下图所示:
其中分析器项目中包含了分析器(Analyzer1Analyzer)、代码修复器(Analyzer1CodeFixProvider)和相关的资源(Resources.resx)。
分析器(Analyzer1Analyzer):
分析器代码的核心内容是注册一个命名符号处理器(用于处理类名、接口名等),处理器的工作是判断分析的符合(名称)中是否包含小写字符,如果包含那么给出诊断信息(诊断信息定义包含在资源文件中)。
代码修复器:
将小写字符转换为大写:
代码调试:
将vsix项目设为启动项目,就可以对分析器进行调试,调试时VS会在沙盘中启动一个新的VS实例,通过这个VS创建一个项目,编写代码时即可看到分析器给出的诊断结果和代码修复:
诊断信息:
修复结果:
查看语法树:
常用的基于Roslyn的代码分析器
Microsoft.CodeAnalysis.FxCopAnalyzers:
FxCop是.Net Framework中用来分析托管代码的应用程序,它主要关注的代码的设计、国际化、可维护性、性能和安全性等方面,并按照这些类别定义了一个规则集: https://docs.microsoft.com/en-us/visualstudio/code-quality/code-analysis-for-managed-code-warnings
FxCopAnalyzers安装: https://www.nuget.org/packages/Microsoft.CodeAnalysis.FxCopAnalyzers
StyleCop.Analyzers
StyleCop本身就是一个用于规范代码格式的工具,所以它的规则也是面向代码格式的,如注释、布局、命名、排序、可维护性、可读性等,StyleCop的规则集参考:https://github.com/DotNetAnalyzers/StyleCopAnalyzers/tree/master/documentation
StyleCop.Analyzers的项目主页:https://github.com/DotNetAnalyzers/StyleCopAnalyzers
Codecracker.CSharp:
Codecracker.CSharp也是以个开源的代码分析器,它的规则主要是设计、命名、性能、代码风格、代码使用以及重构,具体参见:
项目主页:https://github.com/code-cracker/code-cracker
注:Codecracker.CSharp可以通过安装VS拓展工具的方式实现代码分析:https://marketplace.visualstudio.com/items?itemName=GiovanniBassi-MVP.CodeCrackerforC,其它大部分Roslyn分析器需要安装Nuget包。
SonarAnalyzer.CSharp: