Commit 9b118bbc43cb169d0038d86dd97387903377e47f

Authored by huanggang
0 parents

add serval specification documents

specification/dili-codestyle.xml 0 → 100644
  1 +++ a/specification/dili-codestyle.xml
  1 +<?xml version="1.0"?>
  2 +<!DOCTYPE module PUBLIC
  3 + "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
  4 + "http://checkstyle.sourceforge.net/dtds/configuration_1_3.dtd">
  5 +
  6 +<!--地利集团技术研发部内部代码规范-->
  7 +
  8 +<module name = "Checker">
  9 + <property name="charset" value="UTF-8"/>
  10 +
  11 + <property name="severity" value="warning"/>
  12 +
  13 + <property name="fileExtensions" value="java, properties, xml"/>
  14 + <!--文件中不允许出现Tab键, 包含Tab的每行都report-->
  15 + <module name="FileTabCharacter">
  16 + <property name="eachLine" value="true"/>
  17 + </module>
  18 +
  19 + <module name="TreeWalker">
  20 + <!--JAVA文件名与外层类型(类名)一致-->
  21 + <module name="OuterTypeFilename"/>
  22 + <!--文件每行长度不超过120个字符, 包名 类型引用 URL除外-->
  23 + <module name="LineLength">
  24 + <property name="max" value="130"/>
  25 + <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
  26 + </module>
  27 + <!--类型引用不允许使用*-->
  28 + <module name="AvoidStarImport"/>
  29 + <!--类型引用 包名 静态引用不允许换行-->
  30 + <module name="NoLineWrap">
  31 + <property name="tokens" value="IMPORT, PACKAGE_DEF, STATIC_IMPORT"/>
  32 + </module>
  33 + <!--try finally if else switch不允许空代码块, 但连续block除外, 比如: if (condition) {} -->
  34 + <module name="EmptyBlock">
  35 + <property name="option" value="TEXT"/>
  36 + <property name="tokens" value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
  37 + </module>
  38 + <!--do while if else for语句块必须使用大括号{}, 连续block除外, 比如: if (condition) return false;-->
  39 + <module name="NeedBraces"/>
  40 + <!--代码块的左大括号在同一行显示-->
  41 + <module name="LeftCurly">
  42 + <property name="option" value="eol"/>
  43 + </module>
  44 + <!--multi-block语句try catch finally if else do的右大括号在同一行显示, } catch (Exception ex) { -->
  45 + <module name="RightCurly">
  46 + <property name="id" value="RightCurlySame"/>
  47 + <property name="option" value="same"/>
  48 + <property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_DO"/>
  49 + </module>
  50 + <!--类定义 方法定义 构造方法和for while static no-static块的右大括号换行显示-->
  51 + <module name="RightCurly">
  52 + <property name="id" value="RightCurlyAlone"/>
  53 + <property name="option" value="alone"/>
  54 + <property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT"/>
  55 + </module>
  56 + <!--token必须使用空格隔开, 同时允许空构造函数 方法 类型定义 空循环体-->
  57 + <module name="WhitespaceAround">
  58 + <property name="allowEmptyConstructors" value="true"/>
  59 + <property name="allowEmptyMethods" value="true"/>
  60 + <property name="allowEmptyTypes" value="true"/>
  61 + <property name="allowEmptyLoops" value="true"/>
  62 + <message key="ws.notFollowed"
  63 + value="WhitespaceAround: ''{0}'' is not followed by whitespace. Empty blocks may only be represented as '{}' when not part of a multi-block statement (4.1.3)"/>
  64 + <message key="ws.notPreceded"
  65 + value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
  66 + </module>
  67 + <!--每行只允许一个语句块, int i=1; int j=1;将导致检查失败-->
  68 + <module name="OneStatementPerLine"/>
  69 + <!--不允许多个变量定义在同一行-->
  70 + <module name="MultipleVariableDeclarations"/>
  71 + <!--数组定义风格必须使用java风格: String[] args, 不允许使用String args[]-->
  72 + <module name="ArrayTypeStyle"/>
  73 + <!--Switch语句必须包含一个default语句块-->
  74 + <module name="MissingSwitchDefault"/>
  75 + <!--Long类型常量定义时必须使用L, 而不是l-->
  76 + <module name="UpperEll"/>
  77 + <!--类定义里面方法和变量等的顺序遵循: public protected private abstract default static final transient volatile synchronized native-->
  78 + <module name="ModifierOrder"/>
  79 + <!--package语句, 所有import语句 所有成员变量 构造函数定义 方法定义 内部类 static块 non-static块必须使用空行隔开-->
  80 + <module name="EmptyLineSeparator">
  81 + <property name="allowNoEmptyLineBetweenFields" value="true"/>
  82 + </module>
  83 + <!--
  84 + 如果语句过长需要分行时 .号放在下一行
  85 + StringBuilder build = new StringBuilder();
  86 + build.append("a")
  87 + .append("b");
  88 + -->
  89 + <module name="SeparatorWrap">
  90 + <property name="id" value="SeparatorWrapDot"/>
  91 + <property name="tokens" value="DOT"/>
  92 + <property name="option" value="nl"/>
  93 + </module>
  94 + <!--
  95 + 如果语句过长需要分行时 ,号保持在同一行
  96 + foo(i,
  97 + s)
  98 + -->
  99 + <module name="SeparatorWrap">
  100 + <property name="id" value="SeparatorWrapComma"/>
  101 + <property name="tokens" value="COMMA"/>
  102 + <property name="option" value="EOL"/>
  103 + </module>
  104 + <!--如果语句过长需要分行时, 可变参数 ... 保持在同一行-->
  105 + <module name="SeparatorWrap">
  106 + <property name="id" value="SeparatorWrapEllipsis"/>
  107 + <property name="tokens" value="ELLIPSIS"/>
  108 + <property name="option" value="EOL"/>
  109 + </module>
  110 + <!--如果语句过长需要分行时, 数组符号 []保持在同一行-->
  111 + <module name="SeparatorWrap">
  112 + <property name="id" value="SeparatorWrapArrayDeclarator"/>
  113 + <property name="tokens" value="ARRAY_DECLARATOR"/>
  114 + <property name="option" value="EOL"/>
  115 + </module>
  116 + <!--如果语句过长需要分行时, jdk8 lambda风格的方法引用 ::放在下一行-->
  117 + <module name="SeparatorWrap">
  118 + <property name="id" value="SeparatorWrapMethodRef"/>
  119 + <property name="tokens" value="METHOD_REF"/>
  120 + <property name="option" value="nl"/>
  121 + </module>
  122 + <!--包名必须符合以下正则表达式-->
  123 + <module name="PackageName">
  124 + <property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
  125 + <message key="name.invalidPattern"
  126 + value="Package name ''{0}'' must match pattern ''{1}''."/>
  127 + </module>
  128 + <!--类型名必须符合默认正则表达式: 首字母大写-->
  129 + <module name="TypeName">
  130 + <message key="name.invalidPattern"
  131 + value="Type name ''{0}'' must match pattern ''{1}''."/>
  132 + </module>
  133 + <!--成员变量名必须符合以下正则表达式: 首字母小写-->
  134 + <module name="MemberName">
  135 + <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9]*$"/>
  136 + <message key="name.invalidPattern"
  137 + value="Member name ''{0}'' must match pattern ''{1}''."/>
  138 + </module>
  139 + <!--参数名必须符合以下正则表达式: 首字母小写-->
  140 + <module name="ParameterName">
  141 + <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
  142 + <message key="name.invalidPattern"
  143 + value="Parameter name ''{0}'' must match pattern ''{1}''."/>
  144 + </module>
  145 + <!--catch语句块中的参数名必须符合以下正则表达式: 首字母小写-->
  146 + <module name="CatchParameterName">
  147 + <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
  148 + <message key="name.invalidPattern"
  149 + value="Catch parameter name ''{0}'' must match pattern ''{1}''."/>
  150 + </module>
  151 + <!--定义的局部变量名必须符合以下正则表达式: 首字母小写-->
  152 + <module name="LocalVariableName">
  153 + <property name="tokens" value="VARIABLE_DEF"/>
  154 + <property name="format" value="^[a-z]([a-z0-9][a-zA-Z0-9]*)?$"/>
  155 + <message key="name.invalidPattern"
  156 + value="Local variable name ''{0}'' must match pattern ''{1}''."/>
  157 + </module>
  158 + <!--类名Class xxx必须符合以下正则表达式-->
  159 + <module name="ClassTypeParameterName">
  160 + <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
  161 + <message key="name.invalidPattern"
  162 + value="Class type name ''{0}'' must match pattern ''{1}''."/>
  163 + </module>
  164 + <!--方法参数Method xxx必须符合以下正则表达式-->
  165 + <module name="MethodTypeParameterName">
  166 + <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
  167 + <message key="name.invalidPattern"
  168 + value="Method type name ''{0}'' must match pattern ''{1}''."/>
  169 + </module>
  170 + <!--接口名interface xxx必须符合以下正则表达式-->
  171 + <module name="InterfaceTypeParameterName">
  172 + <property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
  173 + <message key="name.invalidPattern"
  174 + value="Interface type name ''{0}'' must match pattern ''{1}''."/>
  175 + </module>
  176 + <!--泛型使用的< >前后空格检查, 不同的泛型使用场景, 检查的空格策略不同-->
  177 + <module name="GenericWhitespace">
  178 + <message key="ws.followed"
  179 + value="GenericWhitespace ''{0}'' is followed by whitespace."/>
  180 + <message key="ws.preceded"
  181 + value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
  182 + <message key="ws.illegalFollow"
  183 + value="GenericWhitespace ''{0}'' should followed by whitespace."/>
  184 + <message key="ws.notPreceded"
  185 + value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
  186 + </module>
  187 + <!--换行时的缩进策略-->
  188 + <module name="Indentation">
  189 + <!--普通换行时缩进策略-->
  190 + <property name="basicOffset" value="4"/>
  191 + <!--大括号被换行时缩进策略-->
  192 + <property name="braceAdjustment" value="0"/>
  193 + <!--case语句换行时缩进策略-->
  194 + <property name="caseIndent" value="4"/>
  195 + <!--throws语句缩进策略-->
  196 + <property name="throwsIndent" value="4"/>
  197 + <!---->
  198 + <property name="lineWrappingIndentation" value="4"/>
  199 + <!--数组初始化时缩进策略-->
  200 + <property name="arrayInitIndent" value="4"/>
  201 + </module>
  202 + <!--在命名规则中允许allowedAbbreviationLength+1个连续大写字母出现-->
  203 + <module name="AbbreviationAsWordInName">
  204 + <property name="ignoreFinal" value="false"/>
  205 + <property name="allowedAbbreviationLength" value="1"/>
  206 + </module>
  207 + <!--方法名相同但参数不同的overload方法放在一起-->
  208 + <module name="OverloadMethodsDeclarationOrder"/>
  209 + <!--变量定义与使用的距离不能超过默认值3-->
  210 + <module name="VariableDeclarationUsageDistance"/>
  211 + <!--检查import顺序-->
  212 + <module name="CustomImportOrder">
  213 + <property name="sortImportsInGroupAlphabetically" value="true"/>
  214 + <property name="separateLineBetweenGroups" value="true"/>
  215 + <property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
  216 + </module>
  217 + <!--检查方法格式-->
  218 + <module name="MethodParamPad"/>
  219 + <!--在某些符号前不能存在空格-->
  220 + <module name="NoWhitespaceBefore">
  221 + <property name="tokens" value="COMMA, SEMI, POST_INC, POST_DEC, DOT, ELLIPSIS, METHOD_REF"/>
  222 + <property name="allowLineBreaks" value="true"/>
  223 + </module>
  224 + <!--检查小括号()两边的空格策略-->
  225 + <module name="ParenPad"/>
  226 + <!--需要换行时, 检查下列运算符必须在下一行-->
  227 + <module name="OperatorWrap">
  228 + <property name="option" value="NL"/>
  229 + <property name="tokens" value="BAND, BOR, BSR, BXOR, DIV, EQUAL, GE, GT, LAND, LE, LITERAL_INSTANCEOF, LOR, LT, MINUS, MOD, NOT_EQUAL, PLUS, QUESTION, SL, SR, STAR, METHOD_REF "/>
  230 + </module>
  231 + <!--方法名命名规则-->
  232 + <module name="MethodName">
  233 + <property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
  234 + <message key="name.invalidPattern"
  235 + value="Method name ''{0}'' must match pattern ''{1}''."/>
  236 + </module>
  237 + <!--异常变量名为expected或有任何注解在里面, 允许空catch块-->
  238 + <module name="EmptyCatchBlock">
  239 + <property name="exceptionVariableName" value="expected"/>
  240 + </module>
  241 + <!--注释的缩进策略, 应与被注释代码缩进策略一样-->
  242 + <module name="CommentsIndentation"/>
  243 + </module>
  244 +</module>
0 \ No newline at end of file 245 \ No newline at end of file
specification/代码分支及版本管理规范.docx 0 → 100644
No preview for this file type
specification/地利集团技术研发部开发者手册初稿v1.2.docx 0 → 100644
No preview for this file type