C#静态代码检查工具StyleCode -- 初探
最近我们Advent Data Service (ADS) 在项目上需要按照代码规范进行代码的编写工作,以方便将来代码的阅读与维护。
但是人工检查起来容易遗漏或者格式不统一, ReSharper又是收费的,而且费用不菲。
于是美国的同事推荐了我们一款开源工具 StyleCop,我想无论是对公司项目还是个人的项目,都是有所帮助的,所以想写下来与大家分享。
StyleCop官网地址:http://stylecop.codeplex.com/, 这里有大家需要的msi安装文件,源代码和说明文档等资源。
- 现在最新的版本是 4.7.50,这是一个Alpah版本,支持Visual Studio 2015 (暂时不支持C# 6.0的语法)
- StyleCop有两种安装方式
- 直接在官网下载msi安装程序,双击安装
- 在Visual Studio中,Tools --> Extensions and Updates… --> Extensions and Updates… --> Online --> 搜索stylecop,找到Visual StyleCop并安装
- 安装完成之后,打开Visual Studio并打开一个项目,右键选择一个Project,会发现多了三个选项
- Run StyleCop与Run StyleCop(Rescan All)会审查已有代码,并且在Error List中显示代码中不符合规范的Warning
第一个图是执行了Run StyleCop的Error List, 第二个图是执行了Build的Error List
- StyleCop Setting:在实际项目中,可能现有的规则并不适用于我们的项目,需要我们自己通过StyleCop Setting进行配置
以上都是StyleCop的基本功能,希望能对大家有所帮助,也欢迎大家进行交流讨论。
Tips: 在Visual Studio中,规范化C#项目代码格式的快捷键是Ctrl + k,再按一下Ctrl + d。在编写完代码后,按下这个组合,代码就会规规矩矩的排列了☺
C#静态代码检查工具StyleCode -- 规则解析
在StyleCop中有一些官方自己写好的检测规则,下面就是英文的解释:
Documentation Rules 注释规则
-
SA1600:ElementsMustBeDocumented元素必须添加注释
-
SA1601: PartialElementsMustBeDocumented Partial修饰的成员必须添加注释
-
SA1602:EnumerationItemsMustBeDocumented 枚举必须添加注释
-
SA1603: DocumentationMustContainValidXml 注释必须合法(注释中的关键字不能有错误)
-
SA1604: ElementDocumentationMustHaveSummary 元素注释必须包含Summary关键字
-
SA1605:PartialElementDocumentationMustHaveSummary Partial修饰的成员注释必须包含Summary关键字
-
SA1606:ElementDocumentationMustHaveSummaryText Summary节点内部必须添加文本
-
SA1607:PartialElementDocumentationMustHaveSummaryText Partial修饰的成员注释Summary节点内部必须添加文本
-
SA1608:ElementDocumentationMustNotHaveDefaultSummary Summary注释不能使用编译器自带的注释文本
-
SA1609:PropertyDocumentationMustHaveValue 属性的注释中必须包含节点
-
SA1610:PropertyDocumentationMustHaveValueText 属性的注释节点必须包含文本值
-
SA1611:ElementParametersMustBeDocumented 参数必须注释
-
SA1612:ElementParameterDocumentationMustMatchElementParameters 参数的个数必须与注释里的个数一致
-
SA1613:ElementParameterDocumentationMustDeclareParameterName 参数的注释里必须有参数的名称
-
SA1614:ElementParameterDocumentationMustHaveText 参数注释节点里不能空着
-
SA1615:ElementReturnValueMustBeDocumented 返回值必须添加注释
-
SA1616:ElementReturnValueDocumentationMustHaveText 返回值注释的节点内必须有文本值
-
SA1617:VoidReturnValueMustNotBeDocumented 空返回值一定不能有返回值注释
-
SA1618:GenericTypeParametersMustBeDocumented 生成的类型(泛型)参数必须有注释
-
SA1619:GenericTypeParametersMustBeDocumentedPartialClass SA1618情况如果有Partial类存在都要有注释
-
SA1620:GenericTypeParameterDocumentationMustMatchTypeParameters 注释与泛型必须能匹配上
-
SA1621:GenericTypeParameterDocumentationMustDeclareParameterName 泛型的注释必须包含泛型定义是的关键字(如’T’)
-
SA1622:GenericTypeParameterDocumentationMustHaveText 泛型的注释节点中必须包含文本值
-
SA1623:PropertySummaryDocumentationMustMatchAccessors 属性的注释必须与属性的读写权限匹配,private类型的属性不能出现在注释里
-
SA1624:PropertySummaryDocumentationMustOmitSetAccessorWithRestrictedAccess 属性的注释里必须忽略protected关键字,当成public类型当注释
-
SA1625:ElementDocumentationMustNotBeCopiedAndPasted 各个参数的注解不能完全相同(避免copy、post行为)
-
SA1626:SingleLineCommentsMustNotUseDocumentationStyleSlashes 单行注释不能采取三个斜线的注释方式,斜线的个数必须是二的倍数
-
SA1627:DocumentationTextMustNotBeEmpty 注释节点内部不能为空(必须有文本值)
-
SA1628:DocumentationTextMustBeginWithACapitalLetter 注释节点内部的文本必须以大写字母开头
-
SA1629:DocumentationTextMustEndWithAPeriod 注释节点内部的文本必须英文的句号结束
-
SA1630:DocumentationTextMustContainWhitespace 注释节点内部的文本必须包含空格
-
SA1631:DocumentationMustMeetCharacterPercentage 注释节点内部的文本中不能包含过多的字符(举例:包含’—————————————’是不允许的)
-
SA1632:DocumentationTextMustMeetMinimumCharacterLength 已经作废的规则,不允许有太短的字符串(如’A name’ 中的A字母)
-
SA1633:FileMustHaveHeader 代码文件头部必须有说明,一般放置版权信息
-
SA1634:FileHeaderMustShowCopyright 代码文件头部注解中必须包含版权关键字
-
SA1635:FileHeaderMustHaveCopyrightText代码文件头部注解中必须包含版权信息内同
-
SA1636:FileHeaderCopyrightTextMustMatch 代码文件头部注解中版权信息必须与设置画面设置的内容相匹配,在”style seting”画面的” Company Information t