Skip to content

Commit dbbaef8

Browse files
authored
GH-93 Add checkstyle and fix issues reported by checkstyle. (#93)
1 parent 6b29dac commit dbbaef8

File tree

20 files changed

+278
-36
lines changed

20 files changed

+278
-36
lines changed

buildSrc/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ plugins {
33
}
44

55
repositories {
6+
mavenCentral()
67
gradlePluginPortal()
78
}
89

buildSrc/src/main/kotlin/eternalcode.java.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
plugins {
22
`java-library`
3+
checkstyle
34
}
45

56
group = "com.eternalcode"
67
version = "1.0.7"
78

9+
checkstyle {
10+
toolVersion = "10.12.3"
11+
12+
configFile = file("${rootDir}/config/checkstyle/checkstyle.xml")
13+
14+
maxErrors = 0
15+
maxWarnings = 0
16+
}
17+
818
repositories {
919
mavenCentral()
1020
maven { url = uri("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") }

config/checkstyle/checkstyle.xml

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
3+
"https://checkstyle.org/dtds/configuration_1_3.dtd">
4+
5+
<module name="Checker">
6+
<property name="charset" value="UTF-8"/>
7+
8+
<property name="severity" value="error"/>
9+
10+
<module name="SuppressionFilter">
11+
<property name="file" value="${config_loc}/suppressions.xml"/>
12+
</module>
13+
14+
<property name="fileExtensions" value="java, properties, xml"/>
15+
<!-- Excludes all 'module-info.java' files -->
16+
<!-- See https://checkstyle.org/config_filefilters.html -->
17+
<module name="BeforeExecutionExclusionFileFilter">
18+
<property name="fileNamePattern" value="module\-info\.java$"/>
19+
</module>
20+
21+
<!-- Checks for whitespace -->
22+
<!-- See http://checkstyle.org/config_whitespace.html -->
23+
<module name="FileTabCharacter">
24+
<property name="eachLine" value="true"/>
25+
</module>
26+
27+
<module name="TreeWalker">
28+
<module name="OuterTypeFilename"/>
29+
<module name="IllegalTokenText">
30+
<property name="tokens" value="STRING_LITERAL, CHAR_LITERAL"/>
31+
<property name="format"
32+
value="\\u00(09|0(a|A)|0(c|C)|0(d|D)|22|27|5(C|c))|\\(0(10|11|12|14|15|42|47)|134)"/>
33+
<property name="message"
34+
value="Consider using special escape sequence instead of octal value or Unicode escaped value."/>
35+
</module>
36+
<module name="AvoidStarImport"/>
37+
<module name="OneTopLevelClass"/>
38+
<module name="NoLineWrap">
39+
<property name="tokens" value="PACKAGE_DEF, IMPORT, STATIC_IMPORT"/>
40+
</module>
41+
<module name="EmptyBlock">
42+
<property name="option" value="TEXT"/>
43+
<property name="tokens"
44+
value="LITERAL_TRY, LITERAL_FINALLY, LITERAL_IF, LITERAL_ELSE, LITERAL_SWITCH"/>
45+
</module>
46+
<module name="NeedBraces">
47+
<property name="tokens"
48+
value="LITERAL_DO, LITERAL_ELSE, LITERAL_FOR, LITERAL_IF, LITERAL_WHILE"/>
49+
</module>
50+
<module name="LeftCurly">
51+
<property name="tokens"
52+
value="ANNOTATION_DEF, CLASS_DEF, CTOR_DEF, ENUM_CONSTANT_DEF, ENUM_DEF,
53+
INTERFACE_DEF, LAMBDA, LITERAL_CASE, LITERAL_CATCH, LITERAL_DEFAULT,
54+
LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF,
55+
LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF,
56+
OBJBLOCK, STATIC_INIT, RECORD_DEF, COMPACT_CTOR_DEF"/>
57+
</module>
58+
<module name="RightCurly">
59+
<property name="id" value="RightCurlySame"/>
60+
<property name="tokens" value="LITERAL_DO"/>
61+
</module>
62+
<module name="RightCurly">
63+
<property name="id" value="RightCurlyAlone"/>
64+
<property name="option" value="alone"/>
65+
<property name="tokens"
66+
value="CLASS_DEF, METHOD_DEF, CTOR_DEF, LITERAL_CATCH, LITERAL_ELSE, LITERAL_FOR, LITERAL_FINALLY,
67+
LITERAL_IF, LITERAL_TRY, LITERAL_WHILE, STATIC_INIT, INSTANCE_INIT, ANNOTATION_DEF, ENUM_DEF,
68+
INTERFACE_DEF, RECORD_DEF, COMPACT_CTOR_DEF"/>
69+
</module>
70+
<module name="RequireThis">
71+
<property name="validateOnlyOverlapping" value="false"/>
72+
</module>
73+
<module name="SuppressionXpathSingleFilter">
74+
<!-- suppresion is required till https://github.com/checkstyle/checkstyle/issues/7541 -->
75+
<property name="id" value="RightCurlyAlone"/>
76+
<property name="query" value="//RCURLY[parent::SLIST[count(./*)=1]
77+
or preceding-sibling::*[last()][self::LCURLY]]"/>
78+
</module>
79+
<module name="WhitespaceAfter">
80+
<property name="tokens"
81+
value="COMMA, SEMI, TYPECAST, LITERAL_IF, LITERAL_ELSE,
82+
LITERAL_WHILE, LITERAL_DO, LITERAL_FOR, DO_WHILE"/>
83+
</module>
84+
<module name="WhitespaceAround">
85+
<property name="allowEmptyConstructors" value="true"/>
86+
<property name="allowEmptyLambdas" value="true"/>
87+
<property name="allowEmptyMethods" value="true"/>
88+
<property name="allowEmptyTypes" value="true"/>
89+
<property name="allowEmptyLoops" value="true"/>
90+
<property name="ignoreEnhancedForColon" value="false"/>
91+
<property name="tokens"
92+
value="ASSIGN, BAND, BAND_ASSIGN, BOR, BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR,
93+
BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN, DO_WHILE, EQUAL, GE, GT, LAMBDA, LAND,
94+
LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY,
95+
LITERAL_FOR, LITERAL_IF, LITERAL_RETURN, LITERAL_SWITCH, LITERAL_SYNCHRONIZED,
96+
LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS, MINUS_ASSIGN, MOD, MOD_ASSIGN,
97+
NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION, RCURLY, SL, SLIST, SL_ASSIGN, SR,
98+
SR_ASSIGN, STAR, STAR_ASSIGN, LITERAL_ASSERT, TYPE_EXTENSION_AND"/>
99+
<message key="ws.notFollowed"
100+
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)"/>
101+
<message key="ws.notPreceded"
102+
value="WhitespaceAround: ''{0}'' is not preceded with whitespace."/>
103+
</module>
104+
<module name="OneStatementPerLine"/>
105+
<module name="MultipleVariableDeclarations"/>
106+
<module name="ArrayTypeStyle"/>
107+
<module name="MissingSwitchDefault">
108+
<property name="severity" value="warning"/>
109+
</module>
110+
<module name="FallThrough"/>
111+
<module name="UpperEll"/>
112+
<module name="EmptyLineSeparator">
113+
<property name="tokens"
114+
value="PACKAGE_DEF, IMPORT, STATIC_IMPORT, CLASS_DEF, INTERFACE_DEF, ENUM_DEF,
115+
STATIC_INIT, INSTANCE_INIT, METHOD_DEF, CTOR_DEF, VARIABLE_DEF, RECORD_DEF,
116+
COMPACT_CTOR_DEF"/>
117+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
118+
</module>
119+
<module name="SeparatorWrap">
120+
<property name="id" value="SeparatorWrapDot"/>
121+
<property name="tokens" value="DOT"/>
122+
<property name="option" value="nl"/>
123+
</module>
124+
<module name="SeparatorWrap">
125+
<property name="id" value="SeparatorWrapComma"/>
126+
<property name="tokens" value="COMMA"/>
127+
<property name="option" value="EOL"/>
128+
</module>
129+
<module name="SeparatorWrap">
130+
<!-- ELLIPSIS is EOL until https://github.com/google/styleguide/issues/259 -->
131+
<property name="id" value="SeparatorWrapEllipsis"/>
132+
<property name="tokens" value="ELLIPSIS"/>
133+
<property name="option" value="EOL"/>
134+
</module>
135+
<module name="SeparatorWrap">
136+
<!-- ARRAY_DECLARATOR is EOL until https://github.com/google/styleguide/issues/258 -->
137+
<property name="id" value="SeparatorWrapArrayDeclarator"/>
138+
<property name="tokens" value="ARRAY_DECLARATOR"/>
139+
<property name="option" value="EOL"/>
140+
</module>
141+
<module name="SeparatorWrap">
142+
<property name="id" value="SeparatorWrapMethodRef"/>
143+
<property name="tokens" value="METHOD_REF"/>
144+
<property name="option" value="nl"/>
145+
</module>
146+
<module name="NoFinalizer"/>
147+
<module name="GenericWhitespace">
148+
<message key="ws.followed"
149+
value="GenericWhitespace ''{0}'' is followed by whitespace."/>
150+
<message key="ws.preceded"
151+
value="GenericWhitespace ''{0}'' is preceded with whitespace."/>
152+
<message key="ws.illegalFollow"
153+
value="GenericWhitespace ''{0}'' should followed by whitespace."/>
154+
<message key="ws.notPreceded"
155+
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
156+
</module>
157+
<module name="MethodParamPad">
158+
<property name="tokens"
159+
value="CTOR_DEF, LITERAL_NEW, METHOD_CALL, METHOD_DEF,
160+
SUPER_CTOR_CALL, ENUM_CONSTANT_DEF, RECORD_DEF"/>
161+
</module>
162+
<module name="NoWhitespaceBefore">
163+
<property name="tokens"
164+
value="COMMA, SEMI, POST_INC, POST_DEC, DOT,
165+
LABELED_STAT, METHOD_REF"/>
166+
<property name="allowLineBreaks" value="true"/>
167+
</module>
168+
<module name="NoWhitespaceAfter">
169+
<property name="tokens" value="LNOT"/>
170+
</module>
171+
<module name="ParenPad">
172+
<property name="tokens"
173+
value="ANNOTATION, ANNOTATION_FIELD_DEF, CTOR_CALL, CTOR_DEF, DOT, ENUM_CONSTANT_DEF,
174+
EXPR, LITERAL_CATCH, LITERAL_DO, LITERAL_FOR, LITERAL_IF, LITERAL_NEW,
175+
LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_WHILE, METHOD_CALL,
176+
QUESTION, RESOURCE_SPECIFICATION, SUPER_CTOR_CALL, LAMBDA,
177+
RECORD_DEF"/>
178+
</module>
179+
180+
<module name="AnnotationLocation">
181+
<property name="id" value="AnnotationLocationMostCases"/>
182+
<property name="tokens"
183+
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF,
184+
RECORD_DEF, COMPACT_CTOR_DEF"/>
185+
</module>
186+
<module name="AnnotationLocation">
187+
<property name="id" value="AnnotationLocationVariables"/>
188+
<property name="tokens" value="VARIABLE_DEF"/>
189+
<property name="allowSamelineMultipleAnnotations" value="true"/>
190+
</module>
191+
<module name="NonEmptyAtclauseDescription"/>
192+
<module name="RequireEmptyLineBeforeBlockTagGroup"/>
193+
<module name="AtclauseOrder">
194+
<property name="tagOrder" value="@param, @return, @throws, @deprecated"/>
195+
<property name="target"
196+
value="CLASS_DEF, INTERFACE_DEF, ENUM_DEF, METHOD_DEF, CTOR_DEF, VARIABLE_DEF"/>
197+
</module>
198+
<module name="MethodName">
199+
<property name="format" value="^[a-z][a-z0-9][a-zA-Z0-9_]*$"/>
200+
<message key="name.invalidPattern"
201+
value="Method name ''{0}'' must match pattern ''{1}''."/>
202+
</module>
203+
<module name="SingleLineJavadoc"/>
204+
<module name="EmptyCatchBlock">
205+
<property name="exceptionVariableName" value="ignored"/>
206+
</module>
207+
<module name="CommentsIndentation">
208+
<property name="tokens" value="SINGLE_LINE_COMMENT, BLOCK_COMMENT_BEGIN"/>
209+
</module>
210+
<!-- https://checkstyle.org/config_filters.html#SuppressionXpathFilter -->
211+
<module name="SuppressionXpathFilter">
212+
<property name="file" value="${org.checkstyle.google.suppressionxpathfilter.config}"
213+
default="checkstyle-xpath-suppressions.xml"/>
214+
<property name="optional" value="true"/>
215+
</module>
216+
</module>
217+
</module>

