建立标准编码规则-自定义C#代码分析器

1.下载Roslyn的Visual Studio分析器模板插件(VS2015 或VS2017)

https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.NETCompilerPlatformSDK

我后来查询到官方说明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.

Roslyn(https://github.com/dotnet/roslyn)

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[0], 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

时间: 2024-11-18 02:26:06

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

建立标准编码规则-罗斯林语法工具 Roslyn Syntax Visualizer

当我们要编写一个规则,例如 检测正值表达式的时候,如何编写有效的规则呢 Regex.Match("my text", @"\pXXX"); 这里我们可以借助分析工具 Roslyn Syntax Visualizer,在 视图>其他窗口>Syntax Visualizer 当我们在ConsoleApp项目中编写如下代码 namespace ConsoleApp1 { class Program { static void Main(string[] arg

建立标准编码规则(五)-工程结构

为什么 1 好的项目工程结构事过功倍 2 好的项目工程结构可以复用 3 建立标准化,增加可读性易维护性 工程结构原则 1 非业务与业务部分分开 例如我们的静态函数方法放一个类库,这种类库是千万年不变的 2 通用业务功能编写接口并独立于业务项目之外包括缓存.日志.定时任务.事件.异常等 例如我们所有的项目都有日志,异常处理,那么我们可以编写接口规范 3 DAO 数据访问层独立于服务层Services 4 外部第三方库或第三方接口api独立管理 5 服务层Services编写业务逻辑 6 展示层使用

Python编码规则

1. 命名规则 1.1 变量名.包名.模块名 变量名通常有字母.数字和下划线组成,且首字母必须是字母或下划线,并且不能使用python的保留字:包名.模块名通常用小写字母 1.2 类名.对象名 类名首字母用大写,其他字母采用小写:对象名用小写字母.类的属性和方法名以对象作为前缀,对象通过操作符"."访问属性和方法.类的私有变量.私有方法以两个下划线作为前缀. l.3 函数名     函数名通常采用小写,并用下划线或单词首字母大写来增加名称的可读性,导入的函数以模块名作为前缀. 2. 模

UTF-8编码规则(转)

UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现. UTF-8是一种变长字节编码方式.对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0:如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位

通用的业务编码规则设计实现

一.背景 每一个企业应用中不可避免的都会涉及到业务编码规则的问题,比如订单管理系统中的订单编号,比如商品管理系统中的商品编码,比如项目管理系统中的项目编码等等,这一系列的编码都需要管理起来,那么它们的应该如何编码的,具体的编码规则我们很多时候都是直接写在程序当中 常用的的编码有: 1.数据库自增长ID或最大值加1 2.GUID 3.时间戳 4.常量+自增长 5.常量+时间戳+自增长 6.根据单据属性编码 比如商品编码:第X是代码商品颜色,第Y位是代码商品产地 7.自定义函数处理返回 8.其它 添

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

一.背景 每一个企业应用中不可避免的都会涉及到业务编码规则的问题,比如订单管理系统中的订单编号,比如商品管理系统中的商品编码,比如项目管理系统中的项目编码等等,这一系列的编码都需要管理起来,那么它们的应该如何编码的,具体的编码规则我们很多时候都是直接写在程序当中 常用的的编码有: 1.数据库自增长ID或最大值加1 2.GUID 3.时间戳 4.常量+自增长 5.常量+时间戳+自增长 6.根据单据属性编码 比如商品编码:第X是代码商品颜色,第Y位是代码商品产地 7.自定义函数处理返回 8.其它 添

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

从开源项目学习 C 语言基本的编码规则 每个项目都有自己的风格指南:一组有关怎样为那个项目编码约定.一些经理选择基本的编码规则,另一些经理则更偏好非常高级的规则,对许多项目而言则没有特定的编码规则,项目中的每个开发者使用他自己的风格. 所有代码都保持一致风格的大型库,更容易让人理解. 有许多资源是关于能让人采取的更好的编码规则的,我们可以通过以下方式学到好的编码规则: 阅读书或杂志 浏览网站 与同事交流 参加培训 另一个更有趣的方法是通过研究一个成熟的知名开源项目来得知其开发者是怎样编写代码的.

sublime自定义snippet代码片段

相信很多人喜欢sublime编辑工具有两个原因:第一sublime很轻巧方便:第二sublime提供很多自定义拓展功能,包括很简单且和很好用的代码片段功能snippet文件. 今天,在这里就介绍下sublime如何自定义各种代码片段,先来感受一下效果: 上面看到的是我用sublime初始化一个html文件的操作gif,相信这是很多人在新项目必经的步骤.而我里面不同的时,不需要任何复制,只需几秒钟就完成整个初始化的工作,这就是sublime的魅力之一:代码片段snippet. 下面我就拿上面的动画

WEB前端 [编码] 规则浅析

前言 说到前端安全问题,首先想到的无疑是XSS(Cross Site Scripting,即跨站脚本),其主要发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被预期的脚本指令并执行时,XSS就会发生.XSS有三类: 反射型XSS:发出请求时,XSS代码出现在URL中,作为输入提交到服务端,服务端解析后响应,在响应内容中出现这段XSS代码,最后浏览器解析执行,此过程就像一次反射: 存储型XSS:它与反射型XSS的差别仅在于--提交的XSS代码会存储在服务端,