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

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

建议使用的Rule点

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

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

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

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

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

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

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

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

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

9、SA1611:ElementParametersMustBeDocumented   参数必须注释

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

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

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

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

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

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

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

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

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

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

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

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

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

标准格式:  public StRsvrRFun()

{

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

43、SA1409:RemoveUnnecessaryCode  移除无用的代码

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

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

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

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

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

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

49、SA1212:PropertyAccessorsMustFollowOrder  属性按照先get在set

50、SA1213:EventAccessorsMustFollowOrder  时间先remove在add

51、SA1100:DoNotPrefixCallsWithBaseUnlessLocalImplementationExists

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

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

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

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

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

56、SA1108:BlockStatementsMustNotContainEmbeddedComments  非法用例:

if (x != y)

// Make sure x does not equal y

{

}

57、SA1109:BlockStatementsMustNotContainEmbeddedRegions  非法用例:

if (x != y)

#region

{

}

#endregion

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

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

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

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

62、SA1114:ParameterListMustFollowDeclaration

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

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

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

public string JoinName(

string first,

string last)

65、SA1117:ParametersMustBeOnSameLineOrSeparateLines   同上

66、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

67、SA1122:UseStringEmptyForEmptyStrings

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

建议屏蔽掉的Rule点

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

2、SA1200 : 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全套资料下载

代码走查工具StyleCop建议采用的规则总结的更多相关文章

  1. 代码审查工具 StyleCop 的探索

    最近我们Advent Data Service (ADS) 在项目上需要按照代码规范进行代码的编写工作,以方便将来代码的阅读与维护. 但是人工检查起来容易遗漏或者格式不统一, ReSharper又是收 ...

  2. [改善Java代码]建议采用的顺序是 List<T>、List<?>、List<Object>

    建议98:建议采用的顺序是 List<T>.List<?>.List<Object> List<T>.List<?>.List<Obj ...

  3. Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)

    Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...

  4. BAT程序员常用的开发工具,建议收藏!

    今天给大家推荐一批 BAT 公司常用的开发工具,个个好用,建议转发+收藏. 阿里篇 一.Java 线上诊断工具 Arthas Arthas 是阿里巴巴 2018 年 9 月开源的一款 Java 线上诊 ...

  5. 代码审查工具StyleCop

    “代码审查”或是“代码评审”(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻辑.思路 ...

  6. C# 代码规范和质量检查工具 StyleCop.Analyzers

    简介 原来一直用 ReSharper 来进行代码质量检查,不过毕竟是收费的,所以想找个免费的可以推广给公司的同事也一起用.搜索了一下,找到了StyleCop,但是我在 VS 2015里安装 Style ...

  7. C#代码审查工具 StyleCop

    SourceAnalysis (StyleCop)的终极目标是让所有人都能写出优雅和一致的代码,因此这些代码具有很高的可读性. SourceAnalysis (StyleCop)不是代码格式化(代码美 ...

  8. StyleCop学习笔记——自定义规则

    本文将简单的一步一步的指导这可能有助于学习如何创建自己的规则 1.创建一个项目. Visual Studio创建一个新的类库项目.NET3.5 2.引用两个DLL,StyleCop.dll和Style ...

  9. 静态代码扫描工具PMD定制xml的规则(一)操作篇

    0.前言 PMD作为开源的静态代码扫描工具有很强的扩展能力,可使用java或xpath定制rule.第一篇从操作上讲解如何定制一个用于扫描xml是否规范的规则.首先我们知道xml格式的文件在java工 ...

随机推荐

  1. IntelliJ IDEA 问题总结之中的一个 —— jar包、assets、maven、git

    因为工作须要,这几天開始弃用eclipse,换idea.用了几天,idea确实有些地方比較方便.可是麻烦也是不少.并且网上相应的资料并没有eclipse那么多,非常多都是自己琢磨解决的,所以想弄个帖子 ...

  2. Gradle 1.12 翻译——第十六章. 使用文件

    有关其它已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或訪问:http://gradledoc.qiniudn.com ...

  3. HTML5之Canvas影片广场

    HTML5之Canvas影片广场 1.设计源代码 <!DOCTYPE html> <head> <meta charset="utf-8" /> ...

  4. 【YouVersion】 The Bible 圣经App

    [YouVersion] The Bible 圣经 App 今天向大家郑重推荐一款非常棒的圣经App : <The Bible>   YouVersion 团队开发的全球下载量和安装数目第 ...

  5. openocd 如何支持FreeRTOS 8.1.2

    沉寂了数年,认为我们应该分享一下.前段时间通过FreeRTOS做点什么,大家纷纷拿出来拍砖. 我应该说,Linux现在粉丝.所以,我的业余时间来分享它通常应用的经验Linux作为桌面开发平台.无需再费 ...

  6. Vim经常使用技巧总结1

    我的主力博客:半亩方塘 1. 反复上次的操作在普通模式下用 . 命令 2. 取消上次的操作在普通模式下用 u 命令 3. 整行删除在普通模式下用 dd 命令,此命令在删除行后 不进入插入模式 4. 整 ...

  7. Appium之java API

    AppiumDriver getAppStrings() 默认系统语言相应的Strings.xml文件内的数据. driver.getAppStrings(String language) 查找某一个 ...

  8. 协议系列UDP协议

    所述上部TCP虽然该协议提供了一个可靠的传输,但也有一个缺点.发送速度慢.是否有协议它可以以高速传送?这部分是将要讨论UDP协议,它提供了更加快了传输速度.而且在可靠性为代价,这是一个无连接的传输协议 ...

  9. [课程分享]IT软件项目管理(企业项目甘特如是评价、维护管理、文档管理、风险管理、人力资源管理)

    [课程分享]IT件项目管理(企业项目甘特图案例评价.维护管理.文档管理.风险管理.人力资源管理) 对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 课程讲师:丁冬博士 课程分类:Jav ...

  10. 如何获得SQL Server索引使用情况

    原文:如何获得SQL Server索引使用情况 原文出自: http://www.mssqltips.com/sqlservertip/1239/how-to-get-index-usage-info ...