使用StyleCop进行代码审查
使用StyleCop进行代码审查
工欲善其事,必先利其器,上篇简单介绍了怎样使用Astyle进行代码格式化,使编写的代码具有一致的风格。今天简单介绍下怎样使用StyleCop对原代码进行审查,看编写的代码是否遵循设计规范、.Net约定和一些贯用法等。保证代码的一致性,可读性等等。
在此之前,先简单介绍下FxCop(起初只是微软内部使用的工具),一个分析托管程序集,检测代码的总体正确性的工具,告诉用户哪些地方不符合设计规范。他使用的评估规则已经发展了多年,凝聚了顶尖.Net框架开发人员的知识和技术。但是FxCop是基于托管代码分析的,即编译后的程序集。今天我们介绍的StyleCop同样是用来检查代码是否符合设计规范的,它是基于原代码验证的,仅支持C#语言,就是在开发期间进行代码验证的工具,相信在日常开发中,会帮助到大家,在使用工具的同时,逐渐改善和提高大家的编码规范和意识,另外,相关内容推荐大家读下《.Net设计规范-.Net约定、贯用法与模式》这本书。好了,入题:
首先,还是先下载最新版的StyleCop.
下载地址:http://stylecop.codeplex.com/
当前最新版本是StyleCop-4.7.37.0.msi,版本4.7,下载完成后,开始安装,安装过程非常简单,这里就不上图了。安装完成后,好像没什么反应,在开始菜单也不会出现相关菜单。没关系,现在打开Visual Studio,我以Visual Studio2010为例,见下图:
在项目菜单上会出现StyleCop相关菜单。
点击“Run StyleCop”,呵,警告一大堆,见下图:
StyleCop已经把不符合规范的相关警告全部列出,并且已经定位到行和列,双击任一条项目即可定位到问题点。
也可以基于单个文件进行检查,只要在当前代码页右键点击“Run StyleCop”即可,见下图:
其中检验的规则可在项目名称的右键菜单“StyleCop Settings”中设定,见下图,使用中发现对中文支持的不是很好。其中一些不适用的校验规则可以不勾选即可。
下面主要对一些常见的警告简单说明:
SA1633 : CSharp.Documentation : The file has no header, the header Xml is invalid, or the header is not located at the top of the file.
代码不包含文件头说明,格式如下。
//-----------------------------------------------------------------------
// <copyright file="Widget.cs" company="Sprocket Enterprises">
// Copyright (c) Sprocket Enterprises. All rights reserved.
// </copyright>
// <author>John Doe</author>
//-----------------------------------------------------------------------
SA1507 : CSharp.Layout : The code must not contain multiple blank lines in a row.
代码部分存在多个空格
SA1600 : CSharp.Documentation : The method must have a documentation header.
方法必须要头部说明,只要在方法前键入3个斜杠,IDE自动会根据该方法生成相关头文档说明。
SA1400 : CSharp.Maintainability : The class must have an access modifier.
类必须要有一个访问修饰符,如:public、private等。
SA1513 : CSharp.Layout : Statements or elements wrapped in curly brackets must be followed by a blank line.
语句之间要有空行。
SA1202 : CSharp.Ordering : All private methods must be placed after all public methods.
私有方法要放在公有方法子后。
SA1650 : CSharp.Documentation : The documentation text within the summary tag contains incorrectly spelled words: 异常测试
这个是对中文支持的不够好。拼写检查识别不到。
其他还有常见的变量首字母小,常量首字母大写,等等常规检查,其它规则请参见StyleCop使用说明。
使用StyleCop进行代码审查的更多相关文章
- 使用AStyle进行代码格式化
转自:http://www.cnblogs.com/JerryTian/archive/2012/09/20/AStyle.html 在日常的编码当中,大家经常要遵照一些设计规范,如命名规则.代码格式 ...
- 解决Protobuf生成的C#代码命名不规范问题
起因 通常使用Protobuf的步骤为 定义 .proto 文件 使用 protoc 生成对应语言的代码 以生成C#代码为例,使用如下命令: protoc -I ../protos --csharp_ ...
- 代码审查工具StyleCop
“代码审查”或是“代码评审”(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻辑.思路 ...
- 使用StyleCop.Analyzers进行代码审查
为什么要进行代码审核? 提早发现代码中的BUG,避免将BUG带到生产环境 极大的提高软件质量,以及可维护性 统一代码规范.提高可读性,减少新加入成员的熟悉时间 加速个人和团队的成长,知识和经验的积累 ...
- 代码审查工具 StyleCop 的探索
最近我们Advent Data Service (ADS) 在项目上需要按照代码规范进行代码的编写工作,以方便将来代码的阅读与维护. 但是人工检查起来容易遗漏或者格式不统一, ReSharper又是收 ...
- C#代码审查工具 StyleCop
SourceAnalysis (StyleCop)的终极目标是让所有人都能写出优雅和一致的代码,因此这些代码具有很高的可读性. SourceAnalysis (StyleCop)不是代码格式化(代码美 ...
- 用StyleCop规范团队代码
前言 编码风格,每个人都是有不同的特点,风格各异,而且一个人在不同的时期,编码风格的差异也可能是非常大的,好比学生时代,刚工作的时候,工作一段时间后等. 在一个团队中,或一个项目中,如果出现了N种风格 ...
- 使用stylelint对CSS/Sass做代码审查
对样式审查?很少人会这么做吧,但实际上开发者应该有这样的态度,尤其是不同团队多人开发时,这一点尤为重要. 在本文中,我将陈述两点:一是为什么我们需要对样式进行审查,二是如何将审查工具融合到整体的构建流 ...
- Android APK瘦身之Android Studio Lint (代码审查)
******** ******** 第一部分: 瘦身内容介绍 ******** ******** 项目新版本的迭代接近尾声, 因为历史累积问题, 导致有很多无效的资源让已经臃肿的APK变得更肿, 因此 ...
随机推荐
- 003商城项目:数据库的创建以及ssm框架的整合
我们创建一个数据库.如下: 然后开始整合框架: 先给出整合框架的思路: 我们的Dao层用的是Mybatis,其实Mybatis与Spring整合要做的就是把他的数据库连接这部分全部交给Spring来 ...
- 【点滴积累,厚积薄发】windows schedule task中.exe程序的路径问题等问题总结
1.在发布ReportMgmt的Job时遇到一个路径问题,代码如下: doc.Load(@"Configuration\Business\business.config"); ...
- SQL Server存储过程中使用表值作为输入参数示例
这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...
- KindEditor得不到textarea值的解决方法
转自:http://blog.phpha.com/archives/510.html 以前有朋友遇到过这个问题,就是KindEditor在火狐下或者其他浏览器下都无法得到textarea文本框的值,点 ...
- java:利用xpath删除xml中的空节点
原始xml内容: <data> <a> </a> <b>b1</b> <awb> <awbpre>123</a ...
- Java面试知识点总结
本篇文章会对面试中常遇到的Java技术点进行全面深入的总结,帮助我们在面试中更加得心应手,不参加面试的同学也能够借此机会梳理一下自己的知识体系,进行查漏补缺(阅读本文需要有一定的Java基础:若您初涉 ...
- HTML5+JS 《五子飞》游戏实现(六)鼠标响应与多重选择
上一章我们提到了如果有多条线上的棋子可以被吃掉,那么游戏需要提示用户,让用户选择吃哪条线上的.另外因为是网页游戏,所以一定要实现鼠标单击棋子可以进行操作. 当鼠标移动棋子上面后,切换鼠标指针为手形,移 ...
- 也来山寨一版Flappy Bird (js版)
随着Flappy Bird的火爆,各种实现的版也不断出现,于是也手痒简单实现了一版. 其实本来只是想实现一下这只笨鸟的飞翔运动的,后来没忍住,就直接实现一个完整游戏了…… 因为这个游戏本身实现起来就没 ...
- 记一次在Linux上面启动部署在tomcat服务器的程序
前提:Linux系统已安装好jre环境 1.文件结构: 文件说明: 部署文件包含以下文件:1.apache-tomcat-7 程序运行的应用服务器tomcat包含: war包:apache-tomc ...
- MVC———用自定义扩展类实现验证
废话少说,直接上图 →_→ NO.1 NO.2 NO.3 NO.4 NO.5 NO.6 NO.7 NO.8 NO.9 NO.10 NO.11 NO.12 NO.13 NO.14 NO.15 NO.16 ...