Eclipse中使用Checkstyle,checkstyle插件检查java代码的自定义配置文件

来源:互联网 发布:php mysql防注入 编辑:程序博客网 时间:2024/04/26 15:38

转自:http://blog.csdn.net/sxdtzhaoxinguo/article/details/43449899

摘要:近来项目组在搞代码检查,所以领导让把checkstyle这个插件搞明白,现在我把我们写的自定义的checkstyle.xml文件记录一下,以便大家可以一起使用:

一:要使用checkstyle插件在eclipse中检查Java代码,那必须的先安装eclipse的checkstyle插件,如何安装,我相信大家知道,这里就不多说了

二:下面就是自定义的checkstyle.xml文件(这个是核心)

[html] view plain copy 在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">    
  3. <!--   
  4.     This configuration file was written by the eclipse-cs plugin configuration editor   
  5. -->    
  6. <!--    
  7.     Checkstyle-Configuration: check    
  8.     Description: none    
  9. -->    
  10. <module name="Checker">  
  11.       
  12.     <property name="severity" value="error"/>  
  13.     <property name="charset" value="UTF-8"/>  
  14.     <message key="general.exception" value="有一个异常 - {0}  "/>  
  15.     <message key="general.fileNotFound" value="文件没找到!"/>  
  16.       
  17.     <!--章节2.2A  -->  
  18.     <!-- 不允许使用TAB缩进,此规则必须在<TreeWalker>标签外 -->  
  19.     <module name="FileTabCharacter">  
  20.         <property name="severity" value="error"/>  
  21.         <property name="eachLine" value="true"/>  
  22.         <message key="containsTab" value="本行包含 tab 字符,违反编码规范2.2章节"/>  
  23.     </module>  
  24.       
  25.     <!--章节3.1.1  -->  
  26.     <!-- 检查每个java package中是否有java注释文件,默认是允许一个package-info.java,  
  27.     也可以通过allowLegacy属性配置允许package.html。此规则必须在<TreeWalker>标签外 -->  
  28.     <module name="JavadocPackage" />  
  29.   
  30.     <module name="TreeWalker">  
  31.         <property name="severity" value="error"/>    
  32.         <property name="tabWidth" value="4"/>    
  33.         <message key="general.exception" value="有一个异常 - {0}"/>   
  34.      
  35.         <!--章节1.2.2 -->  
  36.         <!-- 修饰符顺序检测 -->  
  37.         <module name="ModifierOrder">    
  38.             <message key="mod.order" value="''{0}'' 修饰符顺序错误.违反编码规范1.2.2章节"/>    
  39.             <message key="annotation.order" value="''{0}'' 注释修饰符不能在非注释修饰符前面."/>    
  40.         </module>  
  41.           
  42.         <!--章节2.2B  -->     
  43.         <!-- 缩进风格-->  
  44.         <module name="Indentation">  
  45.             <property name="severity" value="error"/>  
  46.             <property name="basicOffset" value="4"/>  
  47.             <message key="indentation.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格,违反编码规范2.2章节"/>  
  48.             <!-- 子级缩进 -->  
  49.             <message key="indentation.child.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格,违反编码规范2.2章节"/>  
  50.         </module>  
  51.           
  52.         <!--章节2.3  -->  
  53.         <!-- 页宽-->  
  54.         <module name="LineLength">    
  55.             <property name="max" value="80"/>    
  56.             <message key="maxLineLen" value="行字符数超过80个.违反编码规范2.3章节"/>    
  57.         </module>   
  58.           
  59.         <!--章节2.4 -->  
  60.         <!--操作符换行策略检查-->  
  61.         <module name="OperatorWrap">  
  62.             <property name="severity" value="error"/>  
  63.             <property name="option" value="nl"/>  
  64.             <property name="tokens" value="ASSIGN,BAND,BOR,DIV,EQUAL,GE,GT,LAND,LE,LOR,LT,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS,PLUS_ASSIGN,QUESTION,STAR,STAR_ASSIGN"/>  
  65.             <message key="line.after" value="''{0}'没有放在新行之首,违反编码规范2.4章节"/>  
  66.         </module>      
  67.       
  68.         <!--章节2.6  -->  
  69.         <module name="ParenPad">  
  70.             <property name="severity" value="error"/>  
  71.             <property name="tokens" value="LPAREN,RPAREN,CTOR_CALL,METHOD_CALL,SUPER_CTOR_CALL"/>  
  72.             <message key="ws.followed" value="''{0}'' 后面有空格,违反编码规范2.6章节"/>  
  73.             <message key="ws.preceded" value="''{0}''前面有空格,违反编码规范2.6章节"/>  
  74.         </module>      
  75.         <module name="TypecastParenPad">  
  76.             <property name="severity" value="error"/>  
  77.             <property name="tokens" value="RPAREN,TYPECAST"/>  
  78.             <message key="ws.followed" value="''{0}''后面多一个空格,违反编码规范2.6章节"/>  
  79.             <message key="ws.preceded" value="''{0}''前面多一个空格,违反编码规范2.6章节"/>  
  80.         </module>      
  81.         <module name="WhitespaceAfter">  
  82.             <property name="severity" value="error"/>  
  83.             <property name="tokens" value="COMMA,SEMI"/>  
  84.             <message key="ws.notFollowed" value="''{0}''后面多一个空格,违反编码规范2.6章节"/>  
  85.         </module>      
  86.         <module name="WhitespaceAround">  
  87.             <property name="severity" value="error"/>  
  88.             <property name="tokens" value="RCURLY,LITERAL_ASSERT,LITERAL_ASSERT,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE"/>  
  89.             <property name="allowEmptyConstructors" value="true"/>  
  90.             <property name="allowEmptyMethods" value="true"/>  
  91.             <message key="ws.notPreceded" value="''{0}'' 关键字前少一个空格,违反编码规范2.6章节"/>  
  92.             <message key="ws.notFollowed" value="''{0}'' 关键字后少一个空格,违反编码规范2.6章节"/>  
  93.         </module>  
  94.           
  95.         <!--章节2.7 -->  
  96.         <!-- 每行语句数量-->  
  97.         <module name="OneStatementPerLine">  
  98.             <!--模块的元数据类型设置,经过测试发现该标签没用-->  
  99.             <metadata name="net.sf.eclipsecs.core.comment" value="Coding Problems-> Only one statement per line allowed" />  
  100.               
  101.             <message key="multiple.statements.line" value="禁止一行有多句代码,违反编码规范2.7章节" />  
  102.         </module>  
  103.           
  104.         <!--章节2.8 -->  
  105.         <!-- 每行变量声明数量-->  
  106.         <module name="MultipleVariableDeclarations">    
  107.             <property name="severity" value="error"/>    
  108.             <message key="multiple.variable.declarations.comma" value="每一个变量的定义必须在它的声明处,且在同一行,违反编码规范2.8章节"/>    
  109.             <message key="multiple.variable.declarations" value="每一行只能定义一个变量,违反编码规范2.8章节"/>    
  110.         </module>       
  111.               
  112.         <!--章节2.9.1  -->  
  113.         <!-- Checks the placement of right curly braces ('}') for  else, try, and catch tokens. The policy to verify is specified using property  option.     
  114.           option: 右大括号是否单独一行显示    
  115.           tokens: 定义检查的类型  -->    
  116.         <module name="RightCurly">      
  117.             <property name="option" value="alone"/>   
  118.             <property name="severity" value="error"/>                   
  119.         </module>   
  120.           
  121.         <!--章节2.9.1  -->    
  122.         <!-- 检查左侧大括号 左侧大括号必须放在前一行代码的行尾 -->  
  123.         <module name="LeftCurly">  
  124.             <property name="severity" value="error"/>  
  125.             <message key="line.previous" value="左侧大括号没有放在前一行代码的行尾,违反编码规范2.9.1章节"/>  
  126.         </module>   
  127.           
  128.         <!--章节2.9.2  -->  
  129.         <!-- 检查代码块是否缺失大括号-->  
  130.         <module name="NeedBraces">    
  131.             <message key="needBraces" value="''{0}'' 结构没有用大括号 '''{}'''s,违反编码规范2.9.2章节"/>    
  132.         </module>   
  133.           
  134.         <!-- 章节3.2 -->  
  135.         <!-- 对文件头的注释进行检查 -->  
  136.           
  137.           
  138.         <!--章节3.3  -->  
  139.         <!--对类和接口的javadoc注释进行检查-->  
  140.         <module name="JavadocType">  
  141.             <property name="severity" value="error"/>  
  142.             <message key="type.missingTag" value="Javadoc 类型的注释丢失 {0} 标签.违反编码规范3.3章节"/>  
  143.             <message key="javadoc.missing" value="缺少 Javadoc 注释.违反编码规范3.3章节"/>  
  144.             <message key="javadoc.unusedTagGeneral" value="未使用过的 Javadoc 标签.违反编码规范3.23章节"/>  
  145.             <message key="javadoc.unusedTag" value="未使用过的 {0} 标签for ''{1}''.违反编码规范3.3章节"/>  
  146.             <message key="type.tagFormat" value="Javadoc 类型标签 {0}必须匹配模式 ''{1}''.违反编码规范3.3章节"/>  
  147.         </module>  
  148.           
  149.         <!--章节3.4,3.7  -->      
  150.         <!--public protect private变量的注释进行检查-->  
  151.         <module name="JavadocVariable">  
  152.             <property name="severity" value="error"/>  
  153.             <property name="scope" value="public"/>  
  154.             <message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/>  
  155.         </module>   
  156.         <module name="JavadocVariable">  
  157.             <property name="severity" value="error"/>  
  158.             <property name="scope" value="protected"/>  
  159.             <message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/>  
  160.         </module>   
  161.         <module name="JavadocVariable">  
  162.             <property name="severity" value="error"/>  
  163.             <message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/>  
  164.         </module>       
  165.           
  166.         <!--章节3.5  -->  
  167.         <!-- 检查所有方法的javadoc,可以不声明RuntimeException -->  
  168.         <module name="JavadocMethod">  
  169.             <property name="allowUndeclaredRTE" value="true"/>  
  170.             <!--允许get set 方法没有注释-->  
  171.             <property name="allowMissingPropertyJavadoc" value="true"/>  
  172.             <message key="javadoc.missing" value="方法注释:缺少Javadoc注释,违反编码规范3.5章节"/>  
  173.         </module>       
  174.           
  175.         <!-- 命名规范 -->  
  176.         <!--章节4.2 -->  
  177.         <!-- 包名命名规范 -->  
  178.         <module name="PackageName">         
  179.             <!-- <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>  -->   
  180.             <property name="format" value="^org\.neris\.[a-z]+(\.[a-z]+)+$"/>        
  181.             <message key="name.invalidPattern" value="包名 ''{0}'' 不符合org.neris.项目名.模块名,违反编码规范4.2章节"/>    
  182.         </module>   
  183.           
  184.         <!--章节4.3,4.4  -->  
  185.         <!-- 类的命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 -->  
  186.         <module name="TypeName">    
  187.             <property name="tokens" value="CLASS_DEF"/>  
  188.             <message key="name.invalidPattern" value="类名 ''{0}''没有通过大驼峰命名法命名,具体名称应使用意义完整的英文描述,违反编码规范4.3章节"/>   
  189.         </module>   
  190.              
  191.         <!-- 接口命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 -->  
  192.         <module name="TypeName">    
  193.             <property name="tokens" value="INTERFACE_DEF"/>  
  194.             <message key="name.invalidPattern" value="接口名 ''{0}''没有通过大驼峰命名法命名,具体名称应使用意义完整的英文描述,违反编码规范4.3章节"/>   
  195.         </module>  
  196.           
  197.         <!--章节4.6 -->  
  198.         <!-- 方法名命名 -->      
  199.         <module name="MethodName">    
  200.             <property name="severity" value="error"/>    
  201.             <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>    
  202.             <message key="name.invalidPattern" value="方法名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.6章节"/>         
  203.         </module>    
  204.           
  205.         <!--章节4.7 -->  
  206.         <!-- 局部变量命名 -->  
  207.         <module name="LocalVariableName">         
  208.             <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>    
  209.             <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>        
  210.         </module>   
  211.           
  212.         <!-- 局部的final变量,包括catch中的参数的检查 -->     
  213.         <module name="LocalFinalVariableName" >    
  214.             <property name="severity" value="error"/>  
  215.             <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>  
  216.         </module>  
  217.               
  218.         <!-- 变量命名 -->  
  219.         <module name="MemberName">    
  220.             <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>    
  221.         </module>   
  222.           
  223.         <!-- 静态变量命名 -->  
  224.         <module name="StaticVariableName">  
  225.             <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>  
  226.         </module>  
  227.               
  228.         <!-- 数组变量命名 -->  
  229.         <module name="ArrayTypeStyle">  
  230.             <property name="severity" value="error"/>  
  231.             <message key="array.type.style" value="数组定义没有采取int[] index这种方式,违反编码规范4.7.2章节"/>  
  232.         </module>   
  233.           
  234.         <!--章节4.8 -->  
  235.         <!-- 常量命名-->  
  236.         <module name="ConstantName">  
  237.             <property name="severity" value="error"/>  
  238.             <message key="name.invalidPattern" value="常量 ''{0}'' 常量名违反编码规范4.8章节."/>  
  239.         </module>  
  240.           
  241.         <!--章节5.1 -->  
  242.         <!-- import语句不使用通配符 -->  
  243.         <module name="AvoidStarImport">  
  244.             <property name="severity" value="error"/>  
  245.             <message key="import.avoidStar" value="引用包时不能使用*号.违反编码规范5.1章节"/>  
  246.         </module>        
  247.           
  248.         <!--章节5.2 -->  
  249.         <!-- 魔法数检测-->  
  250.         <module name="MagicNumber">    
  251.             <property name="severity" value="error"/>    
  252.             <message key="magic.number" value="''{0}'' 是一个魔法数(即常数).违反编码规范5.2章节"/>    
  253.         </module>  
  254.           
  255.         <!--章节5.4 -->  
  256.         <!-- 多余的关键字,包含不适用this作为关键字 -->   
  257.         <module name="RedundantModifier">    
  258.             <message key="redundantModifier" value="''{0}'' 多余的修饰符.违反编码规范5.4章节"/>    
  259.         </module>   
  260.           
  261.         <!--章节5.5 -->  
  262.         <!-- 重载父类方法 -->  
  263.         <module name="MissingOverride">     
  264.             <message key="annotation.missing.override" value="重载方法缺少@Override,违反编码规范5.5章节" />  
  265.             <message key="tag.not.valid.on" value="注释-> Javadoc {0}标签在这个位置是无效的." />  
  266.         </module>   
  267.           
  268.         <!--章节5.6 -->  
  269.         <!--判断语句使用  -->  
  270.         <module name="SimplifyBooleanExpression">  
  271.             <property name="severity" value="error"/>  
  272.             <message key="simplify.expression" value="存在布尔冗余,违法编码规范5.6章节."/>  
  273.         </module>  
  274.           
  275.         <!--章节5.7 -->  
  276.         <!-- 检查switch语句是否忘记了default标签 -->  
  277.         <module name="MissingSwitchDefault" >  
  278.             <property name="severity" value="error"/>  
  279.             <message key="missing.switch.default" value="switch 语句后边没有 default 语句.违法编码规范5.7章节"/>  
  280.         </module>  
  281.           
  282.         <!-- 检查switch语句中default标签的顺序 -->  
  283.         <module name="DefaultComesLast">  
  284.             <property name="severity" value="error"/>  
  285.             <message key="default.comes.last" value="建议Default 放在 switch 语句的最后."/>  
  286.         </module>   
  287.           
  288.         <!--章节5.9 -->  
  289.         <!-- 禁止使用System.out.println -->  
  290.         <module name="Regexp">  
  291.             <property name="format" value="System\.out\.println"/>   
  292.             <property name="message" value="不要使用 System.out 与 System.out 进行控制台打印,应该使用日志工具类(如:log4j)进行统一记录或者打印,违法编码规范5.9章节"/>    
  293.             <property name="illegalPattern" value="true"/>  
  294.         </module>  
  295.         <!-- 禁止使用System.err.println -->  
  296.         <module name="Regexp">  
  297.             <property name="format" value="System\.err\.println"/>   
  298.             <property name="message" value="不要使用 System.out 与 System.err 进行控制台打印,应该使用日志工具类(如:log4j)进行统一记录或者打印,违法编码规范5.9章节"/>    
  299.             <property name="illegalPattern" value="true"/>  
  300.         </module>   
  301.         
  302.         <!--章节5.10 -->  
  303.         <!-- 不允许用main方法测试-->  
  304.         <module name="UncommentedMain">  
  305.               
  306.         </module>  
  307.           
  308.         <!--章节5.11 -->  
  309.         <!-- NeedBraces 检查是否应该使用括号的地方没有加括号    
  310.           tokens: 定义检查的类型 -->    
  311.         <module name="NeedBraces"/>    
  312.           
  313.     </module>    
  314.       
  315. </module>  


三:安装好eclipse的checkstyle插件后,你就可以把checkstyle.xml文件添加进去,如何添加,网上有很多文档


0 0
原创粉丝点击