C# 代碼規范和質量檢查工具 StyleCop.Analyzers


C# 代碼規范和質量檢查工具 StyleCop.Analyzers

 

簡介

原來一直用 ReSharper 來進行代碼質量檢查,不過畢竟是收費的,所以想找個免費的可以推廣給公司的同事也一起用。搜索了一下,找到了StyleCop,但是我在 VS 2015里安裝 StyleCop 或者通過 Nuget 包安裝 StyleCop.MSBuild,雖然編譯以后能把 warning 顯示在 Error List 中,但是無法通過 項目---右鍵 配置 StyleCop 的規則,最終在找到了一個 StyleCopAnalyzers 也算是 StyleCop 的新版本吧。

主要使用了 Visual Studio 2015's Roslyn 分析工具,帶來了以下的好處:

  • 可以支持 C# 6
  • 使用 Roslyn 解析器,減少了自定義解析器的性能消耗
  • 當你寫代碼的時候解析器就會運行,當你編譯的時候也會運行(不需要再設置 msbuild 任務或者安裝任何 vs 插件)

 

安裝

安裝的話比較簡單,在項目里管理 NuGet 包,輸入 StyleCop.Analyzers 然后安裝就可以了

安裝完成就直接可以看到效果了,StyleCop.Analyzers 會像 ReSharper 那樣在你寫代碼的時候就提示錯誤,而不用編譯以后才發現錯誤了。

不過編譯以后還是會把所有的錯誤提示顯示出來

 

配置自定義規則

在上面的圖片里,可以看到我的項目一共有32個 StyleCop 警告,下面我們就把 SA1652 警告去除。

找到引用里得 Analyzer,右鍵點擊 Open Active Rule Set,就可以打開規則表

然后找到 StyleCop.Analyzers 的規則 SA1652,取消勾選,然后保存。

最終會在項目里生成一個 .ruleset 后綴的文件就是我們的自定義規則。

編譯以后查看效果,就會發現前面提示的 SA1652 的警告已經沒有了。

 

 
分類:  StyleCop
-----------------------------------
 

一、StyleCop是微軟的一個開源的靜態代碼分析工具,檢查c#代碼一致性和編碼風格。

二、下載地址   http://stylecop.codeplex.com/releases/view/79972

  默認安裝目錄:C:\Program Files (x86)\StyleCop 4.7

  自己定義的dll規則也放在這個目錄下

三、使用方式:打開VS之后選擇一個類或者一個類庫右擊

技術分享

RunStyleCop運行結果:

技術分享

四:編寫自己的規則:

1、創建一個類庫,

  新建一個MyCustomAnalyzer.cs文件,引用StyleCop.dll和StyleCop.Csharp.dll

  代碼如下:

using StyleCop;  
using StyleCop.CSharp;  
  
namespace MyCustomRules  
{  
    /// <summary>  
    /// Custom analyzer for demo purposes.  
    /// </summary>  
    [SourceAnalyzer(typeof(CsParser))]  
    public class MyCustomAnalyzer : SourceAnalyzer  
    {  
        /// <summary>  
        /// Extremely simple analyzer for demo purposes.  
        /// </summary>  
        public override void AnalyzeDocument(CodeDocument document)  
        {  
            CsDocument doc = (CsDocument)document;  
  
            // skipping wrong or auto-generated documents  
            if (doc.RootElement == null || doc.RootElement.Generated)  
                return;  
  
            // check all class entries  
            doc.WalkDocument(CheckClasses);  
        }  
  
        /// <summary>  
        /// Checks whether specified element conforms custom rule CR0001.  
        /// </summary>  
        private bool CheckClasses(  
            CsElement element,  
            CsElement parentElement,  
            object context)  
        {  
            // if current element is not a class then continue walking  
            if (element.ElementType != ElementType.Class)  
                return true;  
  
