爲何要進行代碼審覈?git
StyleCop.Analyzers介紹
代碼審查的方式有不少種,大致上分爲人工審查和工具審查,這裏咱們只說工具審查。github
StyleCop是微軟的一款代碼審查工具,使用它能夠檢查代碼中的各種靜態編程規範錯誤,從代碼註釋,代碼佈局,可維護性,命名規範,可讀性等各方面對代碼規範性進行檢查。
重要的是,其規則能夠自定義,能夠屏蔽掉不適用於特定項目的規則,甚至能夠自定義開發適用於各自項目的規則,它有3種使用方式:編程
因爲技術緣由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個佈局
下面看一個規則集文件的示例: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" ] }
若是內置規則沒法知足您的需求您還能夠自定義審查規則,而後在規則集裏配置,這裏先埋個坑下篇再具體講。