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

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

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

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

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">  
<!--  This configuration file was written by the eclipse-cs plugin configuration editor  
-->  
<!--  Checkstyle-Configuration: check  Description: none  
-->  
<module name="Checker"><property name="severity" value="error"/><property name="charset" value="UTF-8"/><message key="general.exception" value="有一个异常 - {0}  "/><message key="general.fileNotFound" value="文件没找到!"/><!--章节2.2A  --><!-- 不允许使用TAB缩进,此规则必须在<TreeWalker>标签外 --><module name="FileTabCharacter"><property name="severity" value="error"/><property name="eachLine" value="true"/><message key="containsTab" value="本行包含 tab 字符,违反编码规范2.2章节"/></module><!--章节3.1.1  --><!-- 检查每个java package中是否有java注释文件,默认是允许一个package-info.java,也可以通过allowLegacy属性配置允许package.html。此规则必须在<TreeWalker>标签外 --><module name="JavadocPackage" /><module name="TreeWalker"><property name="severity" value="error"/>  <property name="tabWidth" value="4"/>  <message key="general.exception" value="有一个异常 - {0}"/> <!--章节1.2.2 --><!-- 修饰符顺序检测 --><module name="ModifierOrder">  <message key="mod.order" value="''{0}'' 修饰符顺序错误.违反编码规范1.2.2章节"/>  <message key="annotation.order" value="''{0}'' 注释修饰符不能在非注释修饰符前面."/>  </module><!--章节2.2B  -->	<!-- 缩进风格--><module name="Indentation"><property name="severity" value="error"/><property name="basicOffset" value="4"/><message key="indentation.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格,违反编码规范2.2章节"/><!-- 子级缩进 --><message key="indentation.child.error" value="你缩进了{1}个空格,正确应该缩进 {2}个空格,违反编码规范2.2章节"/></module><!--章节2.3  --><!-- 页宽--><module name="LineLength">  <property name="max" value="80"/>  <message key="maxLineLen" value="行字符数超过80个.违反编码规范2.3章节"/>  </module> <!--章节2.4 --><!--操作符换行策略检查--><module name="OperatorWrap"><property name="severity" value="error"/><property name="option" value="nl"/><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"/><message key="line.after" value="''{0}'没有放在新行之首,违反编码规范2.4章节"/></module>    <!--章节2.6  --><module name="ParenPad"><property name="severity" value="error"/><property name="tokens" value="LPAREN,RPAREN,CTOR_CALL,METHOD_CALL,SUPER_CTOR_CALL"/><message key="ws.followed" value="''{0}'' 后面有空格,违反编码规范2.6章节"/><message key="ws.preceded" value="''{0}''前面有空格,违反编码规范2.6章节"/></module>    <module name="TypecastParenPad"><property name="severity" value="error"/><property name="tokens" value="RPAREN,TYPECAST"/><message key="ws.followed" value="''{0}''后面多一个空格,违反编码规范2.6章节"/><message key="ws.preceded" value="''{0}''前面多一个空格,违反编码规范2.6章节"/></module>    <module name="WhitespaceAfter"><property name="severity" value="error"/><property name="tokens" value="COMMA,SEMI"/><message key="ws.notFollowed" value="''{0}''后面多一个空格,违反编码规范2.6章节"/></module>    <module name="WhitespaceAround"><property name="severity" value="error"/><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"/><property name="allowEmptyConstructors" value="true"/><property name="allowEmptyMethods" value="true"/><message key="ws.notPreceded" value="''{0}'' 关键字前少一个空格,违反编码规范2.6章节"/><message key="ws.notFollowed" value="''{0}'' 关键字后少一个空格,违反编码规范2.6章节"/></module><!--章节2.7 --><!-- 每行语句数量--><module name="OneStatementPerLine"><!--模块的元数据类型设置,经过测试发现该标签没用--><metadata name="net.sf.eclipsecs.core.comment" value="Coding Problems-> Only one statement per line allowed" /><message key="multiple.statements.line" value="禁止一行有多句代码,违反编码规范2.7章节" /></module><!--章节2.8 --><!-- 每行变量声明数量--><module name="MultipleVariableDeclarations">  <property name="severity" value="error"/>  <message key="multiple.variable.declarations.comma" value="每一个变量的定义必须在它的声明处,且在同一行,违反编码规范2.8章节"/>  <message key="multiple.variable.declarations" value="每一行只能定义一个变量,违反编码规范2.8章节"/>  </module> 	<!--章节2.9.1  --><!-- Checks the placement of right curly braces ('}') for  else, try, and catch tokens. The policy to verify is specified using property  option.   option: 右大括号是否单独一行显示  tokens: 定义检查的类型  -->  <module name="RightCurly">    <property name="option" value="alone"/> <property name="severity" value="error"/>     			</module> <!--章节2.9.1  -->  <!-- 检查左侧大括号 左侧大括号必须放在前一行代码的行尾 --><module name="LeftCurly"><property name="severity" value="error"/><message key="line.previous" value="左侧大括号没有放在前一行代码的行尾,违反编码规范2.9.1章节"/></module>	<!--章节2.9.2  --><!-- 检查代码块是否缺失大括号--><module name="NeedBraces">  <message key="needBraces" value="''{0}'' 结构没有用大括号 '''{}'''s,违反编码规范2.9.2章节"/>  </module>	<!-- 章节3.2 --><!-- 对文件头的注释进行检查 --><!--章节3.3  --><!--对类和接口的javadoc注释进行检查--><module name="JavadocType"><property name="severity" value="error"/><message key="type.missingTag" value="Javadoc 类型的注释丢失 {0} 标签.违反编码规范3.3章节"/><message key="javadoc.missing" value="缺少 Javadoc 注释.违反编码规范3.3章节"/><message key="javadoc.unusedTagGeneral" value="未使用过的 Javadoc 标签.违反编码规范3.23章节"/><message key="javadoc.unusedTag" value="未使用过的 {0} 标签for ''{1}''.违反编码规范3.3章节"/><message key="type.tagFormat" value="Javadoc 类型标签 {0}必须匹配模式 ''{1}''.违反编码规范3.3章节"/></module><!--章节3.4,3.7  --> 	<!--public protect private变量的注释进行检查--><module name="JavadocVariable"><property name="severity" value="error"/><property name="scope" value="public"/><message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/></module>	<module name="JavadocVariable"><property name="severity" value="error"/><property name="scope" value="protected"/><message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/></module>	<module name="JavadocVariable"><property name="severity" value="error"/><message key="javadoc.missing" value="变量注释:缺少Javadoc注释,违反编码规范3.4章节"/></module> 	<!--章节3.5  --><!-- 检查所有方法的javadoc,可以不声明RuntimeException --><module name="JavadocMethod"><property name="allowUndeclaredRTE" value="true"/><!--允许get set 方法没有注释--><property name="allowMissingPropertyJavadoc" value="true"/><message key="javadoc.missing" value="方法注释:缺少Javadoc注释,违反编码规范3.5章节"/></module>		<!-- 命名规范 --><!--章节4.2 --><!-- 包名命名规范 --><module name="PackageName">	    <!-- <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>  --> <property name="format" value="^org\.neris\.[a-z]+(\.[a-z]+)+$"/>      <message key="name.invalidPattern" value="包名 ''{0}'' 不符合org.neris.项目名.模块名,违反编码规范4.2章节"/>  </module> <!--章节4.3,4.4  --><!-- 类的命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 --><module name="TypeName">  <property name="tokens" value="CLASS_DEF"/><message key="name.invalidPattern" value="类名 ''{0}''没有通过大驼峰命名法命名,具体名称应使用意义完整的英文描述,违反编码规范4.3章节"/> </module> <!-- 接口命名,匹配规则默认:(^[A-Z][a-zA-Z0-9]*$),必须以大写字母开始 --><module name="TypeName"> 	<property name="tokens" value="INTERFACE_DEF"/><message key="name.invalidPattern" value="接口名 ''{0}''没有通过大驼峰命名法命名,具体名称应使用意义完整的英文描述,违反编码规范4.3章节"/> </module><!--章节4.6 --><!-- 方法名命名 -->	<module name="MethodName">  <property name="severity" value="error"/>  <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>  <message key="name.invalidPattern" value="方法名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.6章节"/>       </module>  <!--章节4.7 --><!-- 局部变量命名 --><module name="LocalVariableName">       <property name="format" value="(^[a-z][a-zA-Z0-9]*$)"/>  <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>      </module>	<!-- 局部的final变量,包括catch中的参数的检查 -->   <module name="LocalFinalVariableName" >  <property name="severity" value="error"/><message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/></module><!-- 变量命名 --><module name="MemberName">  <message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/>  </module>	<!-- 静态变量命名 --><module name="StaticVariableName"><message key="name.invalidPattern" value="变量名 ''{0}''没有通过小驼峰命名法命名,具体名称应使用意义完整的英文描述.违反编码规范4.7章节"/></module><!-- 数组变量命名 --><module name="ArrayTypeStyle"><property name="severity" value="error"/><message key="array.type.style" value="数组定义没有采取int[] index这种方式,违反编码规范4.7.2章节"/></module>	<!--章节4.8 --><!-- 常量命名--><module name="ConstantName"><property name="severity" value="error"/><message key="name.invalidPattern" value="常量 ''{0}'' 常量名违反编码规范4.8章节."/></module><!--章节5.1 --><!-- import语句不使用通配符 --><module name="AvoidStarImport"><property name="severity" value="error"/><message key="import.avoidStar" value="引用包时不能使用*号.违反编码规范5.1章节"/></module>      <!--章节5.2 --><!-- 魔法数检测--><module name="MagicNumber">  <property name="severity" value="error"/>  <message key="magic.number" value="''{0}'' 是一个魔法数(即常数).违反编码规范5.2章节"/>  </module><!--章节5.4 --><!-- 多余的关键字,包含不适用this作为关键字 --> <module name="RedundantModifier">  <message key="redundantModifier" value="''{0}'' 多余的修饰符.违反编码规范5.4章节"/>  </module>	<!--章节5.5 --><!-- 重载父类方法 --><module name="MissingOverride">	<message key="annotation.missing.override" value="重载方法缺少@Override,违反编码规范5.5章节" /><message key="tag.not.valid.on" value="注释-> Javadoc {0}标签在这个位置是无效的." /></module>	<!--章节5.6 --><!--判断语句使用  --><module name="SimplifyBooleanExpression"><property name="severity" value="error"/><message key="simplify.expression" value="存在布尔冗余,违法编码规范5.6章节."/></module><!--章节5.7 --><!-- 检查switch语句是否忘记了default标签 --><module name="MissingSwitchDefault" ><property name="severity" value="error"/><message key="missing.switch.default" value="switch 语句后边没有 default 语句.违法编码规范5.7章节"/></module><!-- 检查switch语句中default标签的顺序 --><module name="DefaultComesLast"><property name="severity" value="error"/><message key="default.comes.last" value="建议Default 放在 switch 语句的最后."/></module>	<!--章节5.9 --><!-- 禁止使用System.out.println --><module name="Regexp"><property name="format" value="System\.out\.println"/> <property name="message" value="不要使用 System.out 与 System.out 进行控制台打印,应该使用日志工具类(如:log4j)进行统一记录或者打印,违法编码规范5.9章节"/>	<property name="illegalPattern" value="true"/></module><!-- 禁止使用System.err.println --><module name="Regexp"><property name="format" value="System\.err\.println"/> <property name="message" value="不要使用 System.out 与 System.err 进行控制台打印,应该使用日志工具类(如:log4j)进行统一记录或者打印,违法编码规范5.9章节"/>	<property name="illegalPattern" value="true"/></module>	<!--章节5.10 --><!-- 不允许用main方法测试--><module name="UncommentedMain"></module><!--章节5.11 --><!-- NeedBraces 检查是否应该使用括号的地方没有加括号  tokens: 定义检查的类型 -->  <module name="NeedBraces"/>  </module>  </module>


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443443.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 下安装 jdk-7u75-linux-x64.gz,jdk1.7.0_75,jdk1.7步骤:

摘要&#xff1a;近来又用到了Linux系统&#xff0c;所以就又新装了一个虚拟机和CentOS 6.4来用&#xff0c;搞开发的程序猿们可能都知道&#xff0c;在现在的很多企业中&#xff0c;生产环境大多都是Linux服务器&#xff0c;并且用的比较多的大都是CentOS&#xff0c;Red hat系…

Win7+VMware10.0+CentOS 6.4+Tomcat,Win7访问不了CentOS6.4上的Tomcat

摘要&#xff1a;今天在linux下安装Tomcat后&#xff0c;在虚拟机本地通过:http://localhost:8080/可以访问安装好的Tomcat服务器&#xff0c;但是在本机就不能访问&#xff0c;前提是在本机下可以ping的通虚拟机的IP地址的&#xff0c;最后经过Google&#xff0c;发现说可能是…

Linux下配置OpenLDAP服务记录

摘要&#xff1a;最近部门需要整合所有的系统&#xff0c;所以领导说要通过OpenLdap数据库来实现对所有系统的统一管理&#xff0c;所以需要在服务器上配置一下LDAP服务&#xff0c;我们这里选择的是OpenLdap服务&#xff0c;我在网上搜索了很多&#xff0c;开始都没有配置成功…

Linux下配置CollabNet Subversion Edge

摘要&#xff1a;最近一直都在搞一下管理员的工作&#xff0c;今天又搞了svn的管理工具CollabNetSubversionEdge&#xff0c;网上也有很多例子&#xff0c;但是很多都是可以访问到web界面&#xff0c;但是不能启动版本库的服务&#xff0c;所以我经过多次尝试&#xff0c;终于解…

养成让自己进步的10个习惯

养成让自己进步的10个习惯 1.永远不说不可能。"办法总比问题多" 2.凡事第一反应找方法&#xff0c;不是找借口。"不要推卸责任" 3.养成记录习惯&#xff0c;不太依赖脑袋。"好记性不如烂笔头" 4.每天出门照镜子&#xff0c;给自己自信的微笑。&…

Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串:

摘要&#xff1a;之前在项目中使用到了Oracle数据库中通过触发器去调用存储过程执行数据解析并Update到对应的数据表中&#xff0c;但是&#xff0c;经过一段时间的测试使用发现&#xff0c;如果job那天停掉了&#xff0c;然后你再重新新建job的话&#xff0c;这时候可能会有很…

Maven配置nexus

摘要&#xff1a;近来一直在搭建maven结构的开发框架&#xff0c;其中这个过程中用到了nexus私服&#xff0c;这里我把我经过查询总结的最终的方式记录一下&#xff0c;以便后面忘记了&#xff1a; 一&#xff1a;nexus私服的安装(略) 二&#xff1a;仓库的讲解如下图: 1、ho…

Maven项目发布的配置

摘要&#xff1a;要想发布maven结构的项目到nexus私服上&#xff0c;可以通过两种方式来&#xff0c;一种是在项目的pom.xml文件里面配置&#xff0c;另一种是通过命令的方式发布到nexus私服上&#xff0c;但是这种方式的前提也得在settings.xml文件配置用户: 一&#xff1a;M…

MariaDB通过命令行的方式导出指定数据库和还原指定数据库

摘要&#xff1a;今天由于需要需要从本地导出一份VP系统的数据库脚本&#xff0c;以前我都是通过工具直接导出&#xff0c;现在有同事说可以通过mysql的命令方式导出&#xff0c;我试了一下&#xff0c;可以&#xff0c;现在记录一下&#xff01; 一&#xff1a;在MariaDB的安装…

java.lang.ClassNotFoundException: org.springframework.web.util.IntrospectorCleanupListener

一&#xff1a;如果出现下面的错误信息&#xff0c;如果你的项目是Maven结构的&#xff0c;那么一般都是你的项目的Maven Dependencies没有添加到项目的编译路径下&#xff1a; 五月 10, 2015 6:23:18 下午 org.apache.catalina.core.AprLifecycleListener init 信息: The APR …

Maven 打成 Webjar的方法

摘要&#xff1a;今天领导说要把自己定义的样式文件和js文件打成一个自定义的webjar&#xff0c;所以就写了一下&#xff0c;现在记录一下&#xff1a; 1. 先把要打包成webjar的文件放到你新建的maven结构的项目的/src/main/resources目录下 2.编写该项目的pom.xml文件&#…

Maven中maven-source-plugin,maven-javadoc-plugin插件的使用:

摘要&#xff1a;今天领导说要把项目通过maven生产源码包和文档包并发布到自己的私服上&#xff0c;经过查看mavne官网发现有两个maven插件可以做到这些工作&#xff0c;一个是maven-source-plugin&#xff0c;另一个是maven-javadoc-plugin&#xff0c;现在记录一下&#xff0…

Maven之生成测试覆盖度的插件cobertura-maven-plugin的使用

摘要&#xff1a;Maven中可以通过使用插件检查一个项目的测试代码的覆盖度&#xff0c;这个插件就是cobertura-maven-plugin&#xff0c;这个插件如何使用我做了测试&#xff0c;现在记录一下&#xff01; 一&#xff1a;首先在你的项目的pom.xml文件中增加该插件的配置&#x…

Linux下开启mysql数据库的远程访问权限

摘要&#xff1a;今天在Linux服务器上安装了msyql数据库&#xff0c;在本地访问的时候可以访问&#xff0c;但是我想通过远程的方式访问的时候就不能访问了&#xff0c;查询资料后发现&#xff0c;Linux下mysql默认安装完成后只有本地访问的权限&#xff0c;没有远程访问的权限…

Maven之自定义pom类型的基础项目

摘要&#xff1a;在当前的软件开发场景中&#xff0c;大都是通过maven管理项目&#xff0c;而如果使用maven的话&#xff0c;其实也会有很多问题&#xff0c;比如项目中依赖的版本管理就是一个很头疼的事&#xff0c;如果一个项目中有很多人同时开发那么这就很可能造成大家添加…

Maven之搭建本地私服(nexus)仓库

摘要&#xff1a;现在越来越多的项目都在使用Maven管理项目&#xff0c;尤其是在大型的项目团队中使用Maven能带来更加多的好处&#xff0c;私服的好处我相信大家都明白&#xff0c;在这里我就不多说了&#xff0c;它最重要的作用就是可以让项目团队成员更加方便的下载对应的项…

项目管理4321方法论

文章目录 一、项目立项准备&#xff08;4步&#xff09;case1、识别价值---解决背后痛点的才是价值&#xff0c;价值是做任何事情的出发点case2、明确目标---支撑价值实现的&#xff0c;目标是 具体/可衡量/可达到/相关性/有时限的case3、识别干系人---找对人才能做对事&#x…

Maven之自定义archetype生成项目骨架(一)

摘要&#xff1a;使用过Maven的人都知道maven中有许多功能都是通过插件来提供的&#xff0c;今天我们来说一下其中的一个插件&#xff1a;maven-archetype-plugin&#xff0c;通过该插件可以自定义符合我们自己需求的archetype。 一:什么是Archetype 总之&#xff0c;原型是一…

匆匆那年之Java程序员之最近两周的面试总结:

匆匆那年之Java程序员之最近两周的面试总结&#xff1a; (一):匆匆那年之来帝都之初&#xff1a; 还记得那是2011年的冬天&#xff0c;我们一行20多个同学一起来到了这个一直向往的城市首都&#xff0c;刚到北京是凌晨4点30&#xff0c;负责送我们的老师 已经安排好了我们的住处…

Exception in thread main com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport e

摘要&#xff1a;在调用webservice客户端代码的时候报如下错误 Invoking reportLossByRdid... Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.UnknownHostException: opacat com.sun.xml.in…