            // check whether class name contains "a" letter  
            Class classElement = (Class)element;  
            if (classElement.Declaration.Name.Contains("a"))  
            {  
                // add violation  
                // (note how custom message arguments could be used)  
                AddViolation(  
                    classElement,  
                    classElement.Location,  
                    "AvoidUsingAInClassNames",  
                    classElement.FriendlyTypeText);  
            }  
  
            // continue walking in order to find all classes in file  
            return true;  
        }  
    }  
  
}  
AddViolation方法中的三個參數"AvoidUsingAInClassNames"是自己定義的規則,這個規則就是下文xml中的 Rule Name="AvoidUsingAInClassNames"

2、新建一個和類同名的xml文件

  MyCustomAnalyzer.xml內容如下:

<?xml version="1.0" encoding="utf-8" ?>  
<SourceAnalyzer Name="My Custom Rule">  
    <Description>  
        Custom rule for demo purposes.  
    </Description>  
    <Rules>  
        <Rule Name="AvoidUsingAInClassNames" CheckId="CR0001">  
            <Context>不能用A字母</Context>  
            <Description>Fires when ‘a‘ letter is used in class name.</Description>  
        </Rule>  
    </Rules>  
</SourceAnalyzer>  

  設置該xml文件屬性:編譯方式為嵌入式 (即編譯到dll中),Rules中可以放多個Rule但不要忘了改Name和Id

 3、保存並編譯

  將這個項目生成DLL,把MyCustomAnalyzer.dll放到StyleCop根目錄下。到此自定義規則就完成了。

4、使用自己的規則:

  打開VS之后選擇一個類或者一個類庫右擊,選擇 StyleCop Settings設置規則,這里可以看到自己新添的規則。

技術分享

 
-------------------------------------

C#代碼規范和質量檢查工具

 

代碼風格檢查:StyleCop

The StyleCop tool provides warnings that indicate style and consistency rule violations in C# code. The warnings are organized into rule areas such as documentation, layout, naming, ordering, readability, spacing, and so forth. Each warning signifies a violation of a style or consistency rule.

代碼缺陷檢查:FxCop

代碼分析工具,幫助您檢測和更正代碼缺陷。

托管代碼代碼分析工具分析托管程序集並報告有關程序集的信息,例如 Microsoft .NET Framework 設計准則中規定的編程和設計規則的沖突。分析工具將它在分析期間執行的檢查表示為警告。

代碼質量: 代碼度量值/Code Metrics

代碼度量是一組軟件度量值,使開發人員可以更好地了解他們正在開發的代碼。利用代碼度量,開發人員可以了解哪些類型和/或方法應該返工或進行更徹底的測試。開發團隊可以識別潛在的風險、了解項目的當前狀態,並跟蹤軟件開發的進度。

 

在StyleCop中有一些官方自己寫好的檢測規則下面就是英文的解釋

文檔規則

1、SA1600:ElementsMustBeDocumented元素必須添加注釋

2、SA1601: PartialElementsMustBeDocumented   Partial修飾的成員必須添加注釋

3、SA1602:EnumerationItemsMustBeDocumented 枚舉必須添加注釋

4、SA1603: DocumentationMustContainValidXml  注釋必須合法(注釋中的關鍵字不能有錯誤)

5、SA1604: ElementDocumentationMustHaveSummary 元素注釋必須包含Summary關鍵字

6、SA1605:PartialElementDocumentationMustHaveSummary   Partial修飾的成員注釋必須包含Summary關鍵字

7、SA1606:ElementDocumentationMustHaveSummaryText   Summary節點內部必須添加文本

8、SA1607:PartialElementDocumentationMustHaveSummaryText  Partial修飾的成員注釋Summary節點內部必須添加文本

9、SA1608:ElementDocumentationMustNotHaveDefaultSummary  Summary注釋不能使用編譯器自帶的注釋文本

10、SA1609:PropertyDocumentationMustHaveValue   屬性的注釋中必須包含<Value>節點

11、SA1610:PropertyDocumentationMustHaveValueText  屬性的注釋<Value>節點必須包含文本值

