代码走查工具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 注释必须合法(注释中的关键字不能有错误)
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建议采用的规则总结
- 代码审查工具FxCop建议采用的规则总结
- 【颗粒归仓】(四)代码走查工具---StyleCop
- 代码走查工具篇SytleCop的规则总结与翻译
- 代码走查工具篇FxCop的规则总结与翻译_Part1
- 代码走查工具篇FxCop的规则总结与翻译_Part2
- 代码走查工具篇FxCop的规则总结与翻译_Part3
- 代码走查工具篇SytleCop的规则总结与翻译
- 【颗粒归仓】(四)代码走查--StyleCop所有规范的翻译准则
- 【颗粒归仓】(四)代码走查--在MSBuild上集成StyleCop的配置
- 代码审查工具StyleCop
- 代码审查工具StyleCop
- 代码审查工具 StyleCop
- 代码审查工具StyleCop
- StyleCop默认的规则
- 代码走查工具篇SytleCop与FxCop的引入
- .NET代码规范检测-StyleCop使用规则
- 代码走查工具FindBugs, PMD,CheckStyle
- JVM中可生成的最大Thread数量
- Crypto++ 入门(0) 简介
- eclipse 使用技巧备忘
- https://www.box.com/
- Oracle 11.2.0.2 exp导出错误处理一则
- 代码走查工具StyleCop建议采用的规则总结
- 数字图像处理
- 根文件系统制作
- 第五周项目一
- android忘记解锁密码
- 一个自由主义者的独白
- 支持度 置信度
- android selector下的属性值
- Hdu 4535 吉哥系列故事——礼尚往来