使用StyleCop.Analyzers进行代码审查
为什么要进行代码审核?
- 提早发现代码中的BUG,避免将BUG带到生产环境
- 极大的提高软件质量,以及可维护性
- 统一代码规范、提高可读性,减少新加入成员的熟悉时间
- 加速个人和团队的成长,知识和经验的积累
StyleCop.Analyzers介绍
代码审查的方式有很多种,大体上分为人工审查和工具审查,这里我们只说工具审查。
StyleCop是微软的一款代码审查工具,使用它可以检查代码中的各类静态编程规范错误,从代码注释,代码布局,可维护性,命名规范,可读性等各方面对代码规范性进行检查。
重要的是,其规则可以自定义,可以屏蔽掉不适用于特定项目的规则,甚至可以自定义开发适用于各自项目的规则,它有3种使用方式:
- 作为VS扩展使用
- 作为ReSharper插件
- 与MSBuild集成
由于技术原因StyleCop对于新C#语法的解析越来越困难,因此StyleCop以后仅会进行稳定性维护功能上不会有重大升级。
如果你使用VS2015与C# 6及以上建议使用StyleCop.Analyzers,它是基于Roslyn编译平台重写的。
使用StyleCop.Analyzers
本文以ASP.NET Core项目为例,其它项目大同小异。
使用StyleCop.Analyzers最简单的方式是添加NuGet包,您可以直接在VS里安装StyleCop.Analyzers 或 命令安装 Install-Package StyleCop.Analyzers
添加完成后您需要对它进行配置,配置文件有2个
- 规则集文件(例如:rules.ruleset),其作用为:
- 开启或关闭特定规则
- 配置指定规则满足时引发的错误级别,例如:错误、警告、信息等
- stylecop.json文件,其作用为:
- 配置指定规则的详细参数,例如.cs文件头的copyright内容
- 微调某些规则的行为
下面看一个规则集文件的示例:
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Rules for StyleCop.Analyzers" Description="Code analysis rules for StyleCop.Analyzers.csproj." ToolsVersion="14.0">
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.CSharp.NamingRules">
<Rule Id="SA1300" Action="Error" />
</Rules>
</RuleSet>
其中SA1300表示规则ID,您可以在这里找到StyleCop.Analyzers内置的所有规则ID:https://github.com/DotNetAnalyzers/StyleCopAnalyzers/tree/master/documentation
Action="Error"表示满足此规则时让编译器产生错误,效果如下图:
Action可以取值:None | Error | Warning | Info | Hidden
规则集定义的详细信息请参见:https://msdn.microsoft.com/zh-cn/library/dd264996.aspx
下面看一个stylecop.json文件的示例:
{
"$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
"settings": {
"documentationRules": {
"documentInternalElements": false,
"documentExposedElements": false
}
}
}
其中documentInternalElements表示可见性为internal的接口或类等是否要求写注释,默认为true,我们这里改为了false
具体详细信息请参见:https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/Configuration.md
接下来需要将规则集、stylecop.json文件与项目关联起来,在project.json文件的buildOptions中增加additionalArguments,例如:
"buildOptions": {
"emitEntryPoint": true,
"xmlDoc": true,
"additionalArguments": [ "/ruleset:../../StyleCop/rules.ruleset", "/additionalfile:../../StyleCop/stylecop.json" ]
}
如果内置规则无法满足您的需求您还可以自定义审查规则,然后在规则集里配置,这里先埋个坑下篇再具体讲。
使用StyleCop.Analyzers进行代码审查的更多相关文章
- C# 代码规范和质量检查工具 StyleCop.Analyzers
简介 原来一直用 ReSharper 来进行代码质量检查,不过毕竟是收费的,所以想找个免费的可以推广给公司的同事也一起用.搜索了一下,找到了StyleCop,但是我在 VS 2015里安装 Style ...
- 《代码整洁之道》(Clean Code)- 读书笔记
一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...
- 用StyleCop规范团队代码
前言 编码风格,每个人都是有不同的特点,风格各异,而且一个人在不同的时期,编码风格的差异也可能是非常大的,好比学生时代,刚工作的时候,工作一段时间后等. 在一个团队中,或一个项目中,如果出现了N种风格 ...
- asp.net core 中使用StyleCop.StyleCopAnalyzers
1.nuget中安装 StyleCop.Analyzers 当前版本1.1.0-beta004 2.在项目根目录新增 stylecop.json文件 { "settings": { ...
- 一个适合.NET Core的代码安全分析工具 - Security Code Scan
本文主要翻译自Security Code Scan的官方Github文档,结合自己的初步使用简单介绍一下这款工具,大家可以结合自己团队的情况参考使用.此外,对.NET Core开发团队来说,可以参考张 ...
- 好代码是管出来的——.Net中的代码规范工具及使用
上一篇文章介绍了编码标准中一些常用的工具,本篇就具体来介绍如何使用它们来完成代码管理. 本文主要内容有: Roslyn简介 开发基于Roslyn的代码分析器 常用的基于Roslyn的代码分析器 在.N ...
- 好代码是管出来的——C#的代码规范
代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能.稳定性.安全性等等),而另外一个重要作用是给人阅读.对于机器来说只要代码正确就能够正确的运行程序,但是人不同,如果代码 ...
- C#(.NET)面试题:做一个能自定义输入命令的表格程序
目前为止,已经面试 5 10 家了... 这个试题面试的公司是某一上市公司. 试题是英文的(后面给出翻译): you're given a task of writing a simple pro ...
- NET Core的代码安全分析工具 - Security Code Scan
NET Core的代码安全分析工具 - Security Code Scan https://www.cnblogs.com/edisonchou/p/edc_security_code_scan_s ...
随机推荐
- group by 汇总
group by 的意思为分组汇总.使用了group by 后,要求Select出的结果字段都是可汇总的,否则就会出错. 比如,有:{学号,姓名,性别,年龄,成绩}字段 这样写:SELECT 学号,姓 ...
- pyv8安装
http://www.thinksaas.cn/topics/0/400/400915.html
- AdaBoost 算法原理及推导
AdaBoost(Adaptive Boosting):自适应提升方法. 1.AdaBoost算法介绍 AdaBoost是Boosting方法中最优代表性的提升算法.该方法通过在每轮降低分对样例的权重 ...
- SQL数据库置疑修复
SQL数据库置疑修复 首先分析数据库置疑的原因,查明原因分析数据库置疑修复的方法,解决置疑后,考虑数据库置疑的预防方案. 数据库置疑产生的原因: 1.sql所在分区空间是否够?数据库文件大小是否达 ...
- 解压文件--linux
linux下不同的文件格式用不同的命令解压. 对于tar.gz文件,用以下命令. .tar.gz 和 .tgz解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileNa ...
- QStandardItemModel的简单应用
The QStandardItemModel class provides a generic model for storing custom data. QStandardItemModel提供了 ...
- PHP文件上传主要代码讲解
导读:在php开发过程中,文件上传也经常用到,这里简单介绍下. 在php开发过程中,文件上传也经常用到,这里简单介绍下. 代码如下: <?php if($_FILES['myfile'][ ...
- Pomelo聊天室框架
聊天室是验证服务器最典型的例子,Pomelo的运行架构: 在这个架构里,前端服务器也就是connector专门负责承载连接, 后端的聊天服务器则是处理具体逻辑的地方. 这样扩展的运行架构具有如下优势: ...
- overflow:hidden 你所不知道的事
overflow:hidden 你所不知道的事 overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义不是很了解. ...
- Word常用实用知识3
纯手打,可能有错别字,使用的版本是office Word 2013 转载请注明出处 http://www.cnblogs.com/hnnydxgjj/p/6322813.html,谢谢. 分页符分页 ...