代码走查工具StyleCop建议采用的规则总结

来源:互联网 发布:linux下安装ftp服务器 编辑:程序博客网 时间:2024/05/07 20:10

  续接上篇:代码走查工具篇SytleCop的规则总结与翻译,本篇主要是以我个人的观点总结的一份建议使用的Rule点。

建议使用的Rule

1、公共的接口、类、方法、属性、字段必须添加标准的XML注释(VS自带的代码分析就可以解决该问题)

2、SA1516 : CSharp.Layout : Adjacent elements must be separated by a blank line

大致意思是说:相邻的元素之间必须要有一个空白行。

3、SA1603: DocumentationMustContainValidXml  注释必须合法(注释中的关键字不能有错误)

4SA1604: ElementDocumentationMustHaveSummary 元素注释必须包含Summary关键字

5SA1606:ElementDocumentationMustHaveSummaryText   Summary节点内部必须添加文本

6SA1608:ElementDocumentationMustNotHaveDefaultSummary  Summary注释不能使用编译器自带的注释文本

7SA1609:PropertyDocumentationMustHaveValue   属性的注释中必须包含<Value>节点

8SA1610:PropertyDocumentationMustHaveValueText  属性的注释<Value>节点必须包含文本值

9SA1611:ElementParametersMustBeDocumented   参数必须注释

10SA1612:ElementParameterDocumentationMustMatchElementParameters  参数的个数必须与注释里的个数一致

11SA1613:ElementParameterDocumentationMustDeclareParameterName 参数的注释里必须有参数的名称

12SA1614:ElementParameterDocumentationMustHaveText    参数注释节点里不能空着

13SA1615:ElementReturnValueMustBeDocumented  返回值必须添加注释

14SA1616:ElementReturnValueDocumentationMustHaveText  返回值注释的节点内必须有文本值

15SA1617:VoidReturnValueMustNotBeDocumented 空返回值一定不能有返回值注释

16SA1623:PropertySummaryDocumentationMustMatchAccessors  属性的注释必须与属性的读写权限匹配,private类型的属性不能出现在注释里

17SA1624:PropertySummaryDocumentationMustOmitSetAccessorWithRestrictedAccess 属性的注释里必须忽略protected关键字,当成public类型当注释

18SA1625:ElementDocumentationMustNotBeCopiedAndPasted  各个参数的注解不能完全相同(避免copypost行为)

19SA1631:DocumentationMustMeetCharacterPercentage 注释节点内部的文本中不能包含过多的字符(举例:包含’---------------------------------------’是不允许的)

20SA1642:ConstructorSummaryDocumentationMustBeginWithStandardText  构造函数注释标准:“Initializes a new instance of the <see cref="Customer{T}"/> class.”

21SA1644:DocumentationHeadersMustNotContainBlankLines   注释中不能出现空白行

22SA1500:CurlyBracketsForMultiLineStatementsMustNotShareLine  花括号不能再同一行。

标准格式:  public StRsvrRFun()

         {

          }

23SA1501:StatementMustNotBeOnASingleLine   语句不能共享一行

24SA1502:ElementMustNotBeOnASingleLine   语句不能共享一行

25SA1503:CurlyBracketsMustNotBeOmitted  花括弧即使在单行代码的情况下也不能省略。

26SA1504:AllAccessorsMustBeSingleLineOrMultiLine  读写属性,要么在同一行业要么在分多行写,不可规则不统一(个人建议分多行写)

27SA1505:OpeningCurlyBracketsMustNotBeFollowedByBlankLine 开始的花括弧后面不能有空白行

28SA1506:ElementDocumentationHeadersMustNotBeFollowedByBlankLine 元素头部注释跟元素之间不能有空白行

29SA1507:CodeMustNotContainMultipleBlankLinesInARow 不允许有多行空白行紧挨着(个人建议写一个空白行即可)

30SA1508:ClosingCurlyBracketsMustNotBePrecededByBlankLine 结尾的花括弧不能再一个空白行之前

31SA1509:OpeningCurlyBracketsMustNotBePrecededByBlankLine  开始的花括弧不能再一个空白行之前

32SA1510:ChainedStatementBlocksMustNotBePrecededByBlankLine 相连的语句之间不能有空白行,如try语句与catch语句之间不能有空白行

33SA1511:WhileDoFooterMustNotBePrecededByBlankLine  与SA1510相同,Do语句与While语句之间不能有空白行

34SA1512:SingleLineCommentsMustNotBeFollowedByBlankLine 单行注释不能后跟空白行

35SA1513:ClosingCurlyBracketMustBeFollowedByBlankLine 结束花括弧之后必须有一个空白行

36SA1514:ElementDocumentationHeaderMustBePrecededByBlankLine 头部注解之前必须有一个空白行

37SA1515:SingleLineCommentMustBePrecededByBlankLine 单行注释之前要有一个空白行,还一种方法是不加空白行而用四个斜线注释”////”,建议采取第一种方法

38SA1516:ElementsMustBeSeparatedByBlankLine 邻近的元素之间要有一个空白行

39SA1517:CodeMustNotContainBlankLinesAtStartOfFile 代码文件头部字符之前不能出现空白行

40SA1518:CodeMustNotContainBlankLinesAtEndOfFile代码文件尾部字符之后不能出现空白行

41SA1407:ArithmeticExpressionsMustDeclarePrecedence 算数表达式必须用明确的标明其优先级(此条与SA1119冲突)

