发现项目组成员代码规范存在较大的问题,于是就在华为编程规范的基础上制定了这份checkStyle.xml文档,至于Eclipse怎么安装checkStyle插件以及该插件怎么使用请自行Google之。

checkStyle.xml(含详细节点说明)如下:

<?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"><!-- Generated by RHY @will_awoke --><module name="Checker"> <property name="charset" value="UTF-8"/>   <property name="severity" value="warning"/><!-- Checks for Size Violations.  --> <!-- 检查文件的长度(行) default max=2000 --> <module name="FileLength">         <property name="max" value="2500"/>        </module>  <!-- Checks that property files contain the same keys. --> <!-- 检查**.properties配置文件 是否有相同的key<module name="Translation">         </module>   --> <module name="TreeWalker"><!-- Checks for imports    -->               <!-- 必须导入类的完整路径,即不能使用*导入所需的类 -->  <module name="AvoidStarImport"/>  <!-- 检查是否从非法的包中导入了类 illegalPkgs: 定义非法的包名称-->  <module name="IllegalImport"/> <!-- defaults to sun.* packages -->  <!-- 检查是否导入了不必显示导入的类-->  <module name="RedundantImport"/>  <!-- 检查是否导入的包没有使用-->  <module name="UnusedImports"/><!-- Checks for whitespace           <module name="EmptyForIteratorPad"/><module name="MethodParamPad"/><module name="NoWhitespaceAfter"/><module name="NoWhitespaceBefore"/><module name="OperatorWrap"/><module name="ParenPad"/><module name="TypecastParenPad"/><module name="WhitespaceAfter"/><module name="WhitespaceAround"/>--><!-- 检查类和接口的javadoc 默认不检查author 和version tags       authorFormat: 检查author标签的格式versionFormat: 检查version标签的格式scope: 可以检查的类的范围,例如:public只能检查public修饰的类,private可以检查所有的类excludeScope: 不能检查的类的范围,例如:public,public的类将不被检查,但访问权限小于public的类仍然会检查,其他的权限以此类推tokens: 该属性适用的类型,例如:CLASS_DEF,INTERFACE_DEF --><module name="JavadocType">  <property name="authorFormat" value="\S"/>  <property name="scope" value="protected"/>        <property name="tokens" value="CLASS_DEF,INTERFACE_DEF"/>  </module><!-- 检查方法的javadoc的注释scope: 可以检查的方法的范围,例如:public只能检查public修饰的方法,private可以检查所有的方法allowMissingParamTags: 是否忽略对参数注释的检查allowMissingThrowsTags: 是否忽略对throws注释的检查allowMissingReturnTag: 是否忽略对return注释的检查 --><module name="JavadocMethod">  <property name="scope" value="private"/>  <property name="allowMissingParamTags" value="false"/>  <property name="allowMissingThrowsTags" value="false"/>  <property name="allowMissingReturnTag" value="false"/>  <property name="tokens" value="METHOD_DEF"/>  <property name="allowUndeclaredRTE" value="true"/>  <property name="allowThrowsTagsForSubclasses" value="true"/>  <!--允许get set 方法没有注释--><property name="allowMissingPropertyJavadoc" value="true"/></module>  <!-- 检查类变量的注释scope: 检查变量的范围,例如:public只能检查public修饰的变量,private可以检查所有的变量 -->    <module name="JavadocVariable">  <property name="scope" value="private"/>  </module>  <!--option: 定义左大括号'{'显示位置,eol在同一行显示,nl在下一行显示  maxLineLength: 大括号'{'所在行行最多容纳的字符数  tokens: 该属性适用的类型,例:CLASS_DEF,INTERFACE_DEF,METHOD_DEF,CTOR_DEF -->  <module name="LeftCurly"> <property name="option" value="nl"/></module><!-- NeedBraces 检查是否应该使用括号的地方没有加括号  tokens: 定义检查的类型 -->  <module name="NeedBraces"/>  <!-- 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"/>     </module><!-- 检查在重写了equals方法后是否重写了hashCode方法 --> <module name="EqualsHashCode"/><!--  Checks for illegal instantiations where a factory method is preferred.  Rationale: Depending on the project, for some classes it might be preferable to create instances through factory methods rather than calling the constructor.  A simple example is the java.lang.Boolean class. In order to save memory and CPU cycles, it is preferable to use the predefined constants TRUE and FALSE. Constructor invocations should be replaced by calls to Boolean.valueOf().  Some extremely performance sensitive projects may require the use of factory methods for other classes as well, to enforce the usage of number caches or object pools. -->  <module name="IllegalInstantiation">  <property name="classes" value="java.lang.Boolean"/>  </module><!-- Checks for Naming Conventions.   命名规范   --><!-- local, final variables, including catch parameters --><module name="LocalFinalVariableName"/><!-- local, non-final variables, including catch parameters--> <module name="LocalVariableName"/><!-- static, non-final fields --><module name="StaticVariableName"><property name="format" value="(^[A-Z0-9_]{0,19}$)"/>    </module>  <!-- packages --><module name="PackageName" ><property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/></module> <!-- classes and interfaces --><module name="TypeName">  <property name="format" value="(^[A-Z][a-zA-Z0-9]{0,19}$)"/>  </module><!-- methods -->  <module name="MethodName">          <property name="format" value="(^[a-z][a-zA-Z0-9]{0,19}$)"/>         </module> <!-- non-static fields --><module name="MemberName">  <property name="format" value="(^[a-z][a-z0-9][a-zA-Z0-9]{0,19}$)"/>         </module><!-- parameters --><module name="ParameterName"><property name="format" value="(^[a-z][a-zA-Z0-9_]{0,19}$)"/>         </module><!-- constants (static,  final fields) --><module name="ConstantName"> <property name="format" value="(^[A-Z0-9_]{0,19}$)"/>      </module><!-- 代码缩进   --><module name="Indentation">        </module><!-- Checks for redundant exceptions declared in throws clause such as duplicates, unchecked exceptions or subclasses of another declared exception. 检查是否抛出了多余的异常  <module name="RedundantThrows"><property name="logLoadErrors" value="true"/><property name="suppressLoadErrors" value="true"/> </module>--> <!--  Checks for overly complicated boolean expressions. Currently finds code like  if (b == true), b || true, !false, etc.   检查boolean值是否冗余的地方  Rationale: Complex boolean logic makes code hard to understand and maintain. -->  <module name="SimplifyBooleanExpression"/><!--  Checks for overly complicated boolean return statements. For example the following code  检查是否存在过度复杂的boolean返回值  if (valid())  return false;  else  return true;  could be written as  return !valid();  The Idea for this Check has been shamelessly stolen from the equivalent PMD rule. -->  <module name="SimplifyBooleanReturn"/>  <!-- Checks that a class which has only private constructors is declared as final.只有私有构造器的类必须声明为final-->  <module name="FinalClass"/><!--  Make sure that utility classes (classes that contain only static methods or fields in their API) do not have a public constructor.  确保Utils类(只提供static方法和属性的类)没有public构造器。  Rationale: Instantiating utility classes does not make sense. Hence the constructors should either be private or (if you want to allow subclassing) protected. A common mistake is forgetting to hide the default constructor.  If you make the constructor protected you may want to consider the following constructor implementation technique to disallow instantiating subclasses:  public class StringUtils // not final to allow subclassing  {  protected StringUtils() {  throw new UnsupportedOperationException(); // prevents calls from subclass  }  public static int count(char c, String s) {  // ...  }  } <module name="HideUtilityClassConstructor"/> --> <!--  Checks visibility of class members. Only static final members may be public; other class members must be private unless property protectedAllowed or packageAllowed is set.  检查class成员属性可见性。只有static final 修饰的成员是可以public的。其他的成员属性必需是private的,除非属性protectedAllowed或者packageAllowed设置了true.  Public members are not flagged if the name matches the public member regular expression (contains "^serialVersionUID$" by default). Note: Checkstyle 2 used to include "^f[A-Z][a-zA-Z0-9]*$" in the default pattern to allow CMP for EJB 1.1 with the default settings. With EJB 2.0 it is not longer necessary to have public access for persistent fields, hence the default has been changed.  Rationale: Enforce encapsulation. 强制封装 -->  <module name="VisibilityModifier"/> <!-- 每一行只能定义一个变量 --><module name="MultipleVariableDeclarations">       </module><!-- Checks the style of array type definitions. Some like Java-style: public static void main(String[] args) and some like C-style: public static void main(String args[])   检查再定义数组时,采用java风格还是c风格,例如:int[] num是java风格,int num[]是c风格。默认是java风格-->  <module name="ArrayTypeStyle"> </module><!-- Checks that there are no "magic numbers", where a magic number is a numeric literal that is not defined as a constant. By default, -1, 0, 1, and 2 are not considered to be magic numbers. <module name="MagicNumber">   </module>-->  <!-- A check for TODO: comments. Actually it is a generic regular expression matcher on Java comments. To check for other patterns in Java comments, set property format.   检查是否存在TODO(待处理) TODO是javaIDE自动生成的。一般代码写完后要去掉。  -->  <module name="TodoComment"/>  <!--  Checks that long constants are defined with an upper ell. That is ' L' and not 'l'. This is in accordance to the Java Language Specification,  Section 3.10.1.  检查是否在long类型是否定义了大写的L.字母小写l和数字1(一)很相似。  looks a lot like 1. -->  <module name="UpperEll"/><!--  Checks that switch statement has "default" clause. 检查switch语句是否有‘default’从句  Rationale: It's usually a good idea to introduce a default case in every switch statement. Even if the developer is sure that all currently possible cases are covered, this should be expressed in the default branch,e.g. by using an assertion. This way the code is protected aginst later changes, e.g. introduction of new types in an enumeration type. --> <module name="MissingSwitchDefault"/> <!--检查switch中case后是否加入了跳出语句,例如:return、break、throw、continue --><module name="FallThrough"/>  <!-- Checks the number of parameters of a method or constructor. max default 7个. -->    <module name="ParameterNumber">      <property name="max" value="5"/>              </module><!-- 每行字符数 -->    <module name="LineLength">  <property name="max" value="200"/>       </module>  <!-- Checks for long methods and constructors. max default 150行. max=300 设置长度300 --> <module name="MethodLength">  <property name="max" value="300"/>                 </module>        <!-- ModifierOrder 检查修饰符的顺序,默认是 public,protected,private,abstract,static,final,transient,volatile,synchronized,native -->  <module name="ModifierOrder">          </module>      <!-- 检查是否有多余的修饰符,例如:接口中的方法不必使用public、abstract修饰  --><module name="RedundantModifier">       </module><!--- 字符串比较必须使用 equals() -->   <module name="StringLiteralEquality">          </module> <!-- if-else嵌套语句个数 最多4层 --><module name="NestedIfDepth">        <property name="max" value="3"/>         </module>  <!-- try-catch 嵌套语句个数 最多2层 --><module name="NestedTryDepth">  <property name="max" value="2"/>         </module>  <!-- 返回个数 -->   <module name="ReturnCount">        <property name="max" value="5"/>  <property name="format" value="^$"/>          </module>                  </module></module>