12、SA1611:ElementParametersMustBeDocumented   參數必須注釋

13、SA1612:ElementParameterDocumentationMustMatchElementParameters  參數的個數必須與注釋里的個數一致

14、SA1613:ElementParameterDocumentationMustDeclareParameterName 參數的注釋里必須有參數的名稱

15、SA1614:ElementParameterDocumentationMustHaveText    參數注釋節點里不能空着

16、SA1615:ElementReturnValueMustBeDocumented  返回值必須添加注釋

17、SA1616:ElementReturnValueDocumentationMustHaveText  返回值注釋的節點內必須有文本值

18、SA1617:VoidReturnValueMustNotBeDocumented 空返回值一定不能有返回值注釋

19、SA1618:GenericTypeParametersMustBeDocumented 生成的類型(泛型)參數必須有注釋

20、SA1619:GenericTypeParametersMustBeDocumentedPartialClass  SA1618情況如果有Partial類存在都要有注釋

21、SA1620:GenericTypeParameterDocumentationMustMatchTypeParameters 注釋與泛型必須能匹配上

22、SA1621:GenericTypeParameterDocumentationMustDeclareParameterName 泛型的注釋必須包含泛型定義是的關鍵字(如’T’)

23、SA1622:GenericTypeParameterDocumentationMustHaveText  泛型的注釋節點中必須包含文本值

24、SA1623:PropertySummaryDocumentationMustMatchAccessors  屬性的注釋必須與屬性的讀寫權限匹配,private類型的屬性不能出現在注釋里

25、SA1624:PropertySummaryDocumentationMustOmitSetAccessorWithRestrictedAccess 屬性的注釋里必須忽略protected關鍵字,當成public類型當注釋

26、SA1625:ElementDocumentationMustNotBeCopiedAndPasted  各個參數的注解不能完全相同(避免copy、post行為)

27、SA1626:SingleLineCommentsMustNotUseDocumentationStyleSlashes  單行注釋不能采取三個斜線的注釋方式,斜線的個數必須是二的倍數

28、SA1627:DocumentationTextMustNotBeEmpty   注釋節點內部不能為空(必須有文本值)

29、SA1628:DocumentationTextMustBeginWithACapitalLetter  注釋節點內部的文本必須以大寫字母開頭

30、SA1629:DocumentationTextMustEndWithAPeriod  注釋節點內部的文本必須英文的句號結束

31、SA1630:DocumentationTextMustContainWhitespace  注釋節點內部的文本必須包含空格

32、SA1631:DocumentationMustMeetCharacterPercentage 注釋節點內部的文本中不能包含過多的字符(舉例:包含’---------------------------------------’是不允許的)

33、SA1632:DocumentationTextMustMeetMinimumCharacterLength  已經作廢的規則,不允許有太短的字符串(如’A name’ 中的A字母)

34、SA1633:FileMustHaveHeader   代碼文件頭部必須有說明,一般放置版權信息

35、SA1634:FileHeaderMustShowCopyright   代碼文件頭部注解中必須包含版權關鍵字

36、SA1635:FileHeaderMustHaveCopyrightText代碼文件頭部注解中必須包含版權信息內同

37、SA1636:FileHeaderCopyrightTextMustMatch  代碼文件頭部注解中版權信息必須與設置畫面設置的內容相匹配,在”style seting”畫面的” Company Information tab”進行設置

38、SA1637:FileHeaderMustContainFileName  代碼文件頭部注解中必須包含文件名稱

39、SA1638:FileHeaderFileNameDocumentationMustMatchFileName  代碼文件頭部注解中必須包含文件名稱必須與實際的名稱匹配

40、SA1639:FileHeaderMustHaveSummary  代碼文件頭部注解中必須包含Summary節點

41、SA1640:FileHeaderMustHaveValidCompanyText 代碼文件頭部注解中版權信息必須含有合理的公司名字

