CheckStyle及其配置的详细解释

来源:互联网 发布:javascript源码大全 编辑:程序博客网 时间:2024/06/06 09:25

代码格式化的好处我想我就不需要说了,大家肯定也都理解其优点,否则你也不会看这个文档.
  
  这里我以CheckStyle3.4为例,讲解CheckStyle的使用,确切的说是其配置的具体解释,假如你是Checkstyle3.4以下,那么有一部分module将是不可以答应的,请删除之;在这份文档中我试图把所有的module都分析讲解一次,同时下面的这份文档也是我的设置,对于我个人不喜欢的设置我都注释了,假如你需要请取消注释或如何!!
  
  Checkstyle简介,其是目前最广泛使用的代码检查工具,功能强大,操作简单可以和Ant结合使用,最重要的是其是Open Source的,你不用担心收到律师函,哈哈!
  
  主页: http://checkstyle.sourceforge.net/
  
  下载本文示例: olics_checkstyle_checks.zip
  
  开始我们的讲解:
  首先,Checkstyle可以和Ant结合使用,下面是Ant脚步片断
  <!--CheckStyle配置,这里你替换成你实际的环境-->
  <property name="checkstyle.config" value="${project.docs.dir}/checkstyle_checks.XML"/>
  <property name="checkstyle.report.style" value="${project.docs.dir}/checkstyle-frames.xsl"/>
  <property name="checkstyle.result" value="${build.checkstyleReport.dir}/checkstyle_result.xml"/>
  <property name="checkstyle.report" value="${build.checkstyleReport.dir}/checkstyle_report.Html"/>
  <!―CheckStyle脚步-->
  <taskdef resource="checkstyletask.properties" classpathref=" checkstyle-all-3.4.jar"/>
  <target name="checkstyle_check" depends="init">
  <checkstyle config="${checkstyle.config}" failOnViolation="false" failureProperty="checkstyle.failure">
  <formatter type="xml" tofile="${checkstyle.result}"/>
  <fileset dir="${project.src.dir}" includes="**/*.Java"/>
  </checkstyle>
  <!―生成报告,其格式取决于${checkstyle.report.style}-->
  <style in="${checkstyle.result}" out="${checkstyle.report}" style="${checkstyle.report.style}"/>
  </target>
  
  下面是我理解的 Checkstyle 的使用 :
  
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN"
  "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
  <!-- 对于所有的模块来书,假如有这个模块则说明检测这一项,没有则不检测这一项 -->
  <!-- 所有的模块中,其ROOT必须为Checker -->
  <module name="Checker">
  <!-- 检验每个包是否存在package.html文件-->
  <!-- See http://checkstyle.sf.net/config_javadoc.html#PackageHtml -->
  <!--
  <module name="PackageHtml"/>
  -->
  <!-- 检验每个文件末尾是否有一个空行,在UNIT机器上是有的,在CVS上假如没有会有警告的-->
  <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
  <!--
  <module name="NewlineAtEndOfFile"/>
  -->
  <!-- Checks that property files contain the same keys. -->
  <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
  <module name="Translation"/>
  <module name="TreeWalker">
  <!-- Checks for Javadoc comments. -->
  <!-- See http://checkstyle.sf.net/config_javadoc.html -->
  <!-- Checks Javadoc comments for method definitions.-->
  <module name="JavadocMethod">
  <property name="scope" value="public"/>
  <!-- 是否答应错误的参数声明,true为答应,缺省为不答应 -->
  <property name="allowMissingParamTags" value="true"/>
  <!-- 是否答应错误的错误声明,true为答应,缺省为不答应 -->
  <property name="allowMissingThrowsTags" value="true"/>
  <!-- 是否答应错误的返回类型声明,true为答应,缺省为不答应 -->
  <property name="allowMissingReturnTag" value="true"/>
  </module>
  <!--Checks Javadoc comments for class and interface definitions.-->
  <module name="JavadocType"/>
  <!-- Checks that variables have Javadoc comments.-->
  <module name="JavadocVariable">
  <property name="scope" value="protected"/>
  </module>
  <!-- 检查Javadoc的格式 -->
  <module name="JavadocStyle">
  <property name="scope" value="public"/>
  <!-- Comment的第一句的末尾是否要有一个句号,true必须有,default为true -->
  <property name="checkFirstSentence" value="false"/>
  <!-- 检查错误的HTML脚本,比如不匹配,true检查,default为true -->
  <property name="checkHtml" value="true"/>
  </module>
  <!-- Checks for Naming Conventions. -->
  <!-- See http://checkstyle.sf.net/config_naming.html -->
  <!-- 确省必须以Abstract开始或者以Factory结束 -->
  <!--
  <module name="AbstractClassName"/>
  -->
  <module name="ConstantName"/>
  <module name="LocalFinalVariableName"/>
  <module name="LocalVariableName"/>
  <module name="MemberName"/>
  <module name="MethodName"/>
  <module name="PackageName"/>
  <module name="ParameterName"/>
  <module name="StaticVariableName"/>
  <module name="TypeName"/>
  <!-- Checks for Headers -->
  <!-- See http://checkstyle.sf.net/config_header.html -->
  <!-- 检查文件是否以指定文件开始,这里最好是放一些版权信息和工程描述 -->
  <!-- headerFile:指定的文件 -->
  <!-- ignoreLines:忽略哪些行,以","分隔 -->
  <!--
  <module name="Header">
  <property name="headerFile" value="java.header"/>
  <property name="ignoreLines" value="2, 3, 4, 5"/>
  </module>
  -->
  <!-- Following interprets the header file as regular eXPressions. -->
  <!--
  <module name="RegexpHeader"/>
  -->
  <!-- Checks for imports -->
  <!-- See http://checkstyle.sf.net/config_import.html -->
  <!-- 检查使用*号的导入,默认为全部类 -->
  <module name="AvoidStarImport"/>
  <!-- 检查是否有非法的包,确省检查sun.*;对于某些包是不建议直接调用的 -->
  <module name="IllegalImport">
  <property name="illegalPkgs" value="sun.*"/>
  </module>
  <!-- 检查多于的导入,如一个类导入了多次 -->
  <module name="RedundantImport"/>
  <!-- 检查没有使用的导入 -->
  <module name="UnusedImports"/>
  <!-- 导入排序 -->
  <!-- groups:分组,哪些是一组的 -->
  <!-- ordered:同一个组内是否排序,true排序,确省为true -->
  <!-- separated:各个组之间是否需要用空行分隔,确省为false -->
  <!-- caseSensitive:是否是大小写敏感的,确省是 -->
  <!--
  <module name="ImportOrder">
  <property name="groups" value="java,javax"/>
  <property name="ordered" value="true"/>
  <property name="separated" value="true"/>
  <property name="caseSensitive" value="true"/>
  </module>
  -->
  <!-- Checks for Size Violations. -->
  <!-- See http://checkstyle.sf.net/config_sizes.html -->
  <!-- 检查方法内可执行语句的个数,确省为30行 -->
  <!--
  <module name="ExecutableStatementCount">
  <property name="max" value="30"/>
  </module>
  -->
  <!-- 文件的最大行数,缺省为1500 -->
  <module name="FileLength">
  <property name="max" value="2000"/>
  </module>
  <!-- 每行的最大字符数,缺省为80 -->
  <module name="LineLength">
  <!-- 忽略指定格式的行,如*号开始的,等 -->
  <!--
  <property name="ignorePattern" value="^ *\* *[^ ]+$"/>
  -->
  <property name="max" value="120"/>
  </module>
  <!-- 方法的最大行数,缺省为150 -->
  <module name="MethodLength">
  <property name="max" value="200"/>
  <!-- 统计时是否包括空行和以//开始的注释,缺省为统计(true)-->
  <property name="countEmpty" value="false"/>
  </module>
  <!-- 匿名类的最大行数,缺省为20 -->
  <module name="AnonInnerLength">
  <property name="max" value="60"/>
  </module>
  <!-- 检查方法和构造子参数的最大个数,缺省为7 -->
  <module name="ParameterN