config/checkstyle/suppressions.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE suppressions PUBLIC
3+
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
4+
"http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
5+
<suppressions>
6+
</suppressions>

core/src/main/java/com/eternalcode/formatter/ChatController.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,12 @@ void onChat(AsyncPlayerChatEvent event) {
127127
message = this.templateService.applyTemplates(message);
128128
message = this.placeholderRegistry.format(message, player);
129129

130-
Component messageComponent = miniMessage.deserialize(message, this.createTagResolvers(event));
130+
Component messageComponent = this.miniMessage.deserialize(message, this.createTagResolvers(event));
131131

132132
Set<Player> recipients = event.getRecipients();
133133

134-
if (!preparatoryService.isEmpty()) {
135-
ChatPrepareResult result = preparatoryService.prepare(player, recipients, GSON.serialize(messageComponent), event.getMessage());
134+
if (!this.preparatoryService.isEmpty()) {
135+
ChatPrepareResult result = this.preparatoryService.prepare(player, recipients, GSON.serialize(messageComponent), event.getMessage());
136136

137137
if (result.isCancelled()) {
138138
return;

core/src/main/java/com/eternalcode/formatter/ChatFormatterPlugin.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,22 +87,22 @@ public void onDisable() {
8787

8888
@Override
8989
public PlaceholderRegistry getPlaceholderRegistry() {
90-
return placeholderRegistry;
90+
return this.placeholderRegistry;
9191
}
9292

9393
@Override
9494
public TemplateService getTemplateService() {
95-
return templateService;
95+
return this.templateService;
9696
}
9797

9898
@Override
9999
public ChatRankProvider getRankProvider() {
100-
return rankProvider;
100+
return this.rankProvider;
101101
}
102102

103103
@Override
104104
public ChatPreparatoryService getChatPreparatoryService() {
105-
return chatPreparatoryService;
105+
return this.chatPreparatoryService;
106106
}
107107

108108
}

core/src/main/java/com/eternalcode/formatter/adventure/PlayerSignedMessage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public Signature signature() {
5454

5555
@Override
5656
public @NotNull Identity identity() {
57-
return identity;
57+
return this.identity;
5858
}
5959

6060
}

core/src/main/java/com/eternalcode/formatter/adventure/TextColorTagResolver.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,13 @@
1313
import org.jetbrains.annotations.NotNull;
1414

1515
import javax.annotation.Nullable;
16-
import java.util.*;
16+
import java.util.Arrays;
17+
import java.util.Collection;
18+
import java.util.HashMap;
19+
import java.util.HashSet;
20+
import java.util.Map;
21+
import java.util.Set;
22+
1723

1824
public class TextColorTagResolver implements TagResolver, SerializableResolver.Single {
1925

@@ -53,13 +59,14 @@ private TextColorTagResolver(Collection<NamedTextColor> allowedColors) {
5359
String colorName;
5460
if (isColorOrAbbreviation(name)) {
5561
colorName = args.popOr("Expected to find a color parameter: <name>|#RRGGBB").lowerValue();
56-
} else {
62+
}
63+
else {
5764
colorName = name;
5865
}
5966

6067
TextColor color = resolveColor(colorName, ctx);
6168

62-
if (!allowedColors.contains(color)) {
69+
if (!this.allowedColors.contains(color)) {
6370
throw ctx.newException(String.format("Color '%s' is not allowed.", colorName));
6471
}
6572

@@ -84,13 +91,13 @@ private TextColorTagResolver(Collection<NamedTextColor> allowedColors) {
8491

8592
@Override
8693
public boolean has(final @NotNull String name) {
87-
if (isColorOrAbbreviation(name)) {
94+
if (this.isColorOrAbbreviation(name)) {
8895
return true;
8996
}
9097

9198
NamedTextColor textColor = NamedTextColor.NAMES.value(name);
9299

93-
if (textColor != null && allowedColors.contains(textColor)) {
100+
if (textColor != null && this.allowedColors.contains(textColor)) {
94101
return true;
95102
}
96103

core/src/main/java/com/eternalcode/formatter/legacy/Legacy.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public final class Legacy {
1313
public static final String SHADOW = "<ampersand>";
1414

1515
public static final Pattern ALL_PATTERN = Pattern.compile(".*");
16-
public static final Pattern AMPERSAND_PATTERN = Pattern.compile( "(?i)" + AMPERSAND + "[0-9A-FK-ORX#]" );
17-
public static final Pattern SHADOW_PATTERN = Pattern.compile( "(?i)" + SHADOW + "[0-9A-FK-ORX#]" );
16+
public static final Pattern AMPERSAND_PATTERN = Pattern.compile("(?i)" + AMPERSAND + "[0-9A-FK-ORX#]");
17+
public static final Pattern SHADOW_PATTERN = Pattern.compile("(?i)" + SHADOW + "[0-9A-FK-ORX#]");
1818

1919
private Legacy() {
2020
}
@@ -70,7 +70,7 @@ static String placeholderToAmpersand(String text) {
7070
int matched = 0;
7171
while (matcher.find()) {
7272
int length = (matcher.end() - matcher.start()) - 1;
73-
builder.replace(matcher.start() + matched, matcher.end() + matched - 1, String.valueOf( AMPERSAND ));
73+
builder.replace(matcher.start() + matched, matcher.end() + matched - 1, String.valueOf(AMPERSAND));
7474
matched -= length;
7575
matched += 1;
7676
}

0 commit comments

Comments
 (0)