42、SA1641:FileHeaderCompanyNameTextMustMatch  代碼文件頭部注解中的公司名字必須與設置畫面設置的內容相匹配,在”style seting”畫面的” Company Information tab”進行設置

43、SA1642:ConstructorSummaryDocumentationMustBeginWithStandardText  構造函數注釋標准:“Initializes a new instance of the <see cref="Customer{T}"/> class.”

44、SA1643:DestructorSummaryDocumentationMustBeginWithStandardText  析構函數注釋標准:“Finalizes an instance of the <see cref="Customer"/> class.”

45、SA1644:DocumentationHeadersMustNotContainBlankLines   注釋中不能出現空白行

46、SA1645:IncludedDocumentationFileDoesNotExist   如果注釋中包含文件,要確定這個文件存在,舉例:“       /// <include file="IncludedDocumentation.xml" path="root/EnabledMethodDocs" />” 這一項過於復雜不建議用,但是如果將來想規范化相同共性東西的注釋的時候倒是可以考慮引入。

47、SA1646:IncludedDocumentationXPathDoesNotExist  如果注釋中包含文件,路徑不存在。

48、SA1647:IncludeNodeDoesNotContainValidFileAndPath  如果注釋中包含文件 文件與路徑都要合法

49、SA1648:InheritDocMustBeUsedWithInheritingClass   這項不明白是什么意思,還請知道的分享給我,謝謝。

50、SA1649:FileHeaderFileNameDocumentationMustMatchTypeName  文件頭注釋必須匹配類型

51、SA1650:ElementDocumentationMustBeSpelledCorrectly 注釋不能有拼寫錯誤(對中文支持不好,不建議使用該項)

布局規則

1、 SA1500:CurlyBracketsForMultiLineStatementsMustNotShareLine  花括號不能再同一行。

標准格式:  public StRsvrRFun()

         {

          }

2、SA1501:StatementMustNotBeOnASingleLine   語句不能共享一行

3、SA1502:ElementMustNotBeOnASingleLine   語句不能共享一行

4、SA1503:CurlyBracketsMustNotBeOmitted  花括弧即使在單行代碼的情況下也不能省略。

5、SA1504:AllAccessorsMustBeSingleLineOrMultiLine  讀寫屬性,要么在同一行業要么在分多行寫,不可規則不統一(個人建議分多行寫)。

6、SA1505:OpeningCurlyBracketsMustNotBeFollowedByBlankLine 開始的花括弧后面不能有空白行

7、SA1506:ElementDocumentationHeadersMustNotBeFollowedByBlankLine 元素頭部注釋跟元素之間不能有空白行

8、SA1507:CodeMustNotContainMultipleBlankLinesInARow 不允許有多行空白行緊挨着(個人建議寫一個空白行即可)

9、SA1508:ClosingCurlyBracketsMustNotBePrecededByBlankLine 結尾的花括弧不能再一個空白行之前

10、SA1509:OpeningCurlyBracketsMustNotBePrecededByBlankLine  開始的花括弧不能再一個空白行之前

11、SA1510:ChainedStatementBlocksMustNotBePrecededByBlankLine 相連的語句之間不能有空白行,如try語句與catch語句之間不能有空白行

12、SA1511:WhileDoFooterMustNotBePrecededByBlankLine  與SA1510相同,Do語句與While語句之間不能有空白行

13、SA1512:SingleLineCommentsMustNotBeFollowedByBlankLine 單行注釋不能后跟空白行

14、SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine 結束花括弧之后必須有一個空白行

15、SA1514:ElementDocumentationHeaderMustBePrecededByBlankLine 頭部注解之前必須有一個空白行

16、SA1515:SingleLineCommentMustBePrecededByBlankLine 單行注釋之前要有一個空白行,還一種方法是不加空白行而用四個斜線注釋”////”,建議采取第一種方法

17、SA1516:ElementsMustBeSeparatedByBlankLine 鄰近的元素之間要有一個空白行

18、SA1517:CodeMustNotContainBlankLinesAtStartOfFile 代碼文件頭部字符之前不能出現空白行

