C#静态代码检查工具StyleCode

本文介绍了C#静态代码检查工具StyleCop,包括其安装、基本功能和一系列规则,如注释规则、布局规则、可维护规则等。文章还详细阐述了如何创建自定义规则,以提升代码质量和遵循团队规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值