1.下载Roslyn的Visual Studio分析器模板插件(VS2015 或VS2017)
我后来查询到官方说明vs2017已经内嵌了此功能
Want to start developing in C# and Visual Basic? Download Visual Studio 2017, which has the latest features built-in. There are also prebuilt Azure VM images available with Visual Studio 2017 already installed.
 
2.创建分析器
打开visual studio 2017 选择Extensibility中的

3.测试分析器
系统默认的分析器是一个检测类名不能使用小写的规则
 private static void AnalyzeSymbol(SymbolAnalysisContext context)
{
// TODO: Replace the following code with your own analysis, generating Diagnostic objects for any issues you find
var namedTypeSymbol = (INamedTypeSymbol)context.Symbol; // Find just those named type symbols with names containing lowercase letters.
if (namedTypeSymbol.Name.ToCharArray().Any(char.IsLower))
{
// For all such symbols, produce a diagnostic.
var diagnostic = Diagnostic.Create(Rule, namedTypeSymbol.Locations[], namedTypeSymbol.Name); context.ReportDiagnostic(diagnostic);
}
}
运行F5,系统回新建一个vs副本窗口,我们新建一个consoleapp应用程序,

我们可以在分析器项目中设置断点,查看具体的运行效果,如我手动改Program为Program2,分析器就会侦测到改动,运行分析器代码,具体断点效果如下:

总结:
官方已经提供了一个完整的机遇Roslyn的代码分析器自定义模板;
我们需要新建基于此模板的分析器程序就可以了;
我们可以根据公司的项目规定按指定的规则设计代码分析器规则;

参考:C# and Visual Basic - Use Roslyn to Write a Live Code Analyzer for Your API

 

建立标准编码规则(一)-自定义C#代码分析器的更多相关文章

  1. 建立标准编码规则(三)-CodeFixProvider 给代码分析器增加修复建议

    给代码分析器增加修复建议 既然代码分析器,向代码编写者提出了错误或警告,那么有没有可能向代码编写者提交有效的改进建议? 相对于 DiagnosticAnalyzer,代码修复继承与 CodeFixPr ...

  2. 建立标准编码规则(四)-C#编码规范分类及实现

    1 现实中的问题 在任何一个公司,每个程序员编写的习惯可能都是不一样的,大到命名空间,小到变量的名字.甚至,我们去github,里面的大牛每个开源的项目的命名规则可能都不一样. 我们通常会遇到下面的问 ...

  3. 建立标准编码规则(二)-DiagnosticAnalyzer 增加诊断分析代码

    1.使用语法树 当我们要编写一个规则,例如 检测正值表达式的时候,如何编写有效的规则呢 Regex.Match("my text", @"\pXXX"); 这里 ...

  4. UTF-8编码规则(转)

    from:http://www.cnblogs.com/chenwenbiao/archive/2011/08/11/2134503.html UTF-8是Unicode的一种实现方式,也就是它的字节 ...

  5. 转:从开源项目学习 C 语言基本的编码规则

    从开源项目学习 C 语言基本的编码规则 每个项目都有自己的风格指南:一组有关怎样为那个项目编码约定.一些经理选择基本的编码规则,另一些经理则更偏好非常高级的规则,对许多项目而言则没有特定的编码规则,项 ...

  6. 通用的业务编码规则设计实现[转:http://www.cnblogs.com/xqin/p/3708367.html]

    一.背景 每一个企业应用中不可避免的都会涉及到业务编码规则的问题,比如订单管理系统中的订单编号,比如商品管理系统中的商品编码,比如项目管理系统中的项目编码等等,这一系列的编码都需要管理起来,那么它们的 ...

  7. UTF-8编码规则

    UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所 ...

  8. openssl ans.1编码规则分析及证书密钥编码方式

    1 数据编码格式 openssl的数据编码规则是基于ans.1的,ans.1是什么 ? 先上高大上的解释 ASN.1(Abstract Syntax Notation One), 是一种结构化的描述语 ...

  9. UTF-8编码规则【转】

    hz_chenwenbiao UTF-8编码规则(转) UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode ...

随机推荐

  1. docker compose示例

    version: ' services: game-server: image: /tomcat: container_name: 'game-server' ports: - '8019:8019' ...

  2. Docker容器绑定外部IP和端口

    Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务. 以下操作通过myfirstapp镜像模拟,如何制作myfirstapp镜像请点击此处. 1.外部访问容器容器启动之后,容器中可以 ...

  3. Tomcat8源码笔记(三)Catalina加载过程

    之前介绍过 Catalina加载过程是Bootstrap的load调用的  Tomcat8源码笔记(二)Bootstrap启动 按照Catalina的load过程,大致如下: 接下来一步步分析加载过程 ...

  4. NLog日志框架使用探究-1

    目录 前言 为什么是NLog? 目的 配置 基本配置 日志等级 输出例子 目标 参数 规则 日志分发 日志收集 结语 参考文档 前言 日志是每个程序的基本模块.本文是为了探究如何通过NLog方便及记录 ...

  5. 深入理解Java 8 Lambda(语言篇)

    State of Lambda by Brian Goetz 原文链接:http://lucida.me/blog/java-8-lambdas-insideout-language-features ...

  6. vue实现双向绑定的简单原理: defineProperty

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. blfs(systemv版本)学习笔记-安装、配置和使用wpa_supplicant无线网络连接工具

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! wireless项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/basic ...

  8. 【代码笔记】Web-ionic-表单和输入框

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  9. 【读书笔记】iOS-iOS视频

    视频多媒体文件主要是存放视频数据信息,视频数据量要远远大于音频数据文件,而且视频编码和解码算法非常复杂,因此早期的计算机由于CPU处理能力差,要采用视频解压卡硬件支持,视频采集和压缩也要采用硬件卡.按 ...

  10. SSM环境搭建

    流程 1,maven 依赖 2,spring 配置文件 3,mybatis 配置文件 4,springMVC 配置文件 5,web.xml pom依赖 1,定义版本 <properties> ...