代码审查工具StyleCop

简介:

“代码审查”或是“代码评审”(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法。由此,我们可以审查代码的风格、逻辑、思路……,找出问题,以及改进代码。因为这是代码刚刚出炉的时候,所以,这也是代码重构,代码调整,代码修改的最佳时候。所以,Code Review是编码实现中最最重要的一个环节。

长时间以来,Code Review需要有一些有效的工具来支持,这样我们就可以更容易,更有效率地来进行代码审查工作。

StyleCop是代码规范检查工具(Code Review 工具),它不仅仅检查代码格式,而是编码规范,包括命名和注释等。StyleCop可以帮助你更容易地进行这项活动。StyleCop现在包含了 200 个左右的最佳实践规则(best practice rules),这些规则与 Visual Studio 2005 和 Visual Studio 2008 中默认的代码格式化规则是一致的。它会根据预定义的C#代码格式的最佳实践,对我们的源代码进行检查,并给出不符合编码风格的错误提示。这一点来说与微软的另一个代码检查工具 FxCop 很相似,但 FxCop 是对 dll (compiled binaries) 进行检查,所以 FxCop 适用于新项目通过持续集成工具来使用的情况。也就是说 FxCop 是项目级别的,而 StyleCop是代码级别的,更适合于程序员在编程过程中使用。

StyleCop检查的规则包括:

布局(Layout of elements, statements, expressions, and query clauses )
括号位置(Placement of curly brackets, parenthesis, square brackets, etc )
空格(Spacing around keywords and operator symbols )
行距(Line spacing )
参数位置(Placement of method parameters within method declarations or method calls )
元素标准排列(Standard ordering of elements within a class )
注释格式(Formatting of documentation within element headers and file headers )
命名(Naming of elements, fields and variables )
内置类型的使用(Use of the built-in types )
访问修饰符的使用(Use of access modifiers )
文件内容(Allowed contents of files )
Debugging文本(Debugging text)
常用规则

基础

Invalid spacing around the comma :’,’后面需要加空格(几个无所谓)

Invalid spacing around the opening curly bracket:’{‘前后面需要加空格(仅仅一个,要不然就报’The code contains multiple spaces in a row. Only one space is needed’)

Invalid spacing around the closing curly bracket: ‘}’前面需要加空格(同上)

All using directives must be placed inside of the namespace: using指令需要移到命名空间内

例如:

复制代码
复制代码
using System; using System.Text;
Namespace StyleCopDemo {
          Public class Person       {
          } } //应该为Namespace StyleCopDemo {      using System;      using System.Text;
     Public Class Person      {
         } }

复制代码
复制代码

Adjacent elements must be separated by a blank line:紧邻的元素之间必须用空格行隔开,例如using命名空间和namespace之间。

An opening curly bracket must not be followed by a blank line: ‘{‘下面一行不允许是空行

A closing curly bracket must not be preceded by a blank line: ‘}’上面一行不允许是空行

Using directives must be sorted alphabetically by the namespaces:using语句必须要按照字母排序(顺序)

The code must not contain multiple blank lines in a row:代码中不允许一行中有多行空行。

错误:



正确为:



文档规范:

The class must have a documentation header:定义的类必须含有文件头标志’///’而且其中的内容介绍最好是带有空格的(有点变态),不然可能会报’ The documentation text within the summary tag does not contain any whitespace between words, indicating that it most likely does not follow a proper grammatical structure required for documentation text’,例如:

复制代码
    /// <summary>/// 用户类 用户基本信息     /// </summary>    public class Person     {     }
复制代码
The file has no header, the header Xml is invalid, or the header is not located at the top of the file:

需要在文件开头上加:

复制代码

//------------------------------------------------------- //    <copyright file="Person.cs" company="MyCompany"> //             Copyright MyCompany. All rights reserved. //    </copyright> //-------------------------------------------------------

复制代码
注意缩进格式。

A C# document may only contain a single class at the root level unless all of the classes are partial and are of the same type:【猜】C#文档一般只能包含对一个类的描述。除非这些类是partial类型或者是同类型的。这种错误一般是在一个*.cs文件中有多个不同类型的类。