19、SA1518:CodeMustNotContainBlankLinesAtEndOfFile代碼文件尾部字符之后不能出現空白行

可維護規則

1、 SA1119:StatementMustNotUseUnnecessaryParenthesis  語句中不可以出現多余的括弧,無意義的括弧增加了代碼的可讀性

2、 SA1400:AccessModifierMustBeDeclared  必須定義訪問修飾符

3、 SA1401:FieldsMustBePrivate  字段必須定義為私有的

4、 SA1402:FileMayOnlyContainASingleClass 一個CS文件里只定義一個類

5、 SA1403:FileMayOnlyContainASingleNamespace  一個CS文件只包含一個命名空間

6、 SA1404:CodeAnalysisSuppressionMustHaveJustification   Suppression特性(取消報告特定的靜態分析工具規則沖突,允許一個代碼項目上應用多個取消報告設置)必須要有合理理由

7、 SA1405:DebugAssertMustProvideMessageText 參見代碼:“Debug.Assert(value != true, "The value must always be true.");”

8、 SA1406:DebugFailMustProvideMessageText   參見代碼:“Debug.Fail("The code should never reach this point.");”

9、 SA1407:ArithmeticExpressionsMustDeclarePrecedence 算數表達式必須用明確的標明其優先級(此條與SA1119沖突)

10、 SA1408:ConditionalExpressionsMustDeclarePrecedence 條件表達式必須明確的標明其優先級(此條與SA1119沖突) 舉例:“if (x || (y && z && a) || b)”

11、 SA1409:RemoveUnnecessaryCode  移除無用的代碼

12、 SA1410:RemoveDelegateParenthesisWhenPossible  調用一個c#匿名方法不包含任何方法參數,必須要包括一個空括號(本人不建議使用匿名方法、匿名委托的語法,具體原因后續做分享)

13、 SA1411:AttributeConstructorMustNotUseUnnecessaryParenthesis 特性構造函數如果是空參的形式,不要包括那個空括號

命名規則

1、 SA1300:ElementMustBeginWithUpperCaseLetter  首字母必須大寫(個人理解應該是字段以外的東西)

2、 SA1301: ElementMustBeginWithLowerCaseLetter  不會出現的情況

3、 SA1302:InterfaceNamesMustBeginWithI  接口必須以“I”字母開頭

4、 SA1303:ConstFieldNamesMustBeginWithUpperCaseLetter Const常量首字母大寫

5、 SA1304:NonPrivateReadonlyFieldsMustBeginWithUpperCaseLetter 非私有非制度的字段必須首字母大寫

6、 SA1305:FieldNamesMustNotUseHungarianNotation 除了列表外的字符不可以出現匈牙利命名規則,在”Style Setting”里的” Hungarian”Tab里設置

7、 SA1306:FieldNamesMustBeginWithLowerCaseLetter 字段名必須首字母小寫

8、 SA1307:AccessibleFieldsMustBeginWithUpperCaseLetter public或者internal字段首字母大寫

9、 SA1308:VariableNamesMustNotBePrefixed  變量名不能有前綴

10、 SA1309:FieldNamesMustNotBeginWithUnderscore  字段名不能以下滑線開頭

11、 SA1310:FieldNamesMustNotContainUnderscore   字段名不能包括下滑線

12、 SA1311:StaticReadonlyFieldsMustBeginWithUpperCaseLetter static與readonly字段首字母大寫

排序規則

1、SA1200:UsingDirectivesMustBePlacedWithinNamespace   using部分必須在Namespace內部(個人不建議用這個規則)

2、SA1201:ElementsMustAppearInTheCorrectOrder 所有的元素必須出現在正確的位置上(個人不建議使用該規則,用region把一個類文件里的元素分好組即可,字段、屬性、對外公布的接口、私有方法等組)

