代码走查工具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建议采用的规则总结的更多相关文章
- 代码审查工具 StyleCop 的探索
最近我们Advent Data Service (ADS) 在项目上需要按照代码规范进行代码的编写工作,以方便将来代码的阅读与维护. 但是人工检查起来容易遗漏或者格式不统一, ReSharper又是收 ...
- [改善Java代码]建议采用的顺序是 List<T>、List<?>、List<Object>
建议98:建议采用的顺序是 List<T>.List<?>.List<Object> List<T>.List<?>.List<Obj ...
- Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)
Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...
- BAT程序员常用的开发工具,建议收藏!
今天给大家推荐一批 BAT 公司常用的开发工具,个个好用,建议转发+收藏. 阿里篇 一.Java 线上诊断工具 Arthas Arthas 是阿里巴巴 2018 年 9 月开源的一款 Java 线上诊 ...
- 代码审查工具StyleCop
“代码审查”或是“代码评审”(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻辑.思路 ...
- C# 代码规范和质量检查工具 StyleCop.Analyzers
简介 原来一直用 ReSharper 来进行代码质量检查,不过毕竟是收费的,所以想找个免费的可以推广给公司的同事也一起用.搜索了一下,找到了StyleCop,但是我在 VS 2015里安装 Style ...
- C#代码审查工具 StyleCop
SourceAnalysis (StyleCop)的终极目标是让所有人都能写出优雅和一致的代码,因此这些代码具有很高的可读性. SourceAnalysis (StyleCop)不是代码格式化(代码美 ...
- StyleCop学习笔记——自定义规则
本文将简单的一步一步的指导这可能有助于学习如何创建自己的规则 1.创建一个项目. Visual Studio创建一个新的类库项目.NET3.5 2.引用两个DLL,StyleCop.dll和Style ...
- 静态代码扫描工具PMD定制xml的规则(一)操作篇
0.前言 PMD作为开源的静态代码扫描工具有很强的扩展能力,可使用java或xpath定制rule.第一篇从操作上讲解如何定制一个用于扫描xml是否规范的规则.首先我们知道xml格式的文件在java工 ...
随机推荐
- Android多点触控(图片的缩放Demo)
本文主要介绍Android的多点触控,使用了一个图片缩放的实例,来更好的说明其原理.须要实现OnTouchListener接口,重写当中的onTouch方法. 实现效果图: 源码: 布局文 ...
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabc ...
- 【Android进阶】关于PagerAdapter的使用方法的总结
PagerAdapter简介 PagerAdapter是android.support.v4包中的类,它的子类有FragmentPagerAdapter, FragmentStatePagerAdap ...
- 构建安全的Xml Web Service系列之如何察看SoapMessage
原文:构建安全的Xml Web Service系列之如何察看SoapMessage 上一篇文章地址:构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53) ...
- [渣译文] SignalR 2.0 系列:SignalR的高频实时通讯
原文:[渣译文] SignalR 2.0 系列:SignalR的高频实时通讯 英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.N ...
- SRM 590 DIV1
转载请注明出处,谢谢viewmode=contents">http://blog.csdn.net/ACM_cxlove?viewmode=contents by---cxlov ...
- 使用JMX实现的内存监控(转)
public final class MemoryWarningSystem { private static MemoryWarningSystem m_instance = null; /** * ...
- ueditor使用注意事项
1.js问题的介绍 第一ueditor型材 <script type="text/javascript" src="ueditor1_4_3-utf8-jsp/ue ...
- 恶意软件"跨平台" 小心钱包很受伤
什么是跨平台攻击? 举例来说.就像网络诈骗犯为了避开电子商务平台的监控.会在微博上发消息.百度上撒网,腾讯上联系,最后在淘宝上交易.这样的跨平台操作的模式会大大添加犯罪过程监控和取证的难度.而跨平台攻 ...
- Sonar Qube QA
配置:1.配置环境变量 SONAR_RUNNER_HOME2.配置path :增加%SONAR_RUNNER_HOME%\bin3.在自己的本地项目的根目录下创建 sonar-project.pro ...