diff options
| author | 2022-09-14 13:12:55 +0100 | |
|---|---|---|
| committer | 2022-09-14 13:12:55 +0100 | |
| commit | 9c736848fb7aa82d295b3aa2946e6cd132ee998f (patch) | |
| tree | b982613cfa7201b2db25cb64a5950f9a2c34a5b3 /checkstyle.xml | |
| parent | Nested packages in Swing UI (#458) (diff) | |
| download | enigma-9c736848fb7aa82d295b3aa2946e6cd132ee998f.tar.gz enigma-9c736848fb7aa82d295b3aa2946e6cd132ee998f.tar.xz enigma-9c736848fb7aa82d295b3aa2946e6cd132ee998f.zip | |
Add checkstyle (#460)
Diffstat (limited to 'checkstyle.xml')
| -rw-r--r-- | checkstyle.xml | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/checkstyle.xml b/checkstyle.xml new file mode 100644 index 00000000..5256fb0d --- /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="(?<=\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="(?<=\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 | ||