3、SA1202:ElementsMustBeOrderedByAccess  元素的修飾符有一個固定的順序(個人不建議使用該規則,用region把一個類文件里的元素分好組即可,字段、屬性、對外公布的接口、私有方法等組)

4、SA1203:ConstantsMustAppearBeforeFields  常量字段擺放在其它字段之上

5、SA1204:StaticElementsMustAppearBeforeInstanceElements Static  元素擺放在前面

6、SA1205:PartialElementsMustDeclareAccess Partial修飾的元素必須聲明讀寫權限

7、SA1206:DeclarationKeywordsMustFollowOrder 舉例:

keywords must appear in the following order:

Access modifiers

static

All other keywords

8、SA1207:ProtectedMustComeBeforeInternal   Protected在Internal之前

9、SA1208:SystemUsingDirectivesMustBePlacedBeforeOtherUsingDirectives  系統級的引用在其他引用之前(格式化代碼就會自動按照這個規則編排using部分)

10、SA1209:UsingAliasDirectivesMustBePlacedAfterOtherUsingDirectives  using部分起別名的在最后排布

11、SA1210:UsingDirectivesMustBeOrderedAlphabeticallyByNamespace  using部分按照字母順序編排

12、SA1211:UsingAliasDirectivesMustBeOrderedAlphabeticallyByAliasName 別名的按照別名的字母編排

13、SA1212:PropertyAccessorsMustFollowOrder  屬性按照先get在set

14、SA1213:EventAccessorsMustFollowOrder  時間先remove在add

15、SA1214:StaticReadonlyElementsMustAppearBeforeStaticNonReadonlyElements  StaticReadonly元素在StaticNonReadonly元素之前

16、SA1215:InstanceReadonlyElementsMustAppearBeforeInstanceNonReadonlyElements 

一個readonly 實例元素要在一個非readonly 實例元素

可讀性規則

1、 SA1100:DoNotPrefixCallsWithBaseUnlessLocalImplementationExists

change the ‘base.’ prefix to ‘this.’.

2、 SA1101:PrefixLocalCallsWithThis  ‘this.’前綴不能省略

3、 SA1102:QueryClauseMustFollowPreviousClause   linq語句要么同一行,要么關鍵字分布在多行,關鍵字對齊

4、 SA1103:QueryClausesMustBeOnSeparateLinesOrAllOnOneLine 不是很理解

5、 SA1104:QueryClauseMustBeginOnNewLineWhenPreviousClauseSpansMultipleLines不是很理解

6、 SA1105:QueryClausesSpanningMultipleLinesMustBeginOnOwnLine不是很理解

7、 SA1106:CodeMustNotContainEmptyStatements  不允許有空白的聲明

8、 SA1107:CodeMustNotContainMultipleStatementsOnOneLine 同一行里不允許出現多個聲明語句

9、 SA1108:BlockStatementsMustNotContainEmbeddedComments  非法用例:

if (x != y)

    // Make sure x does not equal y

    {

    }

10、 SA1109:BlockStatementsMustNotContainEmbeddedRegions  非法用例:

    if (x != y)

    #region

    {

    }

    #endregion

11、 SA1110:OpeningParenthesisMustBeOnDeclarationLine 方法開始的括弧要在聲明的那一行

12、 SA1111:ClosingParenthesisMustBeOnLineOfLastParameter  方法結束括弧與最后一個參數同行

13、 SA1112:ClosingParenthesisMustBeOnLineOfOpeningParenthesis  如果是空參的情況,開始於結束括弧在同一行

14、 SA1113:CommaMustBeOnSameLineAsPreviousParameter  逗號必須與前一個參數同行

15、 SA1114:ParameterListMustFollowDeclaration 

確保參數列表與開始括號同行,或者另起一行 參數整體要在同一行

16、 SA1115:ParameterMustFollowComma 參數與參數之間不能隔空白行

17、 SA1116:SplitParametersMustStartOnLineAfterDeclaration  所有參數在同一行或者如下示例:

public string JoinName(

        string first, 

        string last)

