summaryrefslogtreecommitdiff
path: root/checkstyle.xml
diff options
context:
space:
mode:
authorGravatar modmuss502022-09-14 13:12:55 +0100
committerGravatar GitHub2022-09-14 13:12:55 +0100
commit9c736848fb7aa82d295b3aa2946e6cd132ee998f (patch)
treeb982613cfa7201b2db25cb64a5950f9a2c34a5b3 /checkstyle.xml
parentNested packages in Swing UI (#458) (diff)
downloadenigma-fork-9c736848fb7aa82d295b3aa2946e6cd132ee998f.tar.gz
enigma-fork-9c736848fb7aa82d295b3aa2946e6cd132ee998f.tar.xz
enigma-fork-9c736848fb7aa82d295b3aa2946e6cd132ee998f.zip
Add checkstyle (#460)
Diffstat (limited to 'checkstyle.xml')
-rw-r--r--checkstyle.xml170
1 files changed, 170 insertions, 0 deletions
diff --git a/checkstyle.xml b/checkstyle.xml
new file mode 100644
index 0000000..5256fb0
--- /dev/null
+++ b/checkstyle.xml
@@ -0,0 +1,170 @@
1<?xml version="1.0"?>
2<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.2//EN" "http://www.puppycrawl.com/dtds/configuration_1_2.dtd">
3<module name="Checker">
4 <property name="charset" value="UTF-8"/>
5 <property name="fileExtensions" value="java"/>
6 <property name="localeLanguage" value="en"/>
7 <property name="localeCountry" value="US"/>
8
9 <module name="NewlineAtEndOfFile"/>
10
11 <!-- disallow trailing whitespace -->
12 <module name="RegexpSingleline">
13 <property name="format" value="\s+$"/>
14 <property name="message" value="trailing whitespace"/>
15 </module>
16
17 <!-- note: RegexpMultiline shows nicer messages than Regexp, but has to be outside TreeWalker -->
18 <!-- disallow multiple consecutive blank lines -->
19 <module name="RegexpMultiline">
20 <property name="format" value="\n[\t ]*\r?\n[\t ]*\r?\n"/>
21 <property name="message" value="adjacent blank lines"/>
22 </module>
23
24 <!-- disallow blank after { -->
25 <module name="RegexpMultiline">
26 <property name="format" value="\{[\t ]*\r?\n[\t ]*\r?\n"/>
27 <property name="message" value="blank line after '{'"/>
28 </module>
29
30 <!-- disallow blank before } -->
31 <module name="RegexpMultiline">
32 <property name="format" value="\n[\t ]*\r?\n[\t ]*\}"/>
33 <property name="message" value="blank line before '}'"/>
34 </module>
35
36 <!-- require blank before { in the same indentation level -->
37 <module name="RegexpMultiline">
38 <!-- the regex works as follows:
39 It matches (=fails) for \n<indentation><something>\n<same indentation><control statement>[...]{\n
40 while <something> is a single line comment, it'll look for a blank line one line earlier
41 if <something> is a space, indicating a formatting error or ' */', it'll ignore the instance
42 if <something> is a tab, indicating a continued line, it'll ignore the instance
43 <control statement> is 'if', 'do', 'while', 'for', 'try' or nothing (instance initializer block)
44
45 - first \n: with positive lookbehind (?<=\n) to move the error marker to a more reasonable place
46 - capture tabs for <indentation>, later referenced via \1
47 - remaining preceding line as a non-comment (doesn't start with '/', '//', ' ' or '\t') or multiple lines where all but the first are a single line comment with the same indentation
48 - new line
49 - <indentation> as captured earlier
50 - <control statement> as specified above
51 - { before the next new line -->
52 <property name="format" value="(?&lt;=\n)([\t]+)(?:[^/\r\n \t][^\r\n]*|/[^/\r\n][^\r\n]*|[^/\r\n][^\r\n]*(\r?\n\1//[^\r\n]*)+)\r?\n\1(|(if|do|while|for|try)[^\r\n]+)\{[\t ]*\r?\n"/>
53 <property name="message" value="missing blank line before block at same indentation level"/>
54 </module>
55
56 <!-- require blank after } in the same indentation level -->
57 <module name="RegexpMultiline">
58 <!-- \n<indentation>}\n<same indentation><whatever unless newline, '}' or starting with cas(e) or def(ault)> -->
59 <property name="format" value="(?&lt;=\n)([\t]+)\}\r?\n\1(?:[^\r\n\}cd]|c[^\r\na]|ca[^\r\ns]|d[^\r\ne]|de[^\r\nf])"/>
60 <property name="message" value="missing blank line after block at same indentation level"/>
61 </module>
62
63 <module name="TreeWalker">
64 <!-- Ensure all imports are ship shape -->
65 <module name="AvoidStarImport"/>
66 <module name="IllegalImport"/>
67 <module name="RedundantImport"/>
68 <module name="UnusedImports"/>
69
70 <module name="ImportOrder">
71 <property name="groups" value="java,javax,*,cuchaz.enigma"/>
72 <property name="ordered" value="false"/><!-- the plugin orders alphabetically without considering separators.. -->
73 <property name="separated" value="true"/>
74 <property name="option" value="top"/>
75 <property name="sortStaticImportsAlphabetically" value="true"/>
76 </module>
77
78 <!-- Ensures braces are at the end of a line -->
79 <module name="LeftCurly"/>
80 <module name="RightCurly"/>
81
82 <!-- single line statements on one line, -->
83 <module name="NeedBraces">
84 <property name="tokens" value="LITERAL_IF,LITERAL_FOR,LITERAL_WHILE"/>
85 <property name="allowSingleLineStatement" value="true"/>
86 </module>
87 <module name="NeedBraces">
88 <property name="tokens" value="LITERAL_ELSE,LITERAL_DO"/>
89 <property name="allowSingleLineStatement" value="false"/>
90 </module>
91
92 <module name="EmptyLineSeparator">
93 <property name="allowNoEmptyLineBetweenFields" value="true"/>
94 <property name="allowMultipleEmptyLines" value="false"/>
95 <!-- exclude METHOD_DEF and VARIABLE_DEF -->
96 <property name="tokens" value="PACKAGE_DEF,IMPORT,STATIC_IMPORT,CLASS_DEF,INTERFACE_DEF,ENUM_DEF,STATIC_INIT,INSTANCE_INIT,CTOR_DEF"/>
97 </module>
98
99 <module name="OperatorWrap"/>
100 <module name="SeparatorWrap">
101 <property name="tokens" value="DOT,ELLIPSIS,AT"/>
102 <property name="option" value="nl"/>
103 </module>
104 <module name="SeparatorWrap">
105 <property name="tokens" value="COMMA,SEMI"/>
106 <property name="option" value="eol"/>
107 </module>
108
109 <module name="Indentation">
110 <property name="basicOffset" value="8"/>
111 <property name="caseIndent" value="0"/>
112 <property name="throwsIndent" value="8"/>
113 <property name="arrayInitIndent" value="8"/>
114 <property name="lineWrappingIndentation" value="16"/>
115 </module>
116
117 <module name="ParenPad"/>
118 <module name="NoWhitespaceBefore"/>
119 <module name="NoWhitespaceAfter">
120 <!-- allow ARRAY_INIT -->
121 <property name="tokens" value="AT,INC,DEC,UNARY_MINUS,UNARY_PLUS,BNOT,LNOT,DOT,ARRAY_DECLARATOR,INDEX_OP"/>
122 </module>
123 <module name="WhitespaceAfter"/>
124 <module name="WhitespaceAround">
125 <!-- Allow PLUS, MINUS, MUL, DIV as they may be more readable without spaces in some cases -->
126 <property name="tokens"
127 value="ASSIGN,BAND,BAND_ASSIGN,BOR,BOR_ASSIGN,BSR,BSR_ASSIGN,BXOR,BXOR_ASSIGN,COLON,DIV_ASSIGN,DO_WHILE,EQUAL,GE,GT,LAMBDA,LAND,LCURLY,LE,LITERAL_CATCH,LITERAL_DO,LITERAL_ELSE,LITERAL_FINALLY,LITERAL_FOR,LITERAL_IF,LITERAL_RETURN,LITERAL_SWITCH,LITERAL_SYNCHRONIZED,LITERAL_TRY,LITERAL_WHILE,LOR,LT,MINUS_ASSIGN,MOD,MOD_ASSIGN,NOT_EQUAL,PLUS_ASSIGN,QUESTION,RCURLY,SL,SLIST,SL_ASSIGN,SR,SR_ASSIGN,STAR,STAR_ASSIGN,LITERAL_ASSERT,TYPE_EXTENSION_AND"/>
128 </module>
129 <module name="SingleSpaceSeparator"/>
130 <module name="GenericWhitespace"/>
131 <module name="CommentsIndentation"/>
132
133 <module name="ArrayTypeStyle"/>
134 <module name="DefaultComesLast">
135 <property name="skipIfLastAndSharedWithCase" value="true"/>
136 </module>
137 <module name="SimplifyBooleanExpression"/>
138 <module name="SimplifyBooleanReturn"/>
139 <module name="StringLiteralEquality"/>
140
141 <module name="ModifierOrder"/>
142 <module name="RedundantModifier"/>
143
144 <module name="AnnotationLocation"/>
145 <module name="MissingOverride"/>
146
147 <!-- By default this allows catch blocks with only comments -->
148 <module name="EmptyCatchBlock"/>
149
150 <!-- Enforce tabs -->
151 <module name="RegexpSinglelineJava">
152 <property name="format" value="^\t* ([^*]|\*[^ /])"/>
153 <property name="message" value="non-tab indentation"/>
154 </module>
155
156 <module name="OuterTypeFilename"/>
157
158 <!--<module name="InvalidJavadocPosition"/>-->
159 <module name="JavadocParagraph"/>
160 <module name="JavadocStyle"/>
161 <module name="AtclauseOrder">
162 <property name="tagOrder" value="@param,@return,@throws,@deprecated"/>
163 </module>
164
165 <!-- Prevent var for all cases other than new instance creation -->
166 <module name="MatchXpath">
167 <property name="query" value="//VARIABLE_DEF[./TYPE/IDENT[@text='var'] and not(./ASSIGN/EXPR/LITERAL_NEW)]"/>
168 </module>
169 </module>
170</module> \ No newline at end of file