关注此文的读者还看过:
·2013-8-13 8:55:48 使用Java将Word转为Html或txt!
·2013-8-13 8:55:48 精通Hibernate之映射继承关系七(图)
·2013-8-13 8:55:47 根据name调用getName方法
·2013-8-13 8:55:46 Java GUI误解 因为外观而拒绝Swing?
·2013-8-13 8:55:38 Java的字符串操作
·2013-8-13 8:55:36 Java的文件与磁盘操作
 

资料引用:http://www.knowsky.com/367856.html

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 幼儿洗澡冷到了怎么办 洗澡着凉感冒了怎么办 小孩抓妈妈头发怎么办 新生儿吃奶呛奶怎么办 2个月猫不吃东西怎么办 新生小牛不吃奶怎么办 一岁宝宝喝夜奶怎么办 小狗不会吸奶怎么办 婴儿喝水总呛怎么办 小羊刚出生吃奶怎么办 新生儿被呛到了怎么办 羊产后无奶怎么办 新生小猫不吃奶怎么办 婴儿吃母乳咳嗽怎么办 小孩呛到了咳嗽怎么办 婴儿喝水呛着怎么办 婴儿吃药呛到了怎么办 新生儿用奶瓶喝奶呛着怎么办 新生儿喝水呛到怎么办 宝宝吃奶呛到了怎么办 羔羊高烧不退怎么办 小孩晚上咳嗽厉害怎么办 婴儿经常呛咳怎么办 新生儿3小时喂奶怎么办 宝宝不会吸奶怎么办 4岁宝宝打呼噜怎么办 宝宝感冒拒奶怎么办 新生儿吸奶无力怎么办 吃奶小牛肚子胀怎么办 新生儿吃奶后打嗝怎么办 新生儿吃多漾奶怎么办 婴儿总是睡不熟怎么办 新生儿不不吃奶怎么办 学生沉迷网络游戏班主怎么办 手机用不了卡怎么办 手机变竖屏怎么办 游戏不支持分屏怎么办 服装设计做到没思路怎么办 眼睛变单眼皮了怎么办 换手机号银行卡绑定怎么办 麦当劳mdp改版了怎么办