Skip to content

Commit 78735d2

Browse files
authored
Introduce Checkstyle (#346)
* Add Eclipse Preferences (and Formatter) * rpl -R -e "\t" " " -x.java . * Organize Imports (using Eclipse) * Format Code (using Eclipse) * Introduce Checkstyle (fixes #334)
1 parent b94af8f commit 78735d2

File tree

91 files changed

+1530
-824
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+1530
-824
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM openjdk:8-jdk as build
1+
FROM openjdk:11-jdk as build
22

33
# https://github.com/nodesource/distributions/blob/master/README.md#installation-instructions
44
RUN curl -fsSL https://deb.nodesource.com/setup_17.x | bash - && apt install -y nodejs && node --version

api/src/main/java/ch/vorburger/minecraft/storeys/api/HandType.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,13 @@ public enum HandType implements SpongeCataloged<org.spongepowered.api.data.type.
2525

2626
MainHand(MAIN_HAND), OffHand(OFF_HAND);
2727

28-
2928
private final org.spongepowered.api.data.type.HandType handType;
3029

3130
HandType(org.spongepowered.api.data.type.HandType handType) {
3231
this.handType = handType;
3332
}
3433

35-
@Override
36-
public org.spongepowered.api.data.type.HandType getCatalogType() {
34+
@Override public org.spongepowered.api.data.type.HandType getCatalogType() {
3735
return handType;
3836
}
3937

api/src/main/java/ch/vorburger/minecraft/storeys/api/ItemType.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,14 @@ public enum ItemType implements SpongeCataloged<Optional<org.spongepowered.api.i
4747
*/
4848
Nothing,
4949

50-
Apple(APPLE), Beef(BEEF), Beetroot(BEETROOT), Boat(BOAT), Book(BOOK), Bow(BOW), Bowl(BOWL), Bread(BREAD),
51-
Cactus(CACTUS), Cake(CAKE), Carrot(CARROT), Cauldron(CAULDRON), Chicken(CHICKEN), Clock(CLOCK),
52-
Cookie(COOKIE),
50+
Apple(APPLE), Beef(BEEF), Beetroot(BEETROOT), Boat(BOAT), Book(BOOK), Bow(BOW), Bowl(BOWL), Bread(BREAD), Cactus(CACTUS), Cake(CAKE),
51+
Carrot(CARROT), Cauldron(CAULDRON), Chicken(CHICKEN), Clock(CLOCK), Cookie(COOKIE),
5352

5453
/**
5554
* Holding none of the known previously listed items in hand.
5655
*/
5756
Unknown;
5857

59-
6058
private final Optional<org.spongepowered.api.item.ItemType> itemType;
6159
private static Map<org.spongepowered.api.item.ItemType, ItemType> INVERSE;
6260

@@ -68,8 +66,7 @@ public enum ItemType implements SpongeCataloged<Optional<org.spongepowered.api.i
6866
this.itemType = Optional.empty();
6967
}
7068

71-
@Override
72-
public Optional<org.spongepowered.api.item.ItemType> getCatalogType() {
69+
@Override public Optional<org.spongepowered.api.item.ItemType> getCatalogType() {
7370
return itemType;
7471
}
7572

api/src/main/java/ch/vorburger/minecraft/storeys/api/LoginResponse.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,7 @@ public void setPlayerUuid(String playerUuid) {
4848
this.playerUuid = playerUuid;
4949
}
5050

51-
@Override
52-
public String toString() {
51+
@Override public String toString() {
5352
return toJson().encodePrettily();
5453
}
5554
}

api/src/main/java/ch/vorburger/minecraft/storeys/api/Minecraft.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ public interface Minecraft {
3636
/**
3737
* Runs a Minecraft command.
3838
* This does not register a new command, but runs one.
39+
*
3940
* @param command one single command without the starting slash
4041
*/
4142
void runCommand(String playerUUID, String command, Handler<AsyncResult<Void>> handler);

api/src/main/java/ch/vorburger/minecraft/storeys/api/Token.java

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323

2424
/**
2525
* Token for an operation on the {@link Minecraft} simple API.
26-
*
2726
* This identifies either a logged in Player or a "cause".
2827
*/
2928
@DataObject(generateConverter = true)
@@ -69,17 +68,15 @@ public void setPlayerSource(String playerSource) {
6968
this.playerSource = playerSource;
7069
}
7170

72-
@Override
73-
public int hashCode() {
71+
@Override public int hashCode() {
7472
final int prime = 31;
7573
int result = 1;
76-
result = prime * result + (loginCode == null ? 0 : loginCode.hashCode());
77-
result = prime * result + (playerSource == null ? 0 : playerSource.hashCode());
74+
result = (prime * result) + (loginCode == null ? 0 : loginCode.hashCode());
75+
result = (prime * result) + (playerSource == null ? 0 : playerSource.hashCode());
7876
return result;
7977
}
8078

81-
@Override
82-
public boolean equals(Object obj) {
79+
@Override public boolean equals(Object obj) {
8380
if (this == obj) {
8481
return true;
8582
}
@@ -107,8 +104,7 @@ public boolean equals(Object obj) {
107104
return true;
108105
}
109106

110-
@Override
111-
public String toString() {
107+
@Override public String toString() {
112108
return "Token [loginCode=" + loginCode + ", playerSource=" + playerSource + "]";
113109
}
114110

api/src/main/java/ch/vorburger/minecraft/storeys/api/package-info.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616
* You should have received a copy of the GNU Affero General Public License
1717
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
*/
19-
@ModuleGen(name="Minecraft", groupPackage = "ch.vorburger.minecraft.storeys.api")
19+
20+
/**
21+
* JavaScript API of Storeys Minecraft plugin.
22+
*/
23+
@ModuleGen(name = "Minecraft", groupPackage = "ch.vorburger.minecraft.storeys.api")
2024
package ch.vorburger.minecraft.storeys.api;
2125

2226
import io.vertx.codegen.annotations.ModuleGen;

build.gradle

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ buildscript {
88
}
99

1010
plugins {
11+
id 'checkstyle'
1112
id 'java-library'
1213
// id 'net.ltgt.errorprone' version '0.0.13'
1314
}
@@ -20,22 +21,22 @@ allprojects {
2021
group = 'ch.vorburger.minecraft.storeys'
2122
version = '1.0.0-SNAPSHOT'
2223
description = 'Make your own stories in, with and for Minecraft!'
24+
}
2325

26+
subprojects {
27+
sourceCompatibility = 1.8
28+
targetCompatibility = 1.8
29+
30+
apply plugin: 'checkstyle'
2431
apply plugin: 'java-library'
32+
apply plugin: 'biz.aQute.bnd.builder'
2533
// apply plugin: 'net.ltgt.errorprone'
2634

2735
tasks.withType(JavaCompile) {
2836
options.compilerArgs << "-Xlint:unchecked"
2937
// TODO apply same error-prone configuration as I've done in OpenDaylight's infrautils.parent
3038
// options.compilerArgs += [ '-Xlint:deprecation', '-Xep:FallThrough:ERROR', '-Xep:MutableConstantField:ERROR', '-Xep:DefaultCharset:ERROR' ]
3139
}
32-
}
33-
34-
subprojects {
35-
sourceCompatibility = 1.8
36-
targetCompatibility = 1.8
37-
38-
apply plugin: 'biz.aQute.bnd.builder'
3940

4041
repositories {
4142
jcenter()
@@ -46,6 +47,8 @@ subprojects {
4647
}
4748

4849
dependencies {
50+
checkstyle 'com.puppycrawl.tools:checkstyle:10.1'
51+
4952
// errorprone 'com.google.errorprone:error_prone_core:2.3.1'
5053
// implementation 'com.google.errorprone:error_prone_annotations:2.3.1'
5154

config/checkstyle/checkstyle.xml

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN" "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
3+
<!--
4+
Checkstyle-Configuration: Michael Vorburger's <http://www.vorburger.ch> Checkstyle Checks
5+
-->
6+
<module name="Checker">
7+
<property name="severity" value="error"/>
8+
<property name="charset" value="UTF-8"/>
9+
<module name="TreeWalker">
10+
<module name="OuterTypeFilename"/>
11+
<module name="IllegalTokenText">
12+
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
13+
<property name="format" value="\\u00(08|09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
14+
<property name="message" value="Avoid using corresponding octal or Unicode escape."/>
15+
</module>
16+
<module name="AvoidEscapedUnicodeCharacters">
17+
<property name="allowEscapesForControlCharacters" value="true"/>
18+
<property name="allowByTailComment" value="true"/>
19+
<property name="allowNonPrintableEscapes" value="true"/>
20+
</module>
21+
<module name="AvoidStarImport"/>
22+
<module name="OneTopLevelClass"/>
23+
<module name="NoLineWrap"/>
24+
<module name="EmptyBlock">
25+
<property name="option" value="TEXT"/>
26+
<property name="tokens" value="LITERAL_TRY, LITERAL_CATCH, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
27+
</module>
28+
<module name="NeedBraces">
29+
<property name="tokens" value="LITERAL_DO,LITERAL_FOR,LITERAL_WHILE"/>
30+
</module>
31+
<module name="LeftCurly"/>
32+
<module name="RightCurly">
33+
<property name="option" value="alone_or_singleline"/>
34+
<property name="tokens" value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_FOR, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT"/>
35+
</module>
36+
<module name="WhitespaceAround">
37+
<property name="allowEmptyConstructors" value="true"/>
38+
<property name="allowEmptyMethods" value="true"/>
39+
<property name="allowEmptyTypes" value="true"/>
40+
<property name="allowEmptyLoops" value="true"/>
41+
<message key="ws.notPreceded" value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
42+
<message key="ws.notFollowed" value="WhitespaceAround: ''{0}'' is not followed by whitespace."/>
43+
</module>
44+
<module name="OneStatementPerLine"/>
45+
<module name="ArrayTypeStyle"/>
46+
<module name="MissingSwitchDefault"/>
47+
<module name="FallThrough"/>
48+
<module name="UpperEll"/>
49+
<module name="ModifierOrder">
50+
<property name="severity" value="ignore"/>
51+
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
52+
</module>
53+
<module name="EmptyLineSeparator">
54+
<property name="tokens" value="IMPORT,CLASS_DEF,ENUM_DEF,INTERFACE_DEF,CTOR_DEF,METHOD_DEF,STATIC_INIT,INSTANCE_INIT,VARIABLE_DEF"/>
55+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
56+
</module>
57+
<module name="SeparatorWrap">
58+
<property name="option" value="nl"/>
59+
<property name="tokens" value="DOT"/>
60+
</module>
61+
<module name="SeparatorWrap">
62+
<property name="option" value="EOL"/>
63+
<property name="tokens" value="COMMA"/>
64+
</module>
65+
<module name="PackageName">
66+
<property name="format" value="^[a-z]+(\.[a-z][a-z0-9]*)*$"/>
67+
<message key="name.invalidPattern" value="Package name ''{0}'' must match pattern ''{1}''."/>
68+
</module>
69+
<module name="TypeName">
70+
<message key="name.invalidPattern" value="Type name ''{0}'' must match pattern ''{1}''."/>
71+
</module>
72+
<module name="MemberName">
73+
<message key="name.invalidPattern" value="Member name ''{0}'' must match pattern ''{1}''."/>
74+
</module>
75+
<module name="ParameterName">
76+
<message key="name.invalidPattern" value="Parameter name ''{0}'' must match pattern ''{1}''."/>
77+
</module>
78+
<module name="LocalVariableName">
79+
<property name="allowOneCharVarInForLoop" value="true"/>
80+
<property name="tokens" value="VARIABLE_DEF"/>
81+
<message key="name.invalidPattern" value="Local variable name ''{0}'' must match pattern ''{1}''."/>
82+
</module>
83+
<module name="ClassTypeParameterName">
84+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
85+
<message key="name.invalidPattern" value="Class type name ''{0}'' must match pattern ''{1}''."/>
86+
</module>
87+
<module name="MethodTypeParameterName">
88+
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9]*[T]$)"/>
89+
<message key="name.invalidPattern" value="Method type name ''{0}'' must match pattern ''{1}''."/>
90+
</module>
91+
<module name="NoFinalizer"/>
92+
<module name="GenericWhitespace">
93+
<message key="ws.notPreceded" value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
94+
<message key="ws.followed" value="GenericWhitespace ''{0}'' is followed by whitespace."/>
95+
<message key="ws.preceded" value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
96+
<message key="ws.illegalFollow" value="GenericWhitespace ''{0}'' should followed by whitespace."/>
97+
</module>
98+
<module name="Indentation"/>
99+
<module name="AbbreviationAsWordInName">
100+
<property name="severity" value="ignore"/>
101+
<property name="allowedAbbreviationLength" value="1"/>
102+
<property name="ignoreFinal" value="false"/>
103+
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
104+
</module>
105+
<module name="OverloadMethodsDeclarationOrder"/>
106+
<module name="VariableDeclarationUsageDistance"/>
107+
<module name="CustomImportOrder">
108+
<property name="sortImportsInGroupAlphabetically" value="true"/>
109+
<property name="customImportOrderRules" value="STATIC###THIRD_PARTY_PACKAGE"/>
110+
</module>
111+
<module name="MethodParamPad"/>
112+
<module name="OperatorWrap">
113+
<property name="option" value="NL"/>
114+
<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 "/>
115+
</module>
116+
<module name="AnnotationLocation">
117+
<property name="tokens" value="CLASS_DEF,INTERFACE_DEF,ENUM_DEF,METHOD_DEF,CTOR_DEF"/>
118+
<property name="allowSamelineMultipleAnnotations" value="true"/>
119+
</module>
120+
<module name="AnnotationLocation">
121+
<property name="tokens" value="VARIABLE_DEF"/>
122+
<property name="allowSamelineMultipleAnnotations" value="true"/>
123+
</module>
124+
<module name="NonEmptyAtclauseDescription"/>
125+
<module name="JavadocTagContinuationIndentation"/>
126+
<module name="SummaryJavadocCheck"/>
127+
<module name="JavadocParagraph"/>
128+
<module name="AtclauseOrder">
129+
<property name="target" value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
130+
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
131+
</module>
132+
<module name="JavadocStyle">
133+
<property name="scope" value="nothing"/>
134+
</module>
135+
<module name="MissingJavadocMethod">
136+
<property name="severity" value="ignore"/>
137+
<property name="minLineCount" value="2"/>
138+
</module>
139+
<module name="JavadocMethod">
140+
<property name="allowedAnnotations" value="Override, Test"/>
141+
<property name="allowMissingParamTags" value="true"/>
142+
<property name="allowMissingReturnTag" value="true"/>
143+
</module>
144+
<module name="MethodName">
145+
<property name="format" value="^_?[a-z0-9][a-zA-Z0-9_]*$"/>
146+
<message key="name.invalidPattern" value="Method name ''{0}'' must match pattern ''{1}''."/>
147+
</module>
148+
<module name="SingleLineJavadoc">
149+
<property name="severity" value="ignore"/>
150+
<metadata name="net.sf.eclipsecs.core.lastEnabledSeverity" value="inherit"/>
151+
</module>
152+
</module>
153+
<module name="LineLength">
154+
<property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
155+
<property name="max" value="150"/>
156+
</module>
157+
<module name="FileTabCharacter">
158+
<property name="severity" value="error"/>
159+
<property name="eachLine" value="true"/>
160+
</module>
161+
</module>

0 commit comments

Comments
 (0)