Android学习系列(24)--App代码规范之使用CheckStyle
来源:互联网 发布:淘宝黄缘盒龟 编辑:程序博客网 时间:2024/04/28 14:06
最近经常思考团队开发的一些东西,其中代码风格不统一是最常见的问题之一。按理说,大家协商和沟通一下,风格统一一下就可以了,其实不然,因为这是个个性张扬的时代!
工作code review中用了CheckStyle小半年了,觉得很好很强大很方便,大家写出来的代码就像一个人写出来的一样,值此辞旧迎新,特简做说明,与尔同飨。
1.简介
官方网站:http://checkstyle.sourceforge.net/
CheckStyle提供了一个帮助JAVA开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要,但是枯燥的任务中解脱出来。
CheckStyle检验的主要内容
(1). Javadoc注释
(2). 命名约定
(3). 标题
(4). Import语句
(5). 体积大小
(6). 空白
(7). 修饰符
(8). 块
(9). 代码问题
(10). 类设计
(11). 混合检查(包活一些有用的比如非必须的System.out和printstackTrace)
2.定制
官方提供的代码规范往往太过严格,在工作中使用不太现实,所以有必要根据具体情况来定制具体的代码规范,CheckStyle对代码规范的定制提供了很多大灵活性。
下面我们来定义一些基本的规范,后续有增加我们再修改。
(1). 不要tab键;
(2). 避免重复的import, 多余的import和import *
(3). 常量全部大写字母(static final);
(4). 成员变量以m开头;
(5). 当有多重修饰符时,修饰符采用以下顺序:(public,protected,private,abstract,static,final,transient,volatile,synchronized,native,strictfp)
... ...
其他的我们后面慢慢的修改。
3.配置文件
在运行checkstyle时,需要一个参数(注:我的ubuntu服务器上安装的checkstyle5.4版本,最新的是5.5版本):
这个配置文件就是用来定义你自己定制的代码规范,你可以参考官方说明:http://checkstyle.sourceforge.net/availablechecks.html
这里,我们根据上面说的,来写这样一个code_check.xml :
<?xml version="1.0"?><!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd"><module name="Checker"> <!-- 检查文件是否以一个新行结束--> <module name="NewlineAtEndOfFile"/> <!-- 检查文件中是否含有tab键--><module name="FileTabCharacter"/><module name="TreeWalker"> <!-- 常量全部用大写--> <module name="ConstantName"/><!-- 避免.*,重复多余的和不使用的import--><module name="AvoidStarImport"/> <module name="RedundantImport"/> <module name="UnusedImports"/> <!-- 成员变量格式为:m+大写+字母--><module name="MemberName"><property name="format" value="^m[A-Z][a-zA-Z0-9]*$"/></module><!-- 检查代码块:起始大括号和if等同行,不能有空的代码块,结束大括号另起一行--><module name="LeftCurly"/> <module name="NeedBraces"/> <module name="RightCurly"/> <!-- 当有多重修饰符时,修饰符采用以下顺序: (public,protected,private,abstract,static,final, transient,volatile,synchronized,native,strictfp) --><module name="ModifierOrder"/> </module></module>
更多检查规范中文说明参考园子里地址: http://www.cnblogs.com/liugang/archive/2010/10/26/1860903.html
4.使用checkstyle
插件工具的使用我就不介绍了,我只想起个抛砖引玉的作用,checkstyle命令非常简单,这里我只说明3个参数:-c, -r, -o。
/******************* ***CheckStyle Usage** ******************//*** *参数 *1. -c 配置文件,并验证文件 *2. -o 输出结果 *3. -r 遍历目录 **///用我们定制的code_checks.xml检查文件$>checkstyle -c ~/GitProj/world/code_checks.xml ~/GitProj/world/floworld/src/com/tianxia/app/floworld/appreciate/AppreciateLatestActivity.java//用我们定制的code_checks.xml检查目录下的所有源文件,并把结果输出到result.txt中$>checkstyle -c ~/GitProj/world/code_checks.xml -r ~/GitProj/world/floworld/src/com/tianxia/app/floworld/appreciate/
我们打开result.txt来看下输出结果:
又是tab又是命名不规范,非常的准确。
5.与Git挂钩
快12点了,我先把文章发表出来,这部分随后我再补写。
- Android学习系列(24)--App代码规范之使用CheckStyle
- Android学习系列(24)--App代码规范之使用CheckStyle
- Android学习系列(22)--App代码规范之使用checkstyle
- checkStyle代码规范
- Checkstyle 系列之认识 Checkstyle
- Checkstyle 系列之安装 Checkstyle
- 编码规范系列----CheckStyle使用手册
- Eclipse代码规范工具-Checkstyle安装和使用
- 安卓开发 第十篇 使用Checkstyle规范代码
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- 代码规范工具-Checkstyle使用手册
- sbrk 和brk 函数使用举例
- cocos2d-x-lua随记01
- Android学习系列(20)--App数据格式之解析Json
- Android学习系列(22)--App主界面比较
- Android学习系列(23)--App主界面实现
- Android学习系列(24)--App代码规范之使用CheckStyle
- struts2知识点浅析
- EF DBContext 释放问题
- Android中使用【microlog4】进行日志存储
- Cost Function Intuition
- 进程和线程的区别
- 使用反射生成JDK动态代理---使用Proxy和InvocationHandler创建动态代理
- 使用反射生成JDK动态代理---动态代理和AOP
- Windows 检查更新 WindowsUpdate 8024402F 错误的解决方法,更换默认DNS服务器