注: 如有需要华为编程规范.doc、华为Eclipse格式化模板codeformat.xml、华为注释模板 codetemplates.xml 可以与我联系。

转载于:https://www.cnblogs.com/pangblog/p/3369567.html

基于华为Java编程规范的Eclipse checkStyle.xml相关推荐

  1. 华为编程规范_华为 Java 编程规范出炉,究竟和官方文档有何不同?

    来源:blog.csdn.net/chenleixing/article/details/44173985 1.引言 这个标准是衡量代码本身的缺陷,也是衡量一个研发人员本身的价值.华为作为一家全球化的 ...

  2. Java编程规范(一)

    Java编程规范 编程规约 命名风格 常量定义 代码格式 OOP约束 来源:阿里巴巴 编程规约 命名风格 不能以下划线或者美元符号开始或结束 **反例**:_name / __name / $name ...

  3. java编程规范换行_Java编程规范整理

    近期即将开始编码阶段,特地整理一下各方面的编程规范与命名约定,以便内部团队风格统一. 文章大多从网络上收集汇总而来,参考列表附在文章末尾. Java编程规范整理 基本命名规范 包命名 包名按照域名的范 ...

  4. JAVA编程规范总结

    JAVA编程规范总结: 1.编码规范好处: 1.减少维护成本和时间 2.增加可读性,方便自己和维护的技术人员二次改善 3.提高开发效率,团队协作 4.养成好习惯,提高自身修炼 2.命名规范: 1.尽量 ...

  5. java 标识变量_Java变量与数据类型之一:Java编程规范,关键字与标识符

    原标题:Java变量与数据类型之一:Java编程规范,关键字与标识符 大家好,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字 ...

  6. java与数据类型相关的十个关键字_乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符...

    大家好,这次要给大家带来的是Java变量与数据类型.本文是第一集:Java编程规范,关键字与标识符. 一.编程规范 任何地方的名字都需要见名知意: 代码适当缩进 书写过程成对编程 对代码进行合理注释 ...

  7. 阿里巴巴Java开发规范线程池_阿里巴巴java编程规范.pdf

    阿里巴巴java编程规范 目录 一.编程规约1 (一) 命名规约1 (二) 常量定义3 (三) 格式规约4 (四) OOP 规约6 (五) 集合处理 10 (六) 并发处理 12 (七) 控制语句 1 ...

  8. sun公司java编程规范【转载】

    java编程规范要学习的大致内容有如下部分,一个目录: Java编码规范 1 1.说明 3 1.1为什么要有编码规范 3 1.2版权声明 3 2.文件名(File Names) 3 2.1文件后缀(F ...

  9. “华为云企业级Java编程规范”学习笔记

    一."Java基础语句"编程规范 Switch 语句要有defualt分支,除非Swich的条件变量是枚举类型; 多条件分支语句最后应包含一个else分支; 二."类的使 ...

最新文章

  1. 802.1AE保护局域网安全
  2. C++ throw:抛出自己的异常
  3. Less的条件表达式Guards
  4. 李彦宏被泼水,是“多数人的暴力”还是“群众的宣泄”
  5. 程序员提升之排查bug的能力
  6. ROS下同时接收多个话题并实现相机和雷达的数据融合
  7. Windows下C语言网络编程快速入门 1
  8. 使用XTU降低CPU功耗,自动执行不失效
  9. Java的责任链模式
  10. 计算机网络:第四章网络层课后习题及答案(精细版)
  11. 3Dtouch开发内容
  12. 免费收听--第2版招投标软件项目管理实战课
  13. Java流及流操作示例
  14. ionic:引入图标
  15. JMeter元件详解之配置元件
  16. 中国就业市场“稳”字当头 新兴技能岗位大幅增加
  17. go pear.php 下载,请注意!有人攻破了PEAR网站并篡改了go-pear.phar安装包
  18. 基于php的乐山旅游攻略网站
  19. 20200228华为手机安装谷歌商店,Download the latest Google Play Store APK
  20. python3GUI--天气预报小工具By:PyQt5(附源码)

热门文章

  1. 【微机原理】EU和BIU
  2. 美国虚拟主机常用的两块控制面板——cPanel和Plesk
  3. 如何解决M1芯片安装PS 2021闪退、卡启动界面的问题?
  4. 【翻译】和麻美学姐一起的世界树(マミさんと世界樹スレ)第八话后篇
  5. DVWA靶场练习十四—JavaScript
  6. 动态规划法求解三角形最小路径问题
  7. R语言离线安装stringi时报错icudt61l.zip无法从URL下载
  8. chrome查看http请求是否压缩,以及压缩比例
  9. 人社部等三部门联合发布9个新职业 包含两个区块链职业
  10. 如何将rvt(BIM)转换为点云格式