【顆粒歸倉】(四)程式碼走查--StyleCop所有規範的翻譯準則
從網上找StyleCop官網準則的翻譯好費心,功夫不負有心人,終於找到了完整版(還是在壓縮檔案中),分享給同學們來學習,其中有我自己的標註(紅色字型),和網友們一起學習、提高。
-----題記
所有規則的翻譯(基於版本4.7.44.0):
一、文件規則
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”畫面的” CompanyInformation tab”進行設定
38、SA1637:FileHeaderMustContainFileName 程式碼檔案頭部註解中必須包含檔名稱
39、SA1638:FileHeaderFileNameDocumentationMustMatchFileName 程式碼檔案頭部註解中必須包含檔名稱必須與實際的名稱匹配
40、SA1639:FileHeaderMustHaveSummary 程式碼檔案頭部註解中必須包含Summary節點
41、SA1640:FileHeaderMustHaveValidCompanyText程式碼檔案頭部註解中版權資訊必須含有合理的公司名字
42、SA1641:FileHeaderCompanyNameTextMustMatch 程式碼檔案頭部註解中的公司名字必須與設定畫面設定的內容相匹配,在”style seting”畫面的” CompanyInformation 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()
{
}
//在我們的專案中,對於get或者set自動生成的方法,需要修改
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:ConstFieldNamesMustBeginWithUpperCaseLetterConst常量首字母大寫
5、SA1304:NonPrivateReadonlyFieldsMustBeginWithUpperCaseLetter非私有非制度的欄位必須首字母大寫
6、SA1305:FieldNamesMustNotUseHungarianNotation除了列表外的字元不可以出現匈牙利命名規則,在”StyleSetting”裡的” Hungarian”Tab裡設定
7、SA1306:FieldNamesMustBeginWithLowerCaseLetter欄位名必須首字母小寫
8、SA1307:AccessibleFieldsMustBeginWithUpperCaseLetterpublic或者internal欄位首字母大寫
9、SA1308:VariableNamesMustNotBePrefixed 變數名不能有字首
10、SA1309:FieldNamesMustNotBeginWithUnderscore 欄位名不能以下滑線開頭
11、SA1310:FieldNamesMustNotContainUnderscore 欄位名不能包括下滑線
12、SA1311:StaticReadonlyFieldsMustBeginWithUpperCaseLetterstatic與readonly欄位首字母大寫
五、排序規則
1、SA1200:UsingDirectivesMustBePlacedWithinNamespace using部分必須在Namespace內部(個人不建議用這個規則)
2、SA1201:ElementsMustAppearInTheCorrectOrder所有的元素必須出現在正確的位置上(個人不建議使用該規則,用region把一個類檔案裡的元素分好組即可,欄位、屬性、對外公佈的介面、私有方法等組)
3、SA1202:ElementsMustBeOrderedByAccess 元素的修飾符有一個固定的順序(個人不建議使用該規則,用region把一個類檔案裡的元素分好組即可,欄位、屬性、對外公佈的介面、私有方法等組)
4、SA1203:ConstantsMustAppearBeforeFields 常量欄位擺放在其它欄位之上
5、SA1204:StaticElementsMustAppearBeforeInstanceElementsStatic 元素擺放在前面
6、SA1205:PartialElementsMustDeclareAccessPartial修飾的元素必須宣告讀寫許可權
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 xdoes 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 註釋必須節點內部必須有文字
21、SA1121:UseBuiltInTypeAlias 使用內嵌的類型別名,如下圖:
Type Alias |
Type |
Fully Qualified Type |
bool |
Boolean |
System.Boolean |
byte |
Byte |
System.Byte |
char |
Char |
System.Char |
decimal |
Decimal |
System.Decimal |
double |
Double |
System.Double |
short |
Int16 |
System.Int16 |
int |
Int32 |
System.Int32 |
long |
Int64 |
System.Int64 |
object |
Object |
System.Object |
sbyte |
SByte |
System.SByte |
float |
Single |
System.Single |
string |
String |
System.String |
ushort |
UInt16 |
System.UInt16 |
uint |
UInt32 |
System.UInt32 |
ulong |
UInt64 |
System.UInt64 |
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
26、SA1025:CodeMustNotContainMultipleWhitespaceInARow 同一行不允許出現多個空格
27、SA1026:CodeMustNotContainSpaceAfterNewKeywordInImplicitlyTypedArrayAllocation new關鍵字之後不允許出現空格
28、 SA1027:TabsMustNotBeUsed 不用tab字元(個人不建議採用這條)
個人建議:強迫症患者使用StyleCop,最好學會如何遮蔽不需要的準則以及自己來設定需要的規範準則,啊哈哈。