1. 程式人生 > >StyleCop 程式碼審查(VS外掛)

StyleCop 程式碼審查(VS外掛)

程式碼審查:StyleCop  (介紹,下載,使用,自定義規則,原始碼)
StyleCop簡介:
StyleCop是程式碼規範檢查工具(Code Review 工具),它不僅僅檢查程式碼格式,而是編碼規範,包括命名和註釋等。StyleCop可以幫助你更容易地進行這項活動。StyleCop現在包含了 200 個左右的最佳實踐規則(best practice rules),這些規則與 Visual Studio 2005 和 Visual Studio 2008 中預設的程式碼格式化規則是一致的。它會根據預定義的C#程式碼格式的最佳實踐,對我們的原始碼進行檢查,並給出不符合編碼風格的錯誤提示。這一點來說與微軟的另一個程式碼檢查工具 FxCop 很相似,但 FxCop 是對 dll (compiled binaries) 進行檢查,所以 FxCop 適用於新專案通過持續整合工具來使用的情況。也就是說 FxCop 是專案級別的,而 StyleCop是程式碼級別的,更適合於程式設計師在程式設計過程中使用。
StyleCop檢查的常用規則:

Documentation Rules 文件規則
Layout Rules 佈局規則
Maintainability Rules 可維護性規則
Naming Rules 命名規則
Ordering Rules 程式碼順序規則
Readability Rules 可讀性規則

Spacing Rules 間距規則

關於規則的解讀:

http://blog.csdn.net/zzh920625/article/details/51637793

StyleCop下載地址:

http://stylecop.codeplex.com/releases/view/621306


StyleCop自定義規則:


1.vs-建立-類庫
2.vs-建立-類
3.vs-建立-xml檔案
4.vs-將專案生成dll檔案
5.vs-將生成的dll檔案放在StyleCop安裝的根目錄下就OK
注意:
1.目標框架(.NET Framework 3.5)可忽略
2.建立的類名與xml檔名相同

3.需要引用using StyleCop;using StyleCop.CSharp;

4.xml檔案,屬性,生成操作,選擇嵌入的資源

StyleCop自定義規則案例:
類:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using StyleCop;
using StyleCop.CSharp;

namespace 方法名首字母大寫Rules
{
    [SourceAnalyzer(typeof(CsParser))]
    public class CustomAnalyzer : SourceAnalyzer
    {
        public override void AnalyzeDocument(CodeDocument document)
        {
            CsDocument doc = (CsDocument)document;

            if (doc.RootElement == null || doc.RootElement.Generated) return;
            doc.WalkDocument(CheckClasses);
        }
        private bool CheckClasses(CsElement element, CsElement parentElement, object context)
        {
            if (element.ElementType != ElementType.Method) return true;
            Method methodElement = (Method)element;
            string firstLetter = methodElement.Declaration.Name.Substring(0, 1);
            if (firstLetter.ToUpper().Equals(firstLetter) == false)
            {
                AddViolation(methodElement, methodElement.Location, "MethodBighumpNames", methodElement.FriendlyTypeText);
            }
            return true;
        }
    }
}
xml檔案:

<?xml version="1.0" encoding="utf-8" ?>
<SourceAnalyzer Name="方法名首字母大寫 Rules">
  <Description>
    方法名首字母大寫 Rules.
  </Description>
  <Rules>
    <Rule Name="MethodBighumpNames" CheckId="CR0001">
      <Context>方法名必須以大寫字母開始</Context>
      <Description>Public method must begin with upper case letter.</Description>
    </Rule>
  </Rules>
</SourceAnalyzer>

StyleCop警告提示變為錯誤提示:

StyleCop4.7

1.在安裝StyleCop的是候有一個MSBuild integration的選項,它預設是不安裝的,所以安裝的時候記得選擇(*預設路徑C:\Program Files (x86)\StyleCop 4.7)

2.安裝之後:C:\Program Files (x86)\MSBuild\StyleCop\v4.7 的資料夾下會有一個StyleCop.Targets檔案,開啟檔案將裡面的位元組<UsingTask>一行

改為<UsingTask AssemblyFile="StyleCop.dll" TaskName="StyleCopTask"/>儲存

3.配置你的專案,開啟你的專案目錄,其中會有一個.csproj檔案,使用記事本之類的工具開啟,在第一個PropertyGroup 節末端新增

<StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>

在<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />後面新增<Import Project="$(ProgramFiles)\MSBuild\StyleCop\v4.7\StyleCop.targets" />

4.重新開啟專案

注意:

如果不是StyleCop4.7版本的,預設安裝路徑可能會不同,StyleCop.Targets檔案名及路徑也會不同,所以<Import>節中的路徑要改