42SA1408:ConditionalExpressionsMustDeclarePrecedence 条件表达式必须明确的标明其优先级(此条与SA1119冲突举例:“if (x || (y && z && a) || b)”

43SA1409:RemoveUnnecessaryCode  移除无用的代码

44SA1410:RemoveDelegateParenthesisWhenPossible  调用一个c#匿名方法不包含任何方法参数,必须要包括一个空括号(本人不建议使用匿名方法、匿名委托的语法,具体原因后续做分享)

45SA1302:InterfaceNamesMustBeginWithI  接口必须以“I”字母开头

SA1208:SystemUsingDirectivesMustBePlacedBeforeOtherUsingDirectives  系统级的引用在其他引用之前(格式化代码就会自动按照这个规则编排using部分)

46SA1209:UsingAliasDirectivesMustBePlacedAfterOtherUsingDirectives  using部分起别名的在最后排布

47SA1210:UsingDirectivesMustBeOrderedAlphabeticallyByNamespace  using部分按照字母顺序编排

48SA1211:UsingAliasDirectivesMustBeOrderedAlphabeticallyByAliasName 别名的按照别名的字母编排

49SA1212:PropertyAccessorsMustFollowOrder  属性按照先getset

50SA1213:EventAccessorsMustFollowOrder  时间先removeadd

51SA1100:DoNotPrefixCallsWithBaseUnlessLocalImplementationExists

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

52SA1101:PrefixLocalCallsWithThis  ‘this.’前缀不能省略

53SA1102:QueryClauseMustFollowPreviousClause   linq语句要么同一行,要么关键字分布在多行,关键字左对齐

54SA1106:CodeMustNotContainEmptyStatements  不允许有空白的声明

55SA1107:CodeMustNotContainMultipleStatementsOnOneLine 同一行里不允许出现多个声明语句

56SA1108:BlockStatementsMustNotContainEmbeddedComments  非法用例:

if (x != y)

    // Make sure x does not equal y

    {

    }

57SA1109:BlockStatementsMustNotContainEmbeddedRegions  非法用例:

    if (x != y)

    #region

    {

    }

#endregion

58SA1110:OpeningParenthesisMustBeOnDeclarationLine 方法开始的括弧要在声明的那一行

59SA1111:ClosingParenthesisMustBeOnLineOfLastParameter  方法结束括弧与最后一个参数同行

60SA1112:ClosingParenthesisMustBeOnLineOfOpeningParenthesis  如果是空参的情况,开始于结束括弧在同一行

61SA1113:CommaMustBeOnSameLineAsPreviousParameter  逗号必须与前一个参数同行

62SA1114:ParameterListMustFollowDeclaration 

确保参数列表与开始括号同行,或者另起一行 参数整体要在同一行

63SA1115:ParameterMustFollowComma 参数与参数之间不能隔空白行

64SA1116:SplitParametersMustStartOnLineAfterDeclaration  所有参数在同一行或者如下示例:

public string JoinName(

        string first, 

        string last)

65SA1117:ParametersMustBeOnSameLineOrSeparateLines   同上

66SA1121: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

67SA1122:UseStringEmptyForEmptyStrings  

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

建议屏蔽掉的Rule

1SA1650 : CSharp.Documentation : The documentation text within the summary tag contains incorrectly spelled words: 异常测试  这个是对中文支持的不够好。拼写检查识别不到。

2SA1200 : CSharp.Ordering : All using directives must be placed inside of the namespace

大致意思是说:using语句要放在namespace内部  没必要采取这一项,采取VS默认的放置位置即可。

3、其它的屏蔽项目就不一一列列举了。

在实际工作中的使用方法(手工的方式触发,随后我会结合CC.Net进行脚本式的调用):

每个project进行的StyleCop设置都会最终记录到一个名“Settings.StyleCop”下,copy配置好的替换其它project即可。操作截图



 现将我本地配置好的规则文件分享给大家:StyleCop全套资料下载



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宝宝学走路内八字怎么办 人胖走路磨腿怎么办 2岁半宝宝内八字怎么办 大狗跑步累倒怎么办? 拉小提琴的姿势不正确怎么办 屁股摔倒了很痛怎么办 腿摔倒了破了怎么办 骑车摔倒腿肿了怎么办 鸟翅膀老是掉着怎么办 有老人摔倒被讹怎么办 剑鞘囊肿手术后黏连怎么办 上古卷轴5变脏了怎么办 上古卷轴5病了怎么办 法院判的罚金没钱交怎么办 上古卷轴5亲吻出题怎么办 老滚5马不见了怎么办 上古卷轴5杀鸡了怎么办 上古卷轴5东西太多怎么办 上古卷轴天际杀鸡了怎么办 上古卷轴5偷东西被发现怎么办 上古卷轴杀了鸡怎么办 老滚5东西多了怎么办 上古卷轴5被追杀怎么办 全险车自己碰了怎么办 上古卷轴5狗死了怎么办 头发被胶粘住了怎么办 头发被口香糖粘住了怎么办 上古卷轴5杀了npc怎么办 上古卷轴5血太少了怎么办 因牙齿缺失导致变长怎么办 上古卷轴5闪退怎么办? 小米手机4卡顿怎么办 上古卷轴5任务失败怎么办 上古卷轴5爆显存怎么办 老滚5卡住了怎么办 上古卷轴5被木河镇人追杀怎么办 关门的时候有响怎么办 家里门关门太响怎么办 网上赌搏输了2万怎么办 梦见不顺心的事怎么办 振动声桥洗澡时怎么办