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

 

若是內置規則沒法知足您的需求您還能夠自定義審查規則,而後在規則集裏配置,這裏先埋個坑下篇再具體講。

相關文章
相關標籤/搜索