18、SA1117:ParametersMustBeOnSameLineOrSeparateLines   同上

19、SA1118:ParameterMustNotSpanMultipleLines 實際調用是參數要在同一行

20、SA1120:CommentsMustContainText  注釋必須節點內部必須有文本

22、SA1122:UseStringEmptyForEmptyStrings  

示例代碼:“string s = string.Empty;”不能寫成” string s = ""; ”

23、SA1123:DoNotPlaceRegionsWithinElements  不使用region(個人較反對這條,個人傾向於用region規整類里的元素)

24、SA1124:DoNotUseRegions  不使用region(個人較反對這條,個人傾向於用region規整類里的元素)

25、SA1125:UseShorthandForNullableTypes  使用簡寫版的可空類型 如”int?”

26、SA1126:PrefixCallsCorrectly  調用類成員的時候要帶上“this”前綴

拼寫規則

1、 SA1000:KeywordsMustBeSpacedCorrectly  關鍵字不能拼寫錯誤

2、 SA1001:CommasMustBeSpacedCorrectly 逗號前面擺放一個空格

3、 SA1002:SemicolonsMustBeSpacedCorrectly  分號前面擺放一個空格

4、 SA1003:SymbolsMustBeSpacedCorrectly  操作符與元素之間不加空格

5、 SA1004:DocumentationLinesMustBeginWithSingleSpace “///”注釋的每一行以一個空格開頭

6、 SA1005:SingleLineCommentsMustBeginWithSingleSpace  單行注釋以一個空格開頭

7、 SA1006:PreprocessorKeywordsMustNotBePrecededBySpace  預處理關鍵字內部不允許出現空格 如“# if Debug”是不允許的

8、 SA1007:OperatorKeywordMustBeFollowedBySpace   操作必須要在一個空格之后

9、 SA1008:OpeningParenthesisMustBeSpacedCorrectly  開始括弧放置合理的空格

10、 SA1009:ClosingParenthesisMustBeSpacedCorrectly  結尾括弧放置合理的空格

11、 SA1010:OpeningSquareBracketsMustBeSpacedCorrectly 開始方括號放置合理的空格

12、 SA1011:ClosingSquareBracketsMustBeSpacedCorrectly   結束方括號放置合理的空格

13、 SA1012:OpeningCurlyBracketsMustBeSpacedCorrectly  開始花括號放置合理的空格

14、 SA1013:ClosingCurlyBracketsMustBeSpacedCorrectly 結束花括號放置合理的空格

15、 SA1014:OpeningGenericBracketsMustBeSpacedCorrectly 同上

16、 SA1015:ClosingGenericBracketsMustBeSpacedCorrectly  同上

17、 SA1016:OpeningAttributeBracketsMustBeSpacedCorrectly  特性開始括號同上

18、 SA1017:ClosingAttributeBracketsMustBeSpacedCorrectly  特性結尾括號同上

19、 SA1018:NullableTypeSymbolsMustNotBePrecededBySpace 空類型前不放置空格

20、 SA1019:MemberAccessSymbolsMustBeSpacedCorrectly  成員訪問關鍵字前后有空格

21、 SA1020:IncrementDecrementSymbolsMustBeSpacedCorrectly 自增、自減關鍵字要有空格

22、 SA1021:NegativeSignsMustBeSpacedCorrectly  負號要有空格

23、 SA1022:PositiveSignsMustBeSpacedCorrectly   正號要有空格

24、 SA1023:DereferenceAndAccessOfMustBeSpacedCorrectly 

25、 SA1024:ColonsMustBeSpacedCorrectly  冒號運算符要有空格

26、 SA1025:CodeMustNotContainMultipleWhitespaceInARow  同一行不允許出現多個空格

27、 SA1026:CodeMustNotContainSpaceAfterNewKeywordInImplicitlyTypedArrayAllocation  new關鍵字之后不允許出現空格

28、 SA1027:TabsMustNotBeUsed  不用tab字符(個人不建議采用這條)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM