使用StyleCop.Analyzers进行代码审查

为何要进行代码审核?git

  1. 提前发现代码中的BUG,避免将BUG带到生产环境
  2. 极大的提升软件质量,以及可维护性
  3. 统一代码规范、提升可读性,减小新加入成员的熟悉时间
  4. 加速我的和团队的成长,知识和经验的积累

 

StyleCop.Analyzers介绍
  代码审查的方式有不少种,大致上分为人工审查和工具审查,这里咱们只说工具审查。github

StyleCop是微软的一款代码审查工具,使用它能够检查代码中的各种静态编程规范错误,从代码注释,代码布局,可维护性,命名规范,可读性等各方面对代码规范性进行检查。
重要的是,其规则能够自定义,能够屏蔽掉不适用于特定项目的规则,甚至能够自定义开发适用于各自项目的规则,它有3种使用方式:编程

  1. 做为VS扩展使用
  2. 做为ReSharper插件
  3. 与MSBuild集成

因为技术缘由StyleCop对于新C#语法的解析愈来愈困难,所以StyleCop之后仅会进行稳定性维护功能上不会有重大升级。
若是你使用VS2015与C# 6及以上建议使用StyleCop.Analyzers,它是基于Roslyn编译平台重写的。json

 

使用StyleCop.Analyzers
  本文以ASP.NET Core项目为例,其它项目大同小异。
使用StyleCop.Analyzers最简单的方式是添加NuGet包,您能够直接在VS里安装StyleCop.Analyzers 或 命令安装 Install-Package StyleCop.Analyzers工具

添加完成后您须要对它进行配置,配置文件有2个布局

  1. 规则集文件(例如:rules.ruleset),其做用为:
    • 开启或关闭特定规则
    • 配置指定规则知足时引起的错误级别,例如:错误、警告、信息等
  2. stylecop.json文件,其做用为:
    • 配置指定规则的详细参数,例如.cs文件头的copyright内容
    • 微调某些规则的行为

下面看一个规则集文件的示例:ui

<?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"表示知足此规则时让编译器产生错误,效果以下图:
spa

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" ]
  }

 

若是内置规则没法知足您的需求您还能够自定义审查规则,而后在规则集里配置,这里先埋个坑下篇再具体讲。

相关文章
相关标签/搜索