函数规范:

The method must have an access modifier:方法需要访问修饰符(public private protected..)

The method must have a documentation header:方法必须要文档说明就是以‘///’开头的。

‘///’规范要求:

标签内的内容不允许为空。内容最好是用空格隔开否则会报‘The documentation text within the summary tag does not contain any whitespace between words, indicating that it most likely does not follow a proper grammatical structure required for documentation text’;

实例:



字段规范:

The field must have an access modifier:字段必须要有修饰符

Variable names must start with a lower-case letter:字段的名字必须是小写开头的

The field must have a documentation header:字段必须要有文档说明,以///开头的

有些程序员喜欢以_开头来命名字段,但是StyleCop是不推荐的。(Field names must not start with an underscore)

StyleCop放在 http://stylecop.codeplex.com/,最新版本是2012年7月5日发布 4.7.44版本。更多的信息可以关注StyleCop开发团队的blog:http://blogs.msdn.com/sourceanalysis

StyleCop提供了简单和有效的方式来对项目的代码编写风格进行检查。StyleCop可以多种方式运行,可以插件的方式在Visual Studio的IDE中运行;也可以MSBuild任务的方式运行,可整合到程序构建流程中;或者以命令行的方式运行,可针对一个或多个代码文件进行检查。

StyleCop的命令行使用方法:

Usage:    StyleCopCmd [options] [path]

Options:    -a         Process all source files found under the start path (default)    -cs {
   file} Analyze the specified file.    -f         Perform a full analyze (ignore cached results)    -u         Do not write results cache files.    -o {
   file}  Apply the given StyleCop options file to all projects and files    -l {
   file}  Save violation report at the given location. If omitted, saves               StyleCopViolations.xml in the current directory.    -p {
   path}  Attempts to discover StyleCop AddIn modules under the given               path. This flag may be specified multiple times to search under               multiple paths    -i         Ignore the default StyleCop AddIn path under the All Users\Applica tion Data folder

Conditional Compilation Flags:    -define:FLAG1;FLAG2;FLAG3

Path:    Specifies the path to begin search for source files.    If this is omitted, uses the current directory as the    start path.

本文来自云栖社区合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

目录
相关文章
|
9月前
|
Web App开发 Java 测试技术
反了!居然让我教她自动化测试!
反了!居然让我教她自动化测试!
51 1
|
JavaScript 前端开发 安全
15个最佳的代码评审(Code Review)工具
  代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码审查程序以各种形式,如结对编程,代码抽查等。在这个列表中,我们编制了15个最好的代码审查工具,这将有助于开发者节省代码审查时间。
4677 0
|
编解码 人工智能 物联网
如何快速搭建一个像“天猫精灵”的智能语音助手?
天猫精灵相信大家都不陌生了,它是阿里巴巴于2017年7月5日发布的AI智能终端品牌。让用户以自然语言对话的交互方式,实现影音娱乐、购物、信息查询、生活服务等功能操作,成为消费者的家庭助手。本文将介绍如何快速搭建一个像“天猫精灵”一样聪明的智能语音助手。
1546 15
如何快速搭建一个像“天猫精灵”的智能语音助手?
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
|
Web App开发 JavaScript 关系型数据库
|
网络安全 开发工具 数据安全/隐私保护
|
Web App开发 自然语言处理 Java
自动化测试
自动化测试
349 0
自动化测试
|
9月前
|
计算机视觉
【论文速递】CVPR2022 - 基于可重复使用的教师分类器的知识蒸馏
【论文速递】CVPR2022 - 基于可重复使用的教师分类器的知识蒸馏
|
8月前
|
JavaScript Java Go
Nacos vs. Eureka:微服务注册中心的对比
Nacos vs. Eureka:微服务注册中心的对比
545 0
|
存储 数据可视化 数据安全/隐私保护
一文概述联邦持续学习最新研究进展(2)
一文概述联邦持续学习最新研究进展
612 0

相关实验场景

更多