Commit 9b118bbc43cb169d0038d86dd97387903377e47f
0 parents
add serval specification documents
Showing
3 changed files
with
245 additions
and
0 deletions
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