Skip to content

Commit ecf4bde

Browse files
committed
Add checkstyle and establish compliance, fix warnings
1 parent 8b12b54 commit ecf4bde

20 files changed

Lines changed: 281 additions & 94 deletions

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
/.settings/
66
/.classpath
77
/.project
8+
/.checkstyle
89
/.gradle
910
*.jar
1011
*.tiny
1112
.idea/
1213
!src/test/resources/**
14+
/tiny-remapper/

build.gradle

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
plugins {
22
id 'java'
33
id 'maven-publish'
4+
id 'checkstyle'
45
id 'com.github.johnrengelman.shadow' version '6.1.0'
56
}
67

78
sourceCompatibility = JavaVersion.VERSION_1_8
89
targetCompatibility = JavaVersion.VERSION_1_8
910

10-
version = '0.4.0'
11+
version = '0.4.1'
1112

1213
def ENV = System.getenv()
1314
version = version + (ENV.GITHUB_ACTIONS ? "" : "+local")
@@ -61,6 +62,11 @@ jar {
6162
}
6263
}
6364

65+
checkstyle {
66+
configFile = file("checkstyle.xml")
67+
toolVersion = '8.31'
68+
}
69+
6470
publishing {
6571
publications {
6672
mavenJava(MavenPublication) {

checkstyle.xml

Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
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+
<property name="tabWidth" value="4"/>
9+
10+
<module name="NewlineAtEndOfFile"/>
11+
12+
<!-- disallow trailing whitespace -->
13+
<module name="RegexpSingleline">
14+
<property name="format" value="\s+$"/>
15+
<property name="message" value="trailing whitespace"/>
16+
</module>
17+
18+
<!-- note: RegexpMultiline shows nicer messages than Regexp, but has to be outside TreeWalker -->
19+
<!-- disallow multiple consecutive blank lines -->
20+
<module name="RegexpMultiline">
21+
<property name="format" value="\n[\t ]*\r?\n[\t ]*\r?\n"/>
22+
<property name="message" value="adjacent blank lines"/>
23+
</module>
24+
25+
<!-- disallow blank after { -->
26+
<module name="RegexpMultiline">
27+
<property name="format" value="\{[\t ]*\r?\n[\t ]*\r?\n"/>
28+
<property name="message" value="blank line after '{'"/>
29+
</module>
30+
31+
<!-- disallow blank before } -->
32+
<module name="RegexpMultiline">
33+
<property name="format" value="\n[\t ]*\r?\n[\t ]*\}"/>
34+
<property name="message" value="blank line before '}'"/>
35+
</module>
36+
37+
<!-- require blank before { in the same indentation level -->
38+
<module name="RegexpMultiline">
39+
<!-- the regex works as follows:
40+
It matches (=fails) for \n<indentation><something>\n<same indentation><control statement>[...]{\n
41+
while <something> is a single line comment, it'll look for a blank line one line earlier
42+
if <something> is a space, indicating a formatting error or ' */', it'll ignore the instance
43+
if <something> is a tab, indicating a continued line, it'll ignore the instance
44+
<control statement> is 'if', 'do', 'while', 'for', 'try' or nothing (instance initializer block)
45+
46+
- first \n: with positive lookbehind (?<=\n) to move the error marker to a more reasonable place
47+
- capture tabs for <indentation>, later referenced via \1
48+
- 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
49+
- new line
50+
- <indentation> as captured earlier
51+
- <control statement> as specified above
52+
- { before the next new line -->
53+
<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"/>
54+
<property name="message" value="missing blank line before block at same indentation level"/>
55+
</module>
56+
57+
<!-- require blank after } in the same indentation level -->
58+
<module name="RegexpMultiline">
59+
<!-- \n<indentation>}\n<same indentation><whatever unless newline, '}' or starting with cas(e) or def(ault)> -->
60+
<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])"/>
61+
<property name="message" value="missing blank line after block at same indentation level"/>
62+
</module>
63+
64+
<module name="TreeWalker">
65+
<!-- Ensure all imports are ship shape -->
66+
<module name="AvoidStarImport"/>
67+
<module name="IllegalImport"/>
68+
<module name="RedundantImport"/>
69+
<module name="UnusedImports"/>
70+
71+
<module name="ImportOrder">
72+
<property name="groups" value="java,javax,*,net.minecraft,net.fabricmc"/>
73+
<property name="ordered" value="false"/><!-- the plugin orders alphabetically without considering separators.. -->
74+
<property name="separated" value="true"/>
75+
<property name="option" value="top"/>
76+
<property name="sortStaticImportsAlphabetically" value="true"/>
77+
</module>
78+
79+
<!-- Ensures braces are at the end of a line -->
80+
<module name="LeftCurly"/>
81+
<module name="RightCurly"/>
82+
83+
<!-- single line statements on one line, -->
84+
<module name="NeedBraces">
85+
<property name="tokens" value="LITERAL_IF,LITERAL_FOR,LITERAL_WHILE"/>
86+
<property name="allowSingleLineStatement" value="true"/>
87+
</module>
88+
<module name="NeedBraces">
89+
<property name="tokens" value="LITERAL_ELSE,LITERAL_DO"/>
90+
<property name="allowSingleLineStatement" value="false"/>
91+
</module>
92+
93+
<module name="EmptyLineSeparator">
94+
<property name="allowNoEmptyLineBetweenFields" value="true"/>
95+
<property name="allowMultipleEmptyLines" value="false"/>
96+
<!-- exclude METHOD_DEF and VARIABLE_DEF -->
97+
<property name="tokens" value="PACKAGE_DEF,IMPORT,STATIC_IMPORT,CLASS_DEF,INTERFACE_DEF,ENUM_DEF,STATIC_INIT,INSTANCE_INIT,CTOR_DEF"/>
98+
</module>
99+
100+
<module name="OperatorWrap"/>
101+
<module name="SeparatorWrap">
102+
<property name="tokens" value="DOT,ELLIPSIS,AT"/>
103+
<property name="option" value="nl"/>
104+
</module>
105+
<module name="SeparatorWrap">
106+
<property name="tokens" value="COMMA,SEMI"/>
107+
<property name="option" value="eol"/>
108+
</module>
109+
110+
<module name="Indentation">
111+
<property name="basicOffset" value="4"/>
112+
<property name="caseIndent" value="0"/>
113+
<property name="throwsIndent" value="4"/>
114+
<property name="arrayInitIndent" value="4"/>
115+
<property name="lineWrappingIndentation" value="8"/>
116+
</module>
117+
118+
<module name="ParenPad"/>
119+
<module name="NoWhitespaceBefore"/>
120+
<module name="NoWhitespaceAfter">
121+
<!-- allow ARRAY_INIT -->
122+
<property name="tokens" value="AT,INC,DEC,UNARY_MINUS,UNARY_PLUS,BNOT,LNOT,DOT,ARRAY_DECLARATOR,INDEX_OP"/>
123+
</module>
124+
<module name="WhitespaceAfter"/>
125+
<module name="WhitespaceAround">
126+
<!-- Allow PLUS, MINUS, MUL, DIV as they may be more readable without spaces in some cases -->
127+
<property name="tokens" 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+
<module name="PackageDeclaration"/>
158+
<module name="PackageName"/>
159+
160+
<!--<module name="InvalidJavadocPosition"/>-->
161+
<module name="JavadocParagraph"/>
162+
<module name="JavadocStyle"/>
163+
<module name="AtclauseOrder">
164+
<property name="tagOrder" value="@param,@return,@throws,@deprecated"/>
165+
</module>
166+
</module>
167+
</module>

src/main/java/net/fabricmc/tinyremapper/AsmClassRemapper.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
import net.fabricmc.tinyremapper.MemberInstance.MemberType;
4747

4848
final class AsmClassRemapper extends VisitTrackingClassRemapper {
49-
public AsmClassRemapper(ClassVisitor cv, AsmRemapper remapper, boolean rebuildSourceFilenames, boolean checkPackageAccess, boolean skipLocalMapping, boolean renameInvalidLocals) {
49+
AsmClassRemapper(ClassVisitor cv, AsmRemapper remapper, boolean rebuildSourceFilenames, boolean checkPackageAccess, boolean skipLocalMapping, boolean renameInvalidLocals) {
5050
super(cv, remapper);
5151

5252
this.rebuildSourceFilenames = rebuildSourceFilenames;
@@ -137,7 +137,7 @@ public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, Str
137137
}
138138

139139
public static AnnotationRemapper createAsmAnnotationRemapper(String desc, AnnotationVisitor annotationVisitor, Remapper remapper) {
140-
return annotationVisitor == null ? null : new AsmAnnotationRemapper(annotationVisitor, remapper, desc);
140+
return annotationVisitor == null ? null : new AsmAnnotationRemapper(desc, annotationVisitor, remapper, desc);
141141
}
142142

143143
@Override
@@ -162,7 +162,7 @@ protected void onVisit(VisitKind kind) {
162162
private MethodNode methodNode;
163163

164164
private static class AsmFieldRemapper extends FieldRemapper {
165-
public AsmFieldRemapper(FieldVisitor fieldVisitor, Remapper remapper) {
165+
AsmFieldRemapper(FieldVisitor fieldVisitor, Remapper remapper) {
166166
super(fieldVisitor, remapper);
167167
}
168168

@@ -178,7 +178,7 @@ public AnnotationVisitor visitTypeAnnotation(int typeRef, TypePath typePath, Str
178178
}
179179

180180
private static class AsmMethodRemapper extends MethodRemapper {
181-
public AsmMethodRemapper(MethodVisitor methodVisitor, Remapper remapper, String owner, MethodNode methodNode, boolean checkPackageAccess, boolean skipLocalMapping, boolean renameInvalidLocals) {
181+
AsmMethodRemapper(MethodVisitor methodVisitor, Remapper remapper, String owner, MethodNode methodNode, boolean checkPackageAccess, boolean skipLocalMapping, boolean renameInvalidLocals) {
182182
super(methodNode != null ? methodNode : methodVisitor, remapper);
183183

184184
this.owner = owner;
@@ -277,8 +277,8 @@ public void visitInvokeDynamicInsn(String name, String descriptor, Handle bootst
277277
bootstrapMethodArguments[i] = remapper.mapValue(bootstrapMethodArguments[i]);
278278
}
279279

280-
mv.visitInvokeDynamicInsn( // bypass remapper
281-
name,
280+
// bypass remapper
281+
mv.visitInvokeDynamicInsn(name,
282282
remapper.mapMethodDesc(descriptor), (Handle) remapper.mapValue(bootstrapMethodHandle),
283283
bootstrapMethodArguments);
284284
}
@@ -613,9 +613,10 @@ private String getNameFromType(String type, boolean isArg) {
613613
* other variable which already has that name, e.g.:
614614
* (MyClass ?, MyClass2 ?, MyClass ?) -> (MyClass myClass, MyClass2 myClass2, !myClass2 is already taken!)
615615
*/
616-
for (;nameCounts.putIfAbsent(varName, 1) != null; count++) {
617-
varName = baseVarName + Integer.toString(count);
616+
while (nameCounts.putIfAbsent(varName, 1) != null) {
617+
varName = baseVarName + Integer.toString(count++);
618618
}
619+
619620
nameCounts.put(baseVarName, count); // update name count
620621

621622
return varName;
@@ -685,8 +686,8 @@ private static boolean isJavaKeyword(String s) {
685686
}
686687

687688
private static class AsmAnnotationRemapper extends AnnotationRemapper {
688-
public AsmAnnotationRemapper(AnnotationVisitor annotationVisitor, Remapper remapper, String annotationDesc) {
689-
super(annotationVisitor, remapper);
689+
AsmAnnotationRemapper(String descriptor, AnnotationVisitor annotationVisitor, Remapper remapper, String annotationDesc) {
690+
super(descriptor, annotationVisitor, remapper);
690691

691692
annotationClass = Type.getType(annotationDesc).getInternalName();
692693
}

src/main/java/net/fabricmc/tinyremapper/AsmRemapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import net.fabricmc.tinyremapper.TinyRemapper.LinkedMethodPropagation;
2525

2626
class AsmRemapper extends Remapper {
27-
public AsmRemapper(TinyRemapper remapper) {
27+
AsmRemapper(TinyRemapper remapper) {
2828
this.remapper = remapper;
2929
}
3030

src/main/java/net/fabricmc/tinyremapper/ClassInstance.java

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,9 @@ public String getName() {
133133
return name;
134134
}
135135

136-
public int getMrjVersion() { return mrjVersion; }
136+
public int getMrjVersion() {
137+
return mrjVersion;
138+
}
137139

138140
public String getSuperName() {
139141
return superName;
@@ -151,7 +153,9 @@ public boolean isPublicOrPrivate() {
151153
return (access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PRIVATE)) != 0;
152154
}
153155

154-
public boolean isMrjCopy() { return mrjOrigin != this; }
156+
public boolean isMrjCopy() {
157+
return mrjOrigin != this;
158+
}
155159

156160
public String[] getInterfaces() {
157161
return interfaces;
@@ -165,7 +169,9 @@ public MemberInstance getMember(MemberType type, String id) {
165169
return members.get(id);
166170
}
167171

168-
public ClassInstance getMrjOrigin() { return mrjOrigin; }
172+
public ClassInstance getMrjOrigin() {
173+
return mrjOrigin;
174+
}
169175

170176
/**
171177
* Rename the member src to dst and continue propagating in dir.
@@ -589,8 +595,11 @@ ClassInstance constructMrjCopy() {
589595
// isInput should be false, since the MRJ copy should not be emitted
590596
ClassInstance copy = new ClassInstance(context, false, inputTags, srcPath, data);
591597
copy.init(name, mrjVersion, superName, access, interfaces);
592-
members.values().forEach(member ->
593-
copy.addMember(new MemberInstance(member.type, copy, member.name, member.desc, member.access)));
598+
599+
for (MemberInstance member : members.values()) {
600+
copy.addMember(new MemberInstance(member.type, copy, member.name, member.desc, member.access));
601+
}
602+
594603
// set the origin
595604
copy.mrjOrigin = mrjOrigin;
596605
return copy;
@@ -631,4 +640,4 @@ public static String getMrjName(String clsName, int mrjVersion) {
631640
private String superName;
632641
private int access;
633642
private String[] interfaces;
634-
}
643+
}

src/main/java/net/fabricmc/tinyremapper/FileSystemHandler.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ public static synchronized FileSystem open(URI uri) throws IOException {
3939

4040
try {
4141
ret = FileSystems.getFileSystem(uri);
42-
} catch (FileSystemNotFoundException e) { }
42+
} catch (FileSystemNotFoundException e) {
43+
// ignore
44+
}
4345

4446
boolean opened;
4547

@@ -73,7 +75,7 @@ public static synchronized void close(FileSystem fs) throws IOException {
7375
}
7476

7577
private static class RefData {
76-
public RefData(boolean opened, int refs) {
78+
RefData(boolean opened, int refs) {
7779
this.opened = opened;
7880
this.refs = refs;
7981
}

src/main/java/net/fabricmc/tinyremapper/IMappingProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public interface MappingAcceptor {
2929
void acceptField(Member field, String dstName);
3030
}
3131

32-
public final class Member {
32+
final class Member {
3333
public Member(String owner, String name, String desc) {
3434
this.owner = owner;
3535
this.name = name;

0 commit comments

Comments
 (0)