*/
public final class JadxDecompiler {
private static final Logger LOG = LoggerFactory.getLogger(JadxDecompiler.class);
diff --git a/jadx-core/src/main/java/jadx/api/ResourcesLoader.java b/jadx-core/src/main/java/jadx/api/ResourcesLoader.java
index d93fe5413..4c280119c 100644
--- a/jadx-core/src/main/java/jadx/api/ResourcesLoader.java
+++ b/jadx-core/src/main/java/jadx/api/ResourcesLoader.java
@@ -90,7 +90,7 @@ public final class ResourcesLoader {
}
private static ResContainer loadContent(JadxDecompiler jadxRef, ResourceFile rf,
- InputStream inputStream) throws IOException {
+ InputStream inputStream) throws IOException {
switch (rf.getType()) {
case MANIFEST:
case XML:
diff --git a/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java b/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java
index 3b772a6a9..230822fe0 100644
--- a/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java
+++ b/jadx-core/src/main/java/jadx/core/clsp/ClsSet.java
@@ -49,7 +49,9 @@ public class ClsSet {
private static final NClass[] EMPTY_NCLASS_ARRAY = new NClass[0];
- private enum ARG_TYPE {WILDCARD, GENERIC, GENERIC_TYPE, OBJECT, ARRAY, PRIMITIVE}
+ private enum TypeEnum {
+ WILDCARD, GENERIC, GENERIC_TYPE, OBJECT, ARRAY, PRIMITIVE
+ }
private NClass[] classes;
@@ -97,12 +99,9 @@ public class ClsSet {
List args = new ArrayList<>();
boolean genericArg = false;
- for (RegisterArg r: m.getArguments(false)) {
+ for (RegisterArg r : m.getArguments(false)) {
ArgType argType = r.getType();
- if (argType.isGeneric()) {
- args.add(argType);
- genericArg = true;
- } else if (argType.isGenericType()) {
+ if (argType.isGeneric() || argType.isGenericType()) {
args.add(argType);
genericArg = true;
} else {
@@ -121,8 +120,8 @@ public class ClsSet {
methods.add(new NMethod(
m.getMethodInfo().getShortId(),
args.isEmpty()
- ? new ArgType[0]
- : args.toArray(new ArgType[args.size()]),
+ ? new ArgType[0]
+ : args.toArray(new ArgType[args.size()]),
retType,
varArgs));
}
@@ -229,7 +228,7 @@ public class ClsSet {
out.writeByte(argCount);
// last argument first
- for (int i = argTypes.length - 1; i >=0 ; i--) {
+ for (int i = argTypes.length - 1; i >= 0; i--) {
ArgType argType = argTypes[i];
if (argType != null) {
out.writeByte(i);
@@ -249,14 +248,14 @@ public class ClsSet {
private static void writeArgType(DataOutputStream out, ArgType argType, Map names) throws IOException {
if (argType.getWildcardType() != null) {
- out.writeByte(ARG_TYPE.WILDCARD.ordinal());
+ out.writeByte(TypeEnum.WILDCARD.ordinal());
int bounds = argType.getWildcardBounds();
out.writeByte(bounds);
if (bounds != 0) {
writeArgType(out, argType.getWildcardType(), names);
}
} else if (argType.isGeneric()) {
- out.writeByte(ARG_TYPE.GENERIC.ordinal());
+ out.writeByte(TypeEnum.GENERIC.ordinal());
out.writeInt(names.get(argType.getObject()).getId());
ArgType[] types = argType.getGenericTypes();
if (types == null) {
@@ -268,16 +267,16 @@ public class ClsSet {
}
}
} else if (argType.isGenericType()) {
- out.writeByte(ARG_TYPE.GENERIC_TYPE.ordinal());
+ out.writeByte(TypeEnum.GENERIC_TYPE.ordinal());
writeString(out, argType.getObject());
} else if (argType.isObject()) {
- out.writeByte(ARG_TYPE.OBJECT.ordinal());
+ out.writeByte(TypeEnum.OBJECT.ordinal());
out.writeInt(names.get(argType.getObject()).getId());
} else if (argType.isArray()) {
- out.writeByte(ARG_TYPE.ARRAY.ordinal());
+ out.writeByte(TypeEnum.ARRAY.ordinal());
writeArgType(out, argType.getArrayElement(), names);
} else if (argType.isPrimitive()) {
- out.writeByte(ARG_TYPE.PRIMITIVE.ordinal());
+ out.writeByte(TypeEnum.PRIMITIVE.ordinal());
out.writeByte(argType.getPrimitiveType().getShortName().charAt(0));
} else {
throw new JadxRuntimeException("Cannot save type: " + argType);
@@ -367,7 +366,7 @@ public class ClsSet {
private ArgType readArgType(DataInputStream in) throws IOException {
int ordinal = in.readByte();
- switch(ARG_TYPE.values()[ordinal]) {
+ switch (TypeEnum.values()[ordinal]) {
case WILDCARD:
int bounds = in.readByte();
return bounds == 0
@@ -394,25 +393,25 @@ public class ClsSet {
return ArgType.array(readArgType(in));
case PRIMITIVE:
int shortName = in.readByte();
- switch(shortName) {
- case 'Z':
- return ArgType.BOOLEAN;
- case 'C':
- return ArgType.CHAR;
- case 'B':
- return ArgType.BYTE;
- case 'S':
- return ArgType.SHORT;
- case 'I':
- return ArgType.INT;
- case 'F':
- return ArgType.FLOAT;
- case 'J':
- return ArgType.LONG;
- case 'D':
- return ArgType.DOUBLE;
- default:
- return ArgType.VOID;
+ switch (shortName) {
+ case 'Z':
+ return ArgType.BOOLEAN;
+ case 'C':
+ return ArgType.CHAR;
+ case 'B':
+ return ArgType.BYTE;
+ case 'S':
+ return ArgType.SHORT;
+ case 'I':
+ return ArgType.INT;
+ case 'F':
+ return ArgType.FLOAT;
+ case 'J':
+ return ArgType.LONG;
+ case 'D':
+ return ArgType.DOUBLE;
+ default:
+ return ArgType.VOID;
}
default:
throw new JadxRuntimeException("Unsupported Arg Type: " + ordinal);
diff --git a/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java b/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java
index e7bb32d33..9a582f6eb 100644
--- a/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java
+++ b/jadx-core/src/main/java/jadx/core/codegen/AnnotationGen.java
@@ -84,7 +84,7 @@ public class AnnotationGen {
Map vl = a.getValues();
if (!vl.isEmpty()) {
code.add('(');
- for (Iterator> it = vl.entrySet().iterator(); it.hasNext(); ) {
+ for (Iterator> it = vl.entrySet().iterator(); it.hasNext();) {
Entry e = it.next();
String paramName = getParamName(annCls, e.getKey());
if (paramName.equals("value") && vl.size() == 1) {
@@ -119,7 +119,7 @@ public class AnnotationGen {
if (an != null) {
Object exs = an.getDefaultValue();
code.add(" throws ");
- for (Iterator it = ((List) exs).iterator(); it.hasNext(); ) {
+ for (Iterator it = ((List) exs).iterator(); it.hasNext();) {
ArgType ex = it.next();
classGen.useType(code, ex);
if (it.hasNext()) {
diff --git a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java
index 46043879d..e380fe2a2 100644
--- a/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java
+++ b/jadx-core/src/main/java/jadx/core/codegen/ClassGen.java
@@ -162,7 +162,7 @@ public class ClassGen {
} else {
clsCode.add("implements ");
}
- for (Iterator it = cls.getInterfaces().iterator(); it.hasNext(); ) {
+ for (Iterator it = cls.getInterfaces().iterator(); it.hasNext();) {
ArgType interf = it.next();
useClass(clsCode, interf);
if (it.hasNext()) {
@@ -194,7 +194,7 @@ public class ClassGen {
}
if (list != null && !list.isEmpty()) {
code.add(" extends ");
- for (Iterator it = list.iterator(); it.hasNext(); ) {
+ for (Iterator it = list.iterator(); it.hasNext();) {
ArgType g = it.next();
if (g.isGenericType()) {
code.add(g.getObject());
@@ -345,7 +345,7 @@ public class ClassGen {
List warns = node.getAll(AType.JADX_WARN);
if (!warns.isEmpty()) {
warns.stream().distinct().sorted()
- .forEach(warn -> code.startLine("/* JADX WARNING: ").addMultiLine(warn).add(" */"));
+ .forEach(warn -> code.startLine("/* JADX WARNING: ").addMultiLine(warn).add(" */"));
}
}
@@ -399,7 +399,7 @@ public class ClassGen {
return;
}
InsnGen igen = null;
- for (Iterator it = enumFields.getFields().iterator(); it.hasNext(); ) {
+ for (Iterator it = enumFields.getFields().iterator(); it.hasNext();) {
EnumField f = it.next();
code.startLine(f.getField().getAlias());
ConstructorInsn constrInsn = f.getConstrInsn();
diff --git a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
index 28ef6503c..9311c911c 100644
--- a/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
+++ b/jadx-core/src/main/java/jadx/core/codegen/InsnGen.java
@@ -1,7 +1,5 @@
package jadx.core.codegen;
-import static jadx.core.utils.android.AndroidResourcesUtils.handleAppResField;
-
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.Iterator;
@@ -56,6 +54,8 @@ import jadx.core.utils.RegionUtils;
import jadx.core.utils.exceptions.CodegenException;
import jadx.core.utils.exceptions.JadxRuntimeException;
+import static jadx.core.utils.android.AndroidResourcesUtils.handleAppResField;
+
public class InsnGen {
private static final Logger LOG = LoggerFactory.getLogger(InsnGen.class);
@@ -234,8 +234,8 @@ public class InsnGen {
code.add(';');
}
}
- } catch (Exception th) {
- throw new CodegenException(mth, "Error generate insn: " + insn, th);
+ } catch (Exception e) {
+ throw new CodegenException(mth, "Error generate insn: " + insn, e);
}
}
@@ -416,7 +416,7 @@ public class InsnGen {
if (wrap) {
code.add('(');
}
- for (Iterator it = insn.getArguments().iterator(); it.hasNext(); ) {
+ for (Iterator it = insn.getArguments().iterator(); it.hasNext();) {
addArg(code, it.next());
if (it.hasNext()) {
code.add(" + ");
@@ -701,7 +701,7 @@ public class InsnGen {
}
void generateMethodArguments(CodeWriter code, InsnNode insn, int startArgNum,
- @Nullable MethodNode callMth) throws CodegenException {
+ @Nullable MethodNode callMth) throws CodegenException {
int k = startArgNum;
if (callMth != null && callMth.contains(AFlag.SKIP_FIRST_ARG)) {
k++;
diff --git a/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
index 2625591be..f9a14c5b8 100644
--- a/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
+++ b/jadx-core/src/main/java/jadx/core/codegen/MethodGen.java
@@ -3,10 +3,11 @@ package jadx.core.codegen;
import java.util.Iterator;
import java.util.List;
-import com.android.dx.rop.code.AccessFlags;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.android.dx.rop.code.AccessFlags;
+
import jadx.core.Consts;
import jadx.core.dex.attributes.AFlag;
import jadx.core.dex.attributes.AType;
diff --git a/jadx-core/src/main/java/jadx/core/codegen/NameGen.java b/jadx-core/src/main/java/jadx/core/codegen/NameGen.java
index 80574edce..a2da72f7b 100644
--- a/jadx-core/src/main/java/jadx/core/codegen/NameGen.java
+++ b/jadx-core/src/main/java/jadx/core/codegen/NameGen.java
@@ -50,8 +50,7 @@ public class NameGen {
"java.lang.Long", "l",
"java.lang.Double", "d",
"java.lang.StringBuilder", "sb",
- "java.lang.Exception", "exc"
- );
+ "java.lang.Exception", "exc");
}
public NameGen(MethodNode mth, boolean fallback) {
diff --git a/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java b/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java
index 13fccdbb7..8bcc3251b 100644
--- a/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java
+++ b/jadx-core/src/main/java/jadx/core/deobf/DeobfPresets.java
@@ -1,7 +1,5 @@
package jadx.core.deobf;
-import static java.nio.charset.StandardCharsets.UTF_8;
-
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
@@ -19,6 +17,8 @@ import jadx.core.dex.info.ClassInfo;
import jadx.core.dex.info.FieldInfo;
import jadx.core.dex.info.MethodInfo;
+import static java.nio.charset.StandardCharsets.UTF_8;
+
class DeobfPresets {
private static final Logger LOG = LoggerFactory.getLogger(DeobfPresets.class);
diff --git a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java
index b01bae568..210f0b40d 100644
--- a/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java
+++ b/jadx-core/src/main/java/jadx/core/deobf/Deobfuscator.java
@@ -287,7 +287,8 @@ public class Deobfuscator {
*
* @param fullPkgName full package name
* @param create if {@code true} then will create all absent objects
- * @return package node object or {@code null} if no package found and create set to {@code false}
+ * @return package node object or {@code null} if no package found and create set to
+ * {@code false}
*/
private PackageNode getPackageNode(String fullPkgName, boolean create) {
if (fullPkgName.isEmpty() || fullPkgName.equals(CLASS_NAME_SEPARATOR)) {
diff --git a/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java
index 021ca9655..20cf57389 100644
--- a/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java
+++ b/jadx-core/src/main/java/jadx/core/deobf/NameMapper.java
@@ -69,9 +69,7 @@ public class NameMapper {
"try",
"void",
"volatile",
- "while"
- )
- );
+ "while"));
public static boolean isReserved(String str) {
return RESERVED_NAMES.contains(str);
@@ -113,15 +111,19 @@ public class NameMapper {
/**
* Return modified string with removed:
- *
- *
not printable chars (including unicode)
- *
chars not valid for java identifier part
- *
+ *
+ *
+ *
not printable chars (including unicode)
+ *
chars not valid for java identifier part
+ *
+ *
* Note: this 'middle' method must be used with prefixed string:
- *
- *
can leave invalid chars for java identifier start (i.e numbers)
- *
result not checked for reserved words
- *
+ *
+ *
+ *
can leave invalid chars for java identifier start (i.e numbers)
+ *
result not checked for reserved words
+ *
+ *
*/
public static String removeInvalidCharsMiddle(String name) {
if (isValidIdentifier(name)) {
diff --git a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java
index 9d1b8cffa..3c8f4cb86 100644
--- a/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java
+++ b/jadx-core/src/main/java/jadx/core/dex/info/ClassInfo.java
@@ -106,6 +106,7 @@ public final class ClassInfo implements Comparable {
this.alias = newAlias;
}
}
+
public boolean isRenamed() {
return alias != this;
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java b/jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java
index 476ed9a1d..eb5e49f2c 100644
--- a/jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java
+++ b/jadx-core/src/main/java/jadx/core/dex/instructions/InsnDecoder.java
@@ -120,14 +120,13 @@ public class InsnDecoder {
constStrInsn.setResult(InsnArg.reg(insn, 0, ArgType.STRING));
return constStrInsn;
- case Opcodes.CONST_CLASS:
- {
+ case Opcodes.CONST_CLASS: {
ArgType clsType = dex.getType(insn.getIndex());
InsnNode constClsInsn = new ConstClassNode(clsType);
constClsInsn.setResult(
InsnArg.reg(insn, 0, ArgType.generic(Consts.CLASS_CLASS, clsType)));
return constClsInsn;
- }
+ }
case Opcodes.MOVE:
case Opcodes.MOVE_16:
diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java
index dc11143d9..228a7532e 100644
--- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java
+++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/ArgType.java
@@ -233,9 +233,9 @@ public abstract class ArgType {
/**
* Return wildcard bounds:
*
- *
1 for upper bound (? extends A)
- *
0 no bounds (?)
- *
-1 for lower bound (? super A)
+ *
1 for upper bound (? extends A)
+ *
0 no bounds (?)
+ *
-1 for lower bound (? super A)
*
*/
@Override
@@ -306,7 +306,7 @@ public abstract class ArgType {
}
private static final class ArrayArg extends KnownType {
- private static final PrimitiveType[] ARRAY_POSSIBLES = new PrimitiveType[]{PrimitiveType.ARRAY};
+ private static final PrimitiveType[] ARRAY_POSSIBLES = new PrimitiveType[] { PrimitiveType.ARRAY };
private final ArgType arrayElement;
public ArrayArg(ArgType arrayElement) {
diff --git a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java
index 7daa6926e..3e578d530 100644
--- a/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java
+++ b/jadx-core/src/main/java/jadx/core/dex/instructions/args/InsnArg.java
@@ -3,11 +3,12 @@ package jadx.core.dex.instructions.args;
import java.util.ArrayList;
import java.util.List;
-import com.android.dx.io.instructions.DecodedInstruction;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.android.dx.io.instructions.DecodedInstruction;
+
import jadx.core.dex.attributes.AFlag;
import jadx.core.dex.nodes.InsnNode;
import jadx.core.utils.InsnUtils;
diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java
index 3ea936271..bc54922d5 100644
--- a/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java
+++ b/jadx-core/src/main/java/jadx/core/dex/nodes/ClassNode.java
@@ -1,7 +1,5 @@
package jadx.core.dex.nodes;
-import static jadx.core.dex.nodes.ProcessState.UNLOADED;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -38,6 +36,8 @@ import jadx.core.dex.nodes.parser.StaticValuesParser;
import jadx.core.utils.exceptions.DecodeException;
import jadx.core.utils.exceptions.JadxRuntimeException;
+import static jadx.core.dex.nodes.ProcessState.UNLOADED;
+
public class ClassNode extends LineAttrNode implements ILoadable, ICodeNode {
private static final Logger LOG = LoggerFactory.getLogger(ClassNode.class);
@@ -355,7 +355,8 @@ public class ClassNode extends LineAttrNode implements ILoadable, ICodeNode {
/**
* Return first method by original short name
- * Note: methods are not unique by name (class can have several methods with same name but different signature)
+ * Note: methods are not unique by name (class can have several methods with same name but different
+ * signature)
*/
@Nullable
public MethodNode searchMethodByShortName(String name) {
diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java
index cb64ad581..3113570b1 100644
--- a/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java
+++ b/jadx-core/src/main/java/jadx/core/dex/nodes/DexNode.java
@@ -7,6 +7,9 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
import com.android.dex.ClassData;
import com.android.dex.ClassData.Method;
import com.android.dex.ClassDef;
@@ -17,8 +20,6 @@ import com.android.dex.FieldId;
import com.android.dex.MethodId;
import com.android.dex.ProtoId;
import com.android.dex.TypeList;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import jadx.core.dex.info.ClassInfo;
import jadx.core.dex.info.FieldInfo;
diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/IDexNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/IDexNode.java
index 762525db0..7e7dee5a5 100644
--- a/jadx-core/src/main/java/jadx/core/dex/nodes/IDexNode.java
+++ b/jadx-core/src/main/java/jadx/core/dex/nodes/IDexNode.java
@@ -8,4 +8,3 @@ public interface IDexNode {
RootNode root();
}
-
diff --git a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java
index dcfb1a759..e774c17cc 100644
--- a/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java
+++ b/jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java
@@ -7,15 +7,16 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import com.android.dex.ClassData.Method;
-import com.android.dex.Code;
-import com.android.dex.Code.CatchHandler;
-import com.android.dex.Code.Try;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.android.dex.ClassData.Method;
+import com.android.dex.Code;
+import com.android.dex.Code.CatchHandler;
+import com.android.dex.Code.Try;
+
import jadx.core.dex.attributes.AFlag;
import jadx.core.dex.attributes.AType;
import jadx.core.dex.attributes.nodes.JumpInfo;
@@ -154,7 +155,7 @@ public class MethodNode extends LineAttrNode implements ILoadable, ICodeNode {
for (RegisterArg arg : list) {
if (arg.getRegNum() >= regsCount) {
throw new JadxRuntimeException("Incorrect register number in instruction: " + insnNode
- + ", expected to be less than " + regsCount);
+ + ", expected to be less than " + regsCount);
}
}
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java
index ff859114e..0293a4a21 100644
--- a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java
+++ b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfCondition.java
@@ -234,26 +234,25 @@ public final class IfCondition {
if (arithOp == ArithOp.OR || arithOp == ArithOp.AND) {
IfOp ifOp = c.getInsn().getOp();
boolean isTrue = ifOp == IfOp.NE && lit == 0
- || ifOp == IfOp.EQ && lit == 1;
+ || ifOp == IfOp.EQ && lit == 1;
IfOp op = isTrue ? IfOp.NE : IfOp.EQ;
- Mode mode = isTrue && arithOp == ArithOp.OR ||
- !isTrue && arithOp == ArithOp.AND ? Mode.OR : Mode.AND;
+ Mode mode = isTrue && arithOp == ArithOp.OR
+ || !isTrue && arithOp == ArithOp.AND ? Mode.OR : Mode.AND;
IfNode if1 = new IfNode(op, -1, wrapInsn.getArg(0), LiteralArg.FALSE);
IfNode if2 = new IfNode(op, -1, wrapInsn.getArg(1), LiteralArg.FALSE);
return new IfCondition(mode,
- Arrays.asList(new IfCondition(new Compare(if1)),
- new IfCondition(new Compare(if2))));
+ Arrays.asList(new IfCondition(new Compare(if1)),
+ new IfCondition(new Compare(if2))));
}
}
- break;
+ break;
- default:
- break;
+ default:
+ break;
}
-
return null;
}
@@ -300,7 +299,7 @@ public final class IfCondition {
String op = mode == Mode.OR ? " || " : " && ";
StringBuilder sb = new StringBuilder();
sb.append('(');
- for (Iterator it = args.iterator(); it.hasNext(); ) {
+ for (Iterator it = args.iterator(); it.hasNext();) {
IfCondition arg = it.next();
sb.append(arg);
if (it.hasNext()) {
@@ -326,7 +325,7 @@ public final class IfCondition {
return false;
}
return Objects.equals(args, other.args)
- && Objects.equals(compare, other.compare);
+ && Objects.equals(compare, other.compare);
}
@Override
diff --git a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfInfo.java b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfInfo.java
index aef5c7a5c..b7df8e494 100644
--- a/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfInfo.java
+++ b/jadx-core/src/main/java/jadx/core/dex/regions/conditions/IfInfo.java
@@ -24,7 +24,7 @@ public final class IfInfo {
}
private IfInfo(IfCondition condition, BlockNode thenBlock, BlockNode elseBlock,
- Set mergedBlocks, Set skipBlocks) {
+ Set mergedBlocks, Set skipBlocks) {
this.condition = condition;
this.thenBlock = thenBlock;
this.elseBlock = elseBlock;
diff --git a/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java
index aa8106a5e..4da8cc396 100644
--- a/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java
+++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/ExceptionHandler.java
@@ -147,14 +147,14 @@ public class ExceptionHandler {
return false;
}
ExceptionHandler that = (ExceptionHandler) o;
- return handleOffset == that.handleOffset &&
- catchTypes.equals(that.catchTypes) &&
- Objects.equals(tryBlock, that.tryBlock);
+ return handleOffset == that.handleOffset
+ && catchTypes.equals(that.catchTypes)
+ && Objects.equals(tryBlock, that.tryBlock);
}
@Override
public int hashCode() {
- return Objects.hash(catchTypes, handleOffset /*, tryBlock*/);
+ return Objects.hash(catchTypes, handleOffset /* , tryBlock */);
}
public String catchTypeStr() {
diff --git a/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java b/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java
index 82405e7cc..65ed41b3b 100644
--- a/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java
+++ b/jadx-core/src/main/java/jadx/core/dex/trycatch/TryCatchBlock.java
@@ -53,7 +53,7 @@ public class TryCatchBlock {
}
public void removeHandler(MethodNode mth, ExceptionHandler handler) {
- for (Iterator it = handlers.iterator(); it.hasNext(); ) {
+ for (Iterator it = handlers.iterator(); it.hasNext();) {
ExceptionHandler h = it.next();
if (h == handler) {
unbindHandler(h);
@@ -85,7 +85,7 @@ public class TryCatchBlock {
private void removeWholeBlock(MethodNode mth) {
// self destruction
- for (Iterator it = handlers.iterator(); it.hasNext(); ) {
+ for (Iterator it = handlers.iterator(); it.hasNext();) {
ExceptionHandler h = it.next();
unbindHandler(h);
it.remove();
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java
index 821668b9f..1b935600c 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/AbstractVisitor.java
@@ -5,7 +5,7 @@ import jadx.core.dex.nodes.MethodNode;
import jadx.core.dex.nodes.RootNode;
import jadx.core.utils.exceptions.JadxException;
-public class AbstractVisitor implements IDexTreeVisitor {
+public abstract class AbstractVisitor implements IDexTreeVisitor {
@Override
public void init(RootNode root) throws JadxException {
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java
index b7a553560..d1f9b521b 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/EnumVisitor.java
@@ -34,7 +34,7 @@ import jadx.core.utils.exceptions.JadxException;
@JadxVisitor(
name = "EnumVisitor",
desc = "Restore enum classes",
- runAfter = {CodeShrinkVisitor.class, ModVisitor.class}
+ runAfter = { CodeShrinkVisitor.class, ModVisitor.class }
)
public class EnumVisitor extends AbstractVisitor {
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/MarkFinallyVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/MarkFinallyVisitor.java
index 87742c789..9675736b9 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/MarkFinallyVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/MarkFinallyVisitor.java
@@ -59,8 +59,8 @@ public class MarkFinallyVisitor extends AbstractVisitor {
visitor.init(mth.root());
DepthTraversal.visit(visitor, mth);
}
- } catch (Exception ee) {
- LOG.error("Undo finally extract failed, mth: {}", mth, e);
+ } catch (Exception excInner) {
+ LOG.error("Undo finally extract failed, mth: {}", mth, excInner);
}
}
}
@@ -343,7 +343,7 @@ public class MarkFinallyVisitor extends AbstractVisitor {
return null;
}
// TODO: add additional slices checks
- // and try to extract common part if found difference
+ // and try to extract common part if found difference
} else {
for (InsnNode finallyInsn : finallyInsns) {
finallySlice.addInsn(finallyInsn, finallyBlock);
@@ -369,7 +369,7 @@ public class MarkFinallyVisitor extends AbstractVisitor {
}
private static boolean checkBlocksTree(BlockNode dupBlock, BlockNode finallyBlock,
- InsnsSlice dupSlice, FinallyExtractInfo extractInfo) {
+ InsnsSlice dupSlice, FinallyExtractInfo extractInfo) {
InsnsSlice finallySlice = extractInfo.getFinallyInsnsSlice();
List finallyCS = finallyBlock.getCleanSuccessors();
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java
index ba1cfbd15..7ced9677f 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ModVisitor.java
@@ -1,7 +1,5 @@
package jadx.core.dex.visitors;
-import static jadx.core.utils.BlockUtils.replaceInsn;
-
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
@@ -48,6 +46,8 @@ import jadx.core.utils.InsnRemover;
import jadx.core.utils.InsnUtils;
import jadx.core.utils.exceptions.JadxRuntimeException;
+import static jadx.core.utils.BlockUtils.replaceInsn;
+
/**
* Visitor for modify method instructions
* (remove, replace, process exception handlers)
@@ -168,8 +168,9 @@ public class ModVisitor extends AbstractVisitor {
IfCondition condition = IfCondition.fromIfNode(ifNode);
InsnArg zero = new LiteralArg(0, type);
InsnArg one = new LiteralArg(
- type == ArgType.DOUBLE ? Double.doubleToLongBits(1) :
- type == ArgType.FLOAT ? Float.floatToIntBits(1) : 1, type);
+ type == ArgType.DOUBLE ? Double.doubleToLongBits(1)
+ : type == ArgType.FLOAT ? Float.floatToIntBits(1) : 1,
+ type);
TernaryInsn ternary = new TernaryInsn(condition, insn.getResult(), one, zero);
replaceInsn(block, i, ternary);
}
@@ -325,8 +326,7 @@ public class ModVisitor extends AbstractVisitor {
if (!elType.equals(insnElementType) && !insnArrayType.equals(ArgType.OBJECT)) {
ErrorsCounter.methodWarn(mth,
"Incorrect type for fill-array insn " + InsnUtils.formatOffset(insn.getOffset())
- + ", element type: " + elType + ", insn element type: " + insnElementType
- );
+ + ", element type: " + elType + ", insn element type: " + insnElementType);
}
if (!elType.isTypeKnown()) {
LOG.warn("Unknown array element type: {} in mth: {}", elType, mth);
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java b/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java
index bf8e2ce9a..c1e9dd698 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/PrepareForCodeGen.java
@@ -29,7 +29,7 @@ import jadx.core.utils.exceptions.JadxException;
@JadxVisitor(
name = "PrepareForCodeGen",
desc = "Prepare instructions for code generation pass",
- runAfter = {CodeShrinkVisitor.class, ClassModifier.class, ProcessVariables.class}
+ runAfter = { CodeShrinkVisitor.class, ClassModifier.class, ProcessVariables.class }
)
public class PrepareForCodeGen extends AbstractVisitor {
@@ -70,8 +70,7 @@ public class PrepareForCodeGen extends AbstractVisitor {
break;
case MOVE:
- // remove redundant moves:
- // unused result and same args names (a = a;)
+ // remove redundant moves: unused result and same args names (a = a;)
RegisterArg result = insn.getResult();
if (result.getSVar().getUseCount() == 0
&& result.isNameEquals(insn.getArg(0))) {
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java
index e080556d9..9161fd082 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ReSugarCode.java
@@ -32,8 +32,8 @@ import jadx.core.dex.nodes.InsnNode;
import jadx.core.dex.nodes.MethodNode;
import jadx.core.dex.visitors.shrink.CodeShrinkVisitor;
import jadx.core.utils.InsnList;
-import jadx.core.utils.InsnUtils;
import jadx.core.utils.InsnRemover;
+import jadx.core.utils.InsnUtils;
import jadx.core.utils.Utils;
import jadx.core.utils.exceptions.JadxException;
@@ -92,7 +92,7 @@ public class ReSugarCode extends AbstractVisitor {
* Replace new array and sequence of array-put to new filled-array instruction.
*/
private static void processNewArray(MethodNode mth, NewArrayNode newArrayInsn,
- List instructions, InsnRemover remover) {
+ List instructions, InsnRemover remover) {
InsnArg arrLenArg = newArrayInsn.getArg(0);
if (!arrLenArg.isLiteral()) {
return;
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java b/jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java
index 7b04b87ae..001e6e755 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/SaveCode.java
@@ -10,7 +10,8 @@ import jadx.core.utils.exceptions.JadxRuntimeException;
public class SaveCode {
- private SaveCode() {}
+ private SaveCode() {
+ }
public static void save(File dir, JadxArgs args, ClassNode cls) {
if (cls.contains(AFlag.DONT_GENERATE)) {
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java
index e6c7550b8..2eae2f5bf 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/SimplifyVisitor.java
@@ -231,11 +231,8 @@ public class SimplifyVisitor extends AbstractVisitor {
* Simplify chains of calls to StringBuilder#append() plus constructor of StringBuilder.
* Those chains are usually automatically generated by the Java compiler when you create String
* concatenations like "text " + 1 + " text".
- *
- * @param mth
- * @param insn
- * @return
*/
+ @SuppressWarnings("InnerAssignment") // TODO
private static InsnNode convertInvoke(MethodNode mth, InvokeNode insn) {
MethodInfo callMth = insn.getCallMth();
@@ -246,42 +243,42 @@ public class SimplifyVisitor extends AbstractVisitor {
&& insn.getArg(0).isInsnWrap()) {
try {
List chain = flattenInsnChain(insn);
- int constrIndex = -1; //RAF
+ int constrIndex = -1; // RAF
// Case where new StringBuilder() is called with NO args (the entire
// string is created using .append() calls:
if (chain.size() > 1 && chain.get(0).getType() == InsnType.CONSTRUCTOR) {
constrIndex = 0;
} else if (chain.size() > 2 && chain.get(1).getType() == InsnType.CONSTRUCTOR) {
- //RAF Case where the first string element is String arg to the
+ // RAF Case where the first string element is String arg to the
// new StringBuilder("xxx") constructor
constrIndex = 1;
} else if (chain.size() > 3 && chain.get(2).getType() == InsnType.CONSTRUCTOR) {
- //RAF Case where the first string element is String.valueOf() arg
+ // RAF Case where the first string element is String.valueOf() arg
// to the new StringBuilder(String.valueOf(zzz)) constructor
constrIndex = 2;
}
- if (constrIndex != -1) { // If we found a CONSTRUCTOR, is it a StringBuilder?
+ if (constrIndex != -1) { // If we found a CONSTRUCTOR, is it a StringBuilder?
ConstructorInsn constr = (ConstructorInsn) chain.get(constrIndex);
if (constr.getClassType().getFullName().equals(Consts.CLASS_STRING_BUILDER)) {
int len = chain.size();
int argInd = 1;
InsnNode concatInsn = new InsnNode(InsnType.STR_CONCAT, len - 1);
InsnNode argInsn;
- if (constrIndex > 0) { // There was an arg to the StringBuilder constr
+ if (constrIndex > 0) { // There was an arg to the StringBuilder constr
InsnWrapArg iwa;
if (constrIndex == 2
&& (argInsn = chain.get(1)).getType() == InsnType.INVOKE
&& ((InvokeNode) argInsn).getCallMth().getName().compareTo("valueOf") == 0) {
// The argument of new StringBuilder() is a String.valueOf(chainElement0)
iwa = (InsnWrapArg) argInsn.getArg(0);
- argInd = 3; // Cause for loop below to skip to after the constructor
+ argInd = 3; // Cause for loop below to skip to after the constructor
} else {
InsnNode firstNode = chain.get(0);
if (firstNode instanceof ConstStringNode) {
ConstStringNode csn = (ConstStringNode) firstNode;
iwa = new InsnWrapArg(csn);
- argInd = 2; // Cause for loop below to skip to after the constructor
+ argInd = 2; // Cause for loop below to skip to after the constructor
} else {
return null;
}
@@ -289,7 +286,7 @@ public class SimplifyVisitor extends AbstractVisitor {
concatInsn.addArg(iwa);
}
- for (; argInd < len; argInd++) { // Add the .append(xxx) arg string to concat
+ for (; argInd < len; argInd++) { // Add the .append(xxx) arg string to concat
InsnNode node = chain.get(argInd);
MethodInfo method = ((CallMthInterface) node).getCallMth();
if (!(node.getArgsCount() < 2 && method.isConstructor() || method.getName().equals("append"))) {
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java
index 0fd3e7d81..810becf46 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/blocksmaker/BlockSplitter.java
@@ -30,13 +30,12 @@ public class BlockSplitter extends AbstractVisitor {
// leave these instructions alone in block node
private static final Set SEPARATE_INSNS = EnumSet.of(
- InsnType.RETURN,
- InsnType.IF,
- InsnType.SWITCH,
- InsnType.MONITOR_ENTER,
- InsnType.MONITOR_EXIT,
- InsnType.THROW
- );
+ InsnType.RETURN,
+ InsnType.IF,
+ InsnType.SWITCH,
+ InsnType.MONITOR_ENTER,
+ InsnType.MONITOR_EXIT,
+ InsnType.THROW);
public static boolean makeSeparate(InsnType insnType) {
return SEPARATE_INSNS.contains(insnType);
@@ -88,8 +87,8 @@ public class BlockSplitter extends AbstractVisitor {
if (prevInsn != null) {
InsnType type = prevInsn.getType();
if (type == InsnType.GOTO
- || type == InsnType.THROW
- || makeSeparate(type)) {
+ || type == InsnType.THROW
+ || makeSeparate(type)) {
if (type == InsnType.RETURN || type == InsnType.THROW) {
mth.addExitBlock(curBlock);
@@ -102,11 +101,11 @@ public class BlockSplitter extends AbstractVisitor {
startNew = true;
} else {
startNew = isSplitByJump(prevInsn, insn)
- || makeSeparate(insn.getType())
- || isDoWhile(blocksMap, curBlock, insn)
- || insn.contains(AType.EXC_HANDLER)
- || prevInsn.contains(AFlag.TRY_LEAVE)
- || prevInsn.getType() == InsnType.MOVE_EXCEPTION;
+ || makeSeparate(insn.getType())
+ || isDoWhile(blocksMap, curBlock, insn)
+ || insn.contains(AType.EXC_HANDLER)
+ || prevInsn.contains(AFlag.TRY_LEAVE)
+ || prevInsn.getType() == InsnType.MOVE_EXCEPTION;
if (startNew) {
curBlock = connectNewBlock(mth, curBlock, insn.getOffset());
}
@@ -154,7 +153,7 @@ public class BlockSplitter extends AbstractVisitor {
* For try/catch make empty (splitter) block for connect handlers
*/
private static BlockNode insertSplitterBlock(MethodNode mth, Map blocksMap,
- BlockNode curBlock, InsnNode insn, boolean startNew) {
+ BlockNode curBlock, InsnNode insn, boolean startNew) {
BlockNode splitterBlock;
if (insn.getOffset() == 0 || startNew) {
splitterBlock = curBlock;
@@ -241,7 +240,7 @@ public class BlockSplitter extends AbstractVisitor {
}
private static void connectExceptionHandlers(BlockNode block, InsnNode insn,
- Map blocksMap) {
+ Map blocksMap) {
CatchAttr catches = insn.get(AType.CATCH_BLOCK);
SplitterBlockAttr spl = block.get(AType.SPLITTER_BLOCK);
if (catches == null || spl == null) {
@@ -329,11 +328,9 @@ public class BlockSplitter extends AbstractVisitor {
}
static boolean removeEmptyDetachedBlocks(MethodNode mth) {
- return mth.getBasicBlocks().removeIf(block ->
- block.getInstructions().isEmpty()
- && block.getPredecessors().isEmpty()
- && block.getSuccessors().isEmpty()
- );
+ return mth.getBasicBlocks().removeIf(block -> block.getInstructions().isEmpty()
+ && block.getPredecessors().isEmpty()
+ && block.getSuccessors().isEmpty());
}
private void removeJumpAttributes(InsnNode[] insnArr) {
@@ -357,7 +354,7 @@ public class BlockSplitter extends AbstractVisitor {
int insnsCount = toRemove.stream().mapToInt(block -> block.getInstructions().size()).sum();
mth.addAttr(AType.COMMENTS, "JADX INFO: unreachable blocks removed: " + toRemove.size()
- + ", instructions: " + insnsCount);
+ + ", instructions: " + insnsCount);
}
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/debuginfo/DebugInfoParser.java b/jadx-core/src/main/java/jadx/core/dex/visitors/debuginfo/DebugInfoParser.java
index f2989bfc7..9e8776e7e 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/debuginfo/DebugInfoParser.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/debuginfo/DebugInfoParser.java
@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import com.android.dex.Dex.Section;
+
import jadx.core.dex.attributes.nodes.SourceFileAttr;
import jadx.core.dex.instructions.args.RegisterArg;
import jadx.core.dex.nodes.DexNode;
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java
index 34cc99d5b..8f8967e61 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/IfRegionVisitor.java
@@ -105,7 +105,7 @@ public class IfRegionVisitor extends AbstractVisitor {
private static void moveReturnToThenBlock(MethodNode mth, IfRegion ifRegion) {
if (!mth.getReturnType().equals(ArgType.VOID)
&& hasSimpleReturnBlock(ifRegion.getElseRegion())
- /*&& insnsCount(ifRegion.getThenRegion()) < 2*/) {
+ /* && insnsCount(ifRegion.getThenRegion()) < 2 */) {
invertIfRegion(ifRegion);
}
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
index c40b38fcc..7cfae5114 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
@@ -43,7 +43,7 @@ import jadx.core.utils.exceptions.JadxOverflowException;
@JadxVisitor(
name = "LoopRegionVisitor",
desc = "Convert 'while' loops to 'for' loops (indexed or for-each)",
- runBefore = {ProcessVariables.class}
+ runBefore = ProcessVariables.class
)
public class LoopRegionVisitor extends AbstractVisitor implements IRegionVisitor {
private static final Logger LOG = LoggerFactory.getLogger(LoopRegionVisitor.class);
@@ -136,7 +136,7 @@ public class LoopRegionVisitor extends AbstractVisitor implements IRegionVisitor
}
private static LoopType checkArrayForEach(MethodNode mth, LoopRegion loopRegion, InsnNode initInsn, InsnNode incrInsn,
- IfCondition condition) {
+ IfCondition condition) {
if (!(incrInsn instanceof ArithNode)) {
return null;
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java
index 03bebcd2b..08765a5ab 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/RegionMaker.java
@@ -512,7 +512,7 @@ public class RegionMaker {
}
private static boolean canInsertContinue(BlockNode pred, List predecessors, BlockNode loopEnd,
- Set loopExitNodes) {
+ Set loopExitNodes) {
if (!pred.contains(AFlag.SYNTHETIC)
|| BlockUtils.checkLastInsnType(pred, InsnType.CONTINUE)) {
return false;
@@ -604,7 +604,7 @@ public class RegionMaker {
* Traverse from monitor-enter thru successors and collect blocks contains monitor-exit
*/
private static void traverseMonitorExits(SynchronizedRegion region, InsnArg arg, BlockNode block, Set exits,
- Set visited) {
+ Set visited) {
visited.add(block);
for (InsnNode insn : block.getInstructions()) {
if (insn.getType() == InsnType.MONITOR_EXIT
@@ -881,7 +881,7 @@ public class RegionMaker {
}
private boolean isBadCasesOrder(Map> blocksMap,
- Map fallThroughCases) {
+ Map fallThroughCases) {
BlockNode nextCaseBlock = null;
for (BlockNode caseBlock : blocksMap.keySet()) {
if (nextCaseBlock != null && !caseBlock.equals(nextCaseBlock)) {
@@ -893,7 +893,7 @@ public class RegionMaker {
}
private Map> reOrderSwitchCases(Map> blocksMap,
- Map fallThroughCases) {
+ Map fallThroughCases) {
List list = new ArrayList<>(blocksMap.size());
list.addAll(blocksMap.keySet());
list.sort((a, b) -> {
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/ProcessVariables.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/ProcessVariables.java
index ccf45bee2..b6b5834bb 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/ProcessVariables.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/ProcessVariables.java
@@ -44,7 +44,7 @@ public class ProcessVariables extends AbstractVisitor {
return;
}
checkCodeVars(mth, codeVars);
- // TODO: reduce code vars by name if debug info applied. Need checks for variable scopes before reduce
+ // TODO: reduce code vars by name if debug info applied (need checks for variable scopes)
// collect all variables usage
CollectUsageRegionVisitor usageCollector = new CollectUsageRegionVisitor();
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/UsePlace.java b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/UsePlace.java
index d76daf960..6c84a8fef 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/UsePlace.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/regions/variables/UsePlace.java
@@ -42,9 +42,6 @@ public class UsePlace {
@Override
public String toString() {
- return "UsePlace{" +
- "region=" + region +
- ", block=" + block +
- '}';
+ return "UsePlace{region=" + region + ", block=" + block + '}';
}
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/shrink/CodeShrinkVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/shrink/CodeShrinkVisitor.java
index 2c80b1b9c..b5d7618a5 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/shrink/CodeShrinkVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/shrink/CodeShrinkVisitor.java
@@ -25,7 +25,7 @@ import jadx.core.utils.exceptions.JadxRuntimeException;
@JadxVisitor(
name = "CodeShrinkVisitor",
desc = "Inline variables for make code smaller",
- runAfter = {ModVisitor.class}
+ runAfter = { ModVisitor.class }
)
public class CodeShrinkVisitor extends AbstractVisitor {
@@ -63,9 +63,9 @@ public class CodeShrinkVisitor extends AbstractVisitor {
ListIterator it = args.listIterator(args.size());
while (it.hasPrevious()) {
RegisterArg arg = it.previous();
-// if (arg.getName() != null) {
-// continue;
-// }
+ // if (arg.getName() != null) {
+ // continue;
+ // }
SSAVar sVar = arg.getSVar();
// allow inline only one use arg
if (sVar == null
@@ -122,7 +122,7 @@ public class CodeShrinkVisitor extends AbstractVisitor {
}
private static boolean canMoveBetweenBlocks(InsnNode assignInsn, BlockNode assignBlock,
- BlockNode useBlock, InsnNode useInsn) {
+ BlockNode useBlock, InsnNode useInsn) {
if (!BlockUtils.isPathExists(assignBlock, useBlock)) {
return false;
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/RenameState.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/RenameState.java
index 3dce9569a..0d084bd87 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/RenameState.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/RenameState.java
@@ -20,8 +20,7 @@ final class RenameState {
mth,
mth.getEnterBlock(),
new SSAVar[regsCount],
- new int[regsCount]
- );
+ new int[regsCount]);
for (RegisterArg arg : mth.getArguments(true)) {
SSAVar ssaVar = state.startVar(arg);
ssaVar.add(AFlag.METHOD_ARGUMENT);
@@ -34,8 +33,7 @@ final class RenameState {
state.mth,
block,
Arrays.copyOf(state.vars, state.vars.length),
- state.versions
- );
+ state.versions);
}
private RenameState(MethodNode mth, BlockNode block, SSAVar[] vars, int[] versions) {
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java b/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
index 2657f7fab..b4ce39fd3 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
@@ -213,7 +213,7 @@ public class SSATransform extends AbstractVisitor {
if (parentInsn != null
&& parentInsn.getResult() != null
&& parentInsn.contains(AFlag.TRY_LEAVE)
- && phi.removeArg(arg) /* TODO: fix registers removing*/) {
+ && phi.removeArg(arg) /* TODO: fix registers removing */) {
argsCount--;
continue;
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeBoundConst.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeBoundConst.java
index ba21455a4..a3fd21209 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeBoundConst.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeBoundConst.java
@@ -10,7 +10,6 @@ public final class TypeBoundConst implements ITypeBound {
private final ArgType type;
private final RegisterArg arg;
-
public TypeBoundConst(BoundEnum bound, ArgType type) {
this(bound, type, null);
}
@@ -45,8 +44,7 @@ public final class TypeBoundConst implements ITypeBound {
return false;
}
TypeBoundConst that = (TypeBoundConst) o;
- return bound == that.bound &&
- Objects.equals(type, that.type);
+ return bound == that.bound && Objects.equals(type, that.type);
}
@Override
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeCompare.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeCompare.java
index 228ef2d2a..79e2445db 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeCompare.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeCompare.java
@@ -59,7 +59,7 @@ public class TypeCompare {
// both arrays
return compareTypes(first.getArrayElement(), second.getArrayElement());
}
- if (!firstKnown /*&& !secondKnown*/) {
+ if (!firstKnown /* && !secondKnown */) {
int variantLen = Integer.compare(first.getPossibleTypes().length, second.getPossibleTypes().length);
return variantLen > 0 ? WIDER : NARROW;
}
@@ -188,7 +188,7 @@ public class TypeCompare {
return NARROW_BY_GENERIC;
}
// TODO: fill extendTypes
-// return CONFLICT;
+ // return CONFLICT;
return NARROW_BY_GENERIC;
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInferenceVisitor.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInferenceVisitor.java
index 077ec1435..3e8bbb6e9 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInferenceVisitor.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInferenceVisitor.java
@@ -42,12 +42,12 @@ import jadx.core.utils.BlockUtils;
import jadx.core.utils.Utils;
@JadxVisitor(
- name = "Type Inference",
- desc = "Calculate best types for SSA variables",
- runAfter = {
- SSATransform.class,
- ConstInlineVisitor.class
- }
+ name = "Type Inference",
+ desc = "Calculate best types for SSA variables",
+ runAfter = {
+ SSATransform.class,
+ ConstInlineVisitor.class
+ }
)
public final class TypeInferenceVisitor extends AbstractVisitor {
private static final Logger LOG = LoggerFactory.getLogger(TypeInferenceVisitor.class);
@@ -77,8 +77,8 @@ public final class TypeInferenceVisitor extends AbstractVisitor {
for (SSAVar var : mth.getSVars()) {
ArgType type = var.getTypeInfo().getType();
if (!type.isTypeKnown()
- && !var.getAssign().isTypeImmutable()
- && !tryDeduceType(mth, var, type)) {
+ && !var.getAssign().isTypeImmutable()
+ && !tryDeduceType(mth, var, type)) {
resolved = false;
}
}
@@ -180,9 +180,9 @@ public final class TypeInferenceVisitor extends AbstractVisitor {
private Optional selectBestTypeFromBounds(Set bounds) {
return bounds.stream()
- .map(ITypeBound::getType)
- .filter(Objects::nonNull)
- .max(typeUpdate.getArgTypeComparator());
+ .map(ITypeBound::getType)
+ .filter(Objects::nonNull)
+ .max(typeUpdate.getArgTypeComparator());
}
private void attachBounds(SSAVar var) {
@@ -383,36 +383,36 @@ public final class TypeInferenceVisitor extends AbstractVisitor {
private void processIncompatiblePrimitives(MethodNode mth, SSAVar var) {
if (var.getAssign().getType() == ArgType.BOOLEAN) {
- for (ITypeBound bound : var.getTypeInfo().getBounds()) {
- if (bound.getBound() == BoundEnum.USE
- && bound.getType().isPrimitive() && bound.getType() != ArgType.BOOLEAN) {
- InsnNode insn = bound.getArg().getParentInsn();
- if (insn.getType() == InsnType.CAST) {
- continue;
- };
+ for (ITypeBound bound : var.getTypeInfo().getBounds()) {
+ if (bound.getBound() == BoundEnum.USE
+ && bound.getType().isPrimitive() && bound.getType() != ArgType.BOOLEAN) {
+ InsnNode insn = bound.getArg().getParentInsn();
+ if (insn.getType() == InsnType.CAST) {
+ continue;
+ }
- IndexInsnNode castNode = new IndexInsnNode(InsnType.CAST, bound.getType(), 1);
- castNode.addArg(bound.getArg());
- castNode.setResult(InsnArg.reg(bound.getArg().getRegNum(), bound.getType()));
+ IndexInsnNode castNode = new IndexInsnNode(InsnType.CAST, bound.getType(), 1);
+ castNode.addArg(bound.getArg());
+ castNode.setResult(InsnArg.reg(bound.getArg().getRegNum(), bound.getType()));
- SSAVar newVar = mth.makeNewSVar(castNode.getResult().getRegNum(), castNode.getResult());
- CodeVar codeVar = new CodeVar();
- codeVar.setType(bound.getType());
- newVar.setCodeVar(codeVar);
- newVar.getTypeInfo().setType(bound.getType());
+ SSAVar newVar = mth.makeNewSVar(castNode.getResult().getRegNum(), castNode.getResult());
+ CodeVar codeVar = new CodeVar();
+ codeVar.setType(bound.getType());
+ newVar.setCodeVar(codeVar);
+ newVar.getTypeInfo().setType(bound.getType());
- for (int i = insn.getArgsCount() - 1; i >= 0; i--) {
- if (insn.getArg(i) == bound.getArg()) {
- insn.setArg(i, castNode.getResult().duplicate());
- break;
- }
- }
+ for (int i = insn.getArgsCount() - 1; i >= 0; i--) {
+ if (insn.getArg(i) == bound.getArg()) {
+ insn.setArg(i, castNode.getResult().duplicate());
+ break;
+ }
+ }
- BlockNode blockNode = BlockUtils.getBlockByInsn(mth, insn);
- List insnList = blockNode.getInstructions();
- insnList.add(insnList.indexOf(insn), castNode);
- }
- }
+ BlockNode blockNode = BlockUtils.getBlockByInsn(mth, insn);
+ List insnList = blockNode.getInstructions();
+ insnList.add(insnList.indexOf(insn), castNode);
+ }
+ }
}
}
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInfo.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInfo.java
index ec108c91a..09b94f2e9 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInfo.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeInfo.java
@@ -27,9 +27,6 @@ public class TypeInfo {
@Override
public String toString() {
- return "TypeInfo{" +
- "type=" + type +
- ", bounds=" + bounds +
- '}';
+ return "TypeInfo{type=" + type + ", bounds=" + bounds + '}';
}
}
diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeUpdate.java b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeUpdate.java
index f9738b40f..4d336d4c4 100644
--- a/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeUpdate.java
+++ b/jadx-core/src/main/java/jadx/core/dex/visitors/typeinference/TypeUpdate.java
@@ -48,7 +48,7 @@ public final class TypeUpdate {
if (candidateType == null) {
return REJECT;
}
- if (!candidateType.isTypeKnown()/* && ssaVar.getTypeInfo().getType().isTypeKnown()*/) {
+ if (!candidateType.isTypeKnown()/* && ssaVar.getTypeInfo().getType().isTypeKnown() */) {
return REJECT;
}
diff --git a/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java b/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java
index 522ecbc6b..8b5d4e0a6 100644
--- a/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java
+++ b/jadx-core/src/main/java/jadx/core/export/ExportGradleProject.java
@@ -23,8 +23,7 @@ public class ExportGradleProject {
private static final Set IGNORE_CLS_NAMES = new HashSet<>(Arrays.asList(
"R",
- "BuildConfig"
- ));
+ "BuildConfig"));
private final RootNode root;
private final File outDir;
diff --git a/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java b/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java
index 92b9f4f3f..fe4146a73 100644
--- a/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java
+++ b/jadx-core/src/main/java/jadx/core/utils/ImmutableList.java
@@ -22,7 +22,7 @@ import org.jetbrains.annotations.NotNull;
public final class ImmutableList implements List, RandomAccess {
private final E[] arr;
- @SuppressWarnings({"unchecked", "SuspiciousArrayCast"})
+ @SuppressWarnings({ "unchecked", "SuspiciousArrayCast" })
public ImmutableList(Collection col) {
this((E[]) Objects.requireNonNull(col).toArray());
}
diff --git a/jadx-core/src/main/java/jadx/core/utils/InsnList.java b/jadx-core/src/main/java/jadx/core/utils/InsnList.java
index 584d8d7e4..39c37abe1 100644
--- a/jadx-core/src/main/java/jadx/core/utils/InsnList.java
+++ b/jadx-core/src/main/java/jadx/core/utils/InsnList.java
@@ -15,7 +15,7 @@ public final class InsnList implements Iterable {
}
public static void remove(List list, InsnNode insn) {
- for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
+ for (Iterator iterator = list.iterator(); iterator.hasNext();) {
InsnNode next = iterator.next();
if (next == insn) {
iterator.remove();
diff --git a/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java b/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java
index d8aa1e842..bc0fc646f 100644
--- a/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java
+++ b/jadx-core/src/main/java/jadx/core/utils/InsnUtils.java
@@ -1,10 +1,11 @@
package jadx.core.utils;
-import com.android.dx.io.instructions.DecodedInstruction;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.android.dx.io.instructions.DecodedInstruction;
+
import jadx.core.dex.attributes.AType;
import jadx.core.dex.info.FieldInfo;
import jadx.core.dex.instructions.ConstClassNode;
diff --git a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java
index cbc66ec3c..b94f880bc 100644
--- a/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java
+++ b/jadx-core/src/main/java/jadx/core/utils/android/AndroidResourcesUtils.java
@@ -5,12 +5,13 @@ import java.util.List;
import java.util.Map;
import java.util.TreeMap;
-import com.android.dx.rop.code.AccessFlags;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.android.dx.rop.code.AccessFlags;
+
import jadx.core.codegen.ClassGen;
import jadx.core.codegen.CodeWriter;
import jadx.core.deobf.NameMapper;
@@ -103,8 +104,7 @@ public class AndroidResourcesUtils {
final String resTypeName = resource.getTypeName();
ClassNode typeCls = innerClsMap.computeIfAbsent(
resTypeName,
- name -> addClassForResType(resCls, rClsExists, name)
- );
+ name -> addClassForResType(resCls, rClsExists, name));
final String resName;
if ("style".equals(resTypeName)) {
resName = resource.getKeyName().replace('.', '_');
diff --git a/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java b/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java
index 9c7682827..83fd14aae 100644
--- a/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java
+++ b/jadx-core/src/main/java/jadx/core/utils/android/ExtDataInput.java
@@ -81,6 +81,7 @@ public class ExtDataInput extends DataInputDelegate {
* requested (this is similar to DataInputStream's wrapper).
*/
@Override
+ @SuppressWarnings("InnerAssignment")
public final int skipBytes(int n) throws IOException {
int total = 0;
int cur = 0;
diff --git a/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java b/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java
index c57410eef..7d4bb22ef 100644
--- a/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java
+++ b/jadx-core/src/main/java/jadx/core/utils/android/Res9patchStreamDecoder.java
@@ -16,7 +16,6 @@
package jadx.core.utils.android;
-import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.DataInput;
@@ -24,6 +23,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import javax.imageio.ImageIO;
+
import org.apache.commons.io.IOUtils;
import jadx.core.utils.exceptions.JadxException;
@@ -110,7 +111,7 @@ public class Res9patchStreamDecoder {
public final int[] yDivs;
public NinePatch(int padLeft, int padRight, int padTop, int padBottom,
- int[] xDivs, int[] yDivs) {
+ int[] xDivs, int[] yDivs) {
this.padLeft = padLeft;
this.padRight = padRight;
this.padTop = padTop;
diff --git a/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java b/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java
index 0bc310a2d..89f60e83f 100644
--- a/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java
+++ b/jadx-core/src/main/java/jadx/core/utils/files/InputFile.java
@@ -1,8 +1,5 @@
package jadx.core.utils.files;
-import static jadx.core.utils.files.FileUtils.isApkFile;
-import static jadx.core.utils.files.FileUtils.isZipDexFile;
-
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -31,6 +28,9 @@ import jadx.core.utils.exceptions.DecodeException;
import jadx.core.utils.exceptions.JadxException;
import jadx.core.utils.exceptions.JadxRuntimeException;
+import static jadx.core.utils.files.FileUtils.isApkFile;
+import static jadx.core.utils.files.FileUtils.isZipDexFile;
+
public class InputFile {
private static final Logger LOG = LoggerFactory.getLogger(InputFile.class);
@@ -117,7 +117,7 @@ public class InputFile {
// we should consider the input file could contain only one single dex, multi-dex,
// or instantRun support dex for Android .apk files
String instantRunDexSuffix = "classes" + ext;
- for (Enumeration extends ZipEntry> e = zf.entries(); e.hasMoreElements(); ) {
+ for (Enumeration extends ZipEntry> e = zf.entries(); e.hasMoreElements();) {
ZipEntry entry = e.nextElement();
if (!ZipSecurity.isValidZipEntry(entry)) {
continue;
diff --git a/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java b/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java
index 83c75691d..4f59c4983 100644
--- a/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java
+++ b/jadx-core/src/main/java/jadx/core/utils/files/JavaToDex.java
@@ -39,27 +39,27 @@ public class JavaToDex {
public List convert(Path jar) throws JadxException {
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
- ByteArrayOutputStream errOut = new ByteArrayOutputStream()) {
+ ByteArrayOutputStream errOut = new ByteArrayOutputStream()) {
DxContext context = new DxContext(out, errOut);
Path dir = Files.createTempDirectory("jadx");
DxArgs args = new DxArgs(
context,
dir.toAbsolutePath().toString(),
- new String[]{jar.toAbsolutePath().toString()});
+ new String[] { jar.toAbsolutePath().toString() });
int result = new Main(context).runDx(args);
dxErrors = errOut.toString(CHARSET_NAME);
if (result != 0) {
throw new JadxException("Java to dex conversion error, code: " + result);
}
List list = new ArrayList<>();
- try (DirectoryStream ds = Files.newDirectoryStream(dir)) {
- for (Path child : ds) {
- list.add(child);
- child.toFile().deleteOnExit();
- }
- }
- dir.toFile().deleteOnExit();
- return list;
+ try (DirectoryStream ds = Files.newDirectoryStream(dir)) {
+ for (Path child : ds) {
+ list.add(child);
+ child.toFile().deleteOnExit();
+ }
+ }
+ dir.toFile().deleteOnExit();
+ return list;
} catch (Exception e) {
throw new JadxException("dx exception: " + e.getMessage(), e);
}
diff --git a/jadx-core/src/main/java/jadx/core/utils/files/ZipSecurity.java b/jadx-core/src/main/java/jadx/core/utils/files/ZipSecurity.java
index 38a2d2c5f..39bf20a57 100644
--- a/jadx-core/src/main/java/jadx/core/utils/files/ZipSecurity.java
+++ b/jadx-core/src/main/java/jadx/core/utils/files/ZipSecurity.java
@@ -13,7 +13,8 @@ public class ZipSecurity {
// size of uncompressed zip entry shouldn't be bigger of compressed in MAX_SIZE_DIFF times
private static final int MAX_SIZE_DIFF = 100;
- private ZipSecurity() {}
+ private ZipSecurity() {
+ }
private static boolean isInSubDirectoryInternal(File baseDir, File canonFile) {
if (canonFile == null) {
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java
index 3a5259f51..c33269f65 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/BinaryXMLParser.java
@@ -20,16 +20,17 @@ import jadx.core.utils.StringUtils;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.core.xmlgen.entry.ValuesParser;
-/* TODO:
- Don't die when error occurs
- Check error cases, maybe checked const values are not always the same
- Better error messages
- What to do, when Binary XML Manifest is > size(int)?
- Check for missing chunk size types
- Implement missing data types
- Use line numbers to recreate EXACT AndroidManifest
- Check Element chunk size
-*/
+/*
+ * TODO:
+ * Don't die when error occurs
+ * Check error cases, maybe checked const values are not always the same
+ * Better error messages
+ * What to do, when Binary XML Manifest is > size(int)?
+ * Check for missing chunk size types
+ * Implement missing data types
+ * Use line numbers to recreate EXACT AndroidManifest
+ * Check Element chunk size
+ */
@SuppressWarnings("unused")
public class BinaryXMLParser extends CommonBinaryParser {
@@ -74,8 +75,8 @@ public class BinaryXMLParser extends CommonBinaryParser {
for (Field f : rStyleCls.getFields()) {
styleMap.put(f.getInt(f.getType()), f.getName());
}
- } catch (Exception th) {
- LOG.error("Android R class loading failed", th);
+ } catch (Exception e) {
+ LOG.error("Android R class loading failed", e);
}
}
@@ -330,7 +331,7 @@ public class BinaryXMLParser extends CommonBinaryParser {
}
private String generateNameForNS(String attrUrl) {
- for (int i = 1; ; i++) {
+ for (int i = 1;; i++) {
String attrName = "ns" + i;
if (!nsMap.containsValue(attrName) && !nsMapGenerated.contains(attrName)) {
nsMapGenerated.add(attrName);
@@ -369,7 +370,7 @@ public class BinaryXMLParser extends CommonBinaryParser {
}
private void decodeAttribute(int attributeNS, int attrValDataType, int attrValData,
- String shortNsName, String attrName) {
+ String shortNsName, String attrName) {
if (attrValDataType == TYPE_REFERENCE) {
// reference custom processing
String name = styleMap.get(attrValData);
@@ -422,9 +423,9 @@ public class BinaryXMLParser extends CommonBinaryParser {
} else {
writer.startLine("");
writer.attachSourceLine(endLineNumber);
-// if (elementNS != -1) {
-// writer.add(getString(elementNS)).add(':');
-// }
+ // if (elementNS != -1) {
+ // writer.add(getString(elementNS)).add(':');
+ // }
writer.add(elemName).add('>');
}
isLastEnd = true;
@@ -443,8 +444,7 @@ public class BinaryXMLParser extends CommonBinaryParser {
String generated;
do {
generated = generateTagAttrName();
- }
- while (tagAttrDeobfNames.containsValue(generated));
+ } while (tagAttrDeobfNames.containsValue(generated));
tagAttrDeobfNames.put(originalName, generated);
return generated;
}
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java b/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
index 34ab9750e..7280f820b 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
@@ -1,11 +1,12 @@
package jadx.core.xmlgen;
-import javax.xml.parsers.DocumentBuilder;
import java.io.InputStream;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
+import javax.xml.parsers.DocumentBuilder;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.w3c.dom.Document;
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java b/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java
index 6f60fb7bb..f1d6f8264 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/ParserConstants.java
@@ -71,7 +71,7 @@ public class ParserConstants {
// ...end of integer flavors.
protected static final int TYPE_LAST_INT = 0x1f;
- // Where the unit type information is. This gives us 16 possible
+ // Where the unit type information is. This gives us 16 possible
// types, as defined below.
protected static final int COMPLEX_UNIT_SHIFT = 0;
protected static final int COMPLEX_UNIT_MASK = 0xf;
@@ -95,7 +95,7 @@ public class ParserConstants {
protected static final int COMPLEX_UNIT_FRACTION_PARENT = 1;
// Where the radix information is, telling where the decimal place
- // appears in the mantissa. This give us 4 possible fixed point
+ // appears in the mantissa. This give us 4 possible fixed point
// representations as defined below.
protected static final int COMPLEX_RADIX_SHIFT = 4;
protected static final int COMPLEX_RADIX_MASK = 0x3;
@@ -109,13 +109,13 @@ public class ParserConstants {
// The mantissa magnitude is 0 bits -- i.e, 0x0.nnnnnn
protected static final int COMPLEX_RADIX_0P23 = 3;
- // Where the actual value is. This gives us 23 bits of
- // precision. The top bit is the sign.
+ // Where the actual value is. This gives us 23 bits of
+ // precision. The top bit is the sign.
protected static final int COMPLEX_MANTISSA_SHIFT = 8;
protected static final int COMPLEX_MANTISSA_MASK = 0xffffff;
protected static final double MANTISSA_MULT = 1.0f / (1 << COMPLEX_MANTISSA_SHIFT);
- protected static final double[] RADIX_MULTS = new double[]{
+ protected static final double[] RADIX_MULTS = new double[] {
1.0f * MANTISSA_MULT,
1.0f / (1 << 7) * MANTISSA_MULT,
1.0f / (1 << 15) * MANTISSA_MULT,
@@ -187,7 +187,7 @@ public class ParserConstants {
protected static final int ATTR_TYPE_REFERENCE = 1;
// Attribute holds a generic string.
protected static final int ATTR_TYPE_STRING = 1 << 1;
- // Attribute holds an integer value. ATTR_MIN and ATTR_MIN can
+ // Attribute holds an integer value. ATTR_MIN and ATTR_MIN can
// optionally specify a constrained range of possible integer values.
protected static final int ATTR_TYPE_INTEGER = 1 << 2;
// Attribute holds a boolean integer.
@@ -200,10 +200,10 @@ public class ParserConstants {
protected static final int ATTR_TYPE_DIMENSION = 1 << 6;
// Attribute holds a fraction value, such as "20%".
protected static final int ATTR_TYPE_FRACTION = 1 << 7;
- // Attribute holds an enumeration. The enumeration values are
+ // Attribute holds an enumeration. The enumeration values are
// supplied as additional entries in the map.
protected static final int ATTR_TYPE_ENUM = 1 << 16;
- // Attribute holds a bitmaks of flags. The flag bit values are
+ // Attribute holds a bitmaks of flags. The flag bit values are
// supplied as additional entries in the map.
protected static final int ATTR_TYPE_FLAGS = 1 << 17;
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java
index 22896bc85..df6080f6f 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResTableParser.java
@@ -80,7 +80,7 @@ public class ResTableParser extends CommonBinaryParser {
for (ResourceEntry ri : resStorage.getResources()) {
if (addedValues.add(ri.getTypeName() + '.' + ri.getKeyName())) {
String format = String.format("",
- ri.getTypeName(), ri.getKeyName(), ri.getId());
+ ri.getTypeName(), ri.getKeyName(), ri.getId());
writer.startLine(format);
}
}
@@ -101,7 +101,7 @@ public class ResTableParser extends CommonBinaryParser {
void decodeTableChunk() throws IOException {
is.checkInt16(RES_TABLE_TYPE, "Not a table chunk");
is.checkInt16(0x000c, "Unexpected table header size");
- /*int size = */
+ /* int size = */
is.readInt32();
int pkgCount = is.readInt32();
@@ -167,7 +167,7 @@ public class ResTableParser extends CommonBinaryParser {
@SuppressWarnings("unused")
private void parseTypeSpecChunk() throws IOException {
is.checkInt16(0x0010, "Unexpected type spec header size");
- /*int size = */
+ /* int size = */
is.readInt32();
int id = is.readInt8();
@@ -179,9 +179,9 @@ public class ResTableParser extends CommonBinaryParser {
}
private void parseTypeChunk(long start, PackageChunk pkg) throws IOException {
- /*int headerSize = */
+ /* int headerSize = */
is.readInt16();
- /*int size = */
+ /* int size = */
is.readInt32();
int id = is.readInt8();
@@ -221,7 +221,7 @@ public class ResTableParser extends CommonBinaryParser {
int resRef = pkg.getId() << 24 | typeId << 16 | entryId;
String typeName = pkg.getTypeStrings()[typeId - 1];
String keyName = pkg.getKeyStrings()[key];
- if(keyName.isEmpty()) {
+ if (keyName.isEmpty()) {
keyName = "RES_" + resRef; // autogenerate key name
}
ResourceEntry ri = new ResourceEntry(resRef, pkg.getName(), typeName, keyName);
@@ -317,11 +317,11 @@ public class ResTableParser extends CommonBinaryParser {
is.skipToPos(start + size, "Config skip trailing bytes");
return new EntryConfig(mcc, mnc, language, country,
- orientation, touchscreen, density, keyboard, navigation,
- inputFlags, screenWidth, screenHeight, sdkVersion,
- screenLayout, uiMode, smallestScreenWidthDp, screenWidthDp,
- screenHeightDp, localeScript, localeVariant, screenLayout2,
- colorMode, false, size);
+ orientation, touchscreen, density, keyboard, navigation,
+ inputFlags, screenWidth, screenHeight, sdkVersion,
+ screenLayout, uiMode, smallestScreenWidthDp, screenWidthDp,
+ screenHeightDp, localeScript, localeVariant, screenLayout2,
+ colorMode, false, size);
}
private char[] unpackLocaleOrRegion(byte in0, byte in1, char base) {
@@ -333,9 +333,9 @@ public class ResTableParser extends CommonBinaryParser {
// since this function handles languages & regions, we add the value(s) to the base char
// which is usually 'a' or '0' depending on language or region.
- return new char[]{(char) (first + base), (char) (second + base), (char) (third + base)};
+ return new char[] { (char) (first + base), (char) (second + base), (char) (third + base) };
}
- return new char[]{(char) in0, (char) in1};
+ return new char[] { (char) in0, (char) in1 };
}
private String readScriptOrVariantChar(int length) throws IOException {
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java
index 58f721ceb..a9422d420 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/ResXmlGen.java
@@ -22,8 +22,7 @@ public class ResXmlGen {
private static final Set SKIP_RES_TYPES = new HashSet<>(Arrays.asList(
"layout",
"mipmap",
- "id"
- ));
+ "id"));
private final ResourceStorage resStorage;
private final ValuesParser vp;
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/XMLChar.java b/jadx-core/src/main/java/jadx/core/xmlgen/XMLChar.java
index 422bd2e12..730e63f56 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/XMLChar.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/XMLChar.java
@@ -1,13 +1,11 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
+ * contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * the License. You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -37,7 +35,7 @@ import java.util.Arrays;
* @author Glenn Marcy, IBM
* @author Andy Clark, IBM
* @author Eric Ye, IBM
- * @author Arnaud Le Hors, IBM
+ * @author Arnaud Le Hors, IBM
* @author Michael Glavassevich, IBM
* @author Rahul Srivastava, Sun Microsystems Inc.
* @version $Id: XMLChar.java 674378 2008-07-07 00:52:45Z mrglavas $
@@ -799,8 +797,8 @@ public class XMLChar {
* @param c The character to check.
*/
public static boolean isValid(int c) {
- return (c < 0x10000 && (CHARS[c] & MASK_VALID) != 0) ||
- (0x10000 <= c && c <= 0x10FFFF);
+ return (c < 0x10000 && (CHARS[c] & MASK_VALID) != 0)
+ || (0x10000 <= c && c <= 0x10FFFF);
} // isValid(int):boolean
/**
@@ -818,8 +816,8 @@ public class XMLChar {
* @param c The character to check.
*/
public static boolean isContent(int c) {
- return (c < 0x10000 && (CHARS[c] & MASK_CONTENT) != 0) ||
- (0x10000 <= c && c <= 0x10FFFF);
+ return (c < 0x10000 && (CHARS[c] & MASK_CONTENT) != 0)
+ || (0x10000 <= c && c <= 0x10FFFF);
} // isContent(int):boolean
/**
@@ -999,9 +997,9 @@ public class XMLChar {
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
for (int i = 1; i < length; i++) {
c = ianaEncoding.charAt(i);
- if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z') &&
- (c < '0' || c > '9') && c != '.' && c != '_' &&
- c != '-') {
+ if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z')
+ && (c < '0' || c > '9') && c != '.' && c != '_'
+ && c != '-') {
return false;
}
}
@@ -1026,9 +1024,9 @@ public class XMLChar {
if (length > 0) {
for (int i = 1; i < length; i++) {
char c = javaEncoding.charAt(i);
- if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z') &&
- (c < '0' || c > '9') && c != '.' && c != '_' &&
- c != '-') {
+ if ((c < 'A' || c > 'Z') && (c < 'a' || c > 'z')
+ && (c < '0' || c > '9') && c != '.' && c != '_'
+ && c != '-') {
return false;
}
}
@@ -1046,7 +1044,7 @@ public class XMLChar {
*
* @param value the string to be trimmed
* @return the given string with the space characters trimmed
- * from both ends
+ * from both ends
*/
public static String trim(String value) {
int start;
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/XmlDeobf.java b/jadx-core/src/main/java/jadx/core/xmlgen/XmlDeobf.java
index 141d1c7ab..a31092ae3 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/XmlDeobf.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/XmlDeobf.java
@@ -11,12 +11,13 @@ import jadx.core.dex.nodes.RootNode;
* but were changed during deobfuscation
*/
public class XmlDeobf {
- private static final Map deobfMap = new HashMap<>();
+ private static final Map DEOBF_MAP = new HashMap<>();
- private XmlDeobf() {}
+ private XmlDeobf() {
+ }
public static String deobfClassName(RootNode rootNode, String potencialClassName,
- String packageName) {
+ String packageName) {
if (packageName != null && potencialClassName.startsWith(".")) {
potencialClassName = packageName + potencialClassName;
@@ -25,17 +26,17 @@ public class XmlDeobf {
}
private static String getNewClassName(RootNode rootNode, String old) {
- if (deobfMap.isEmpty()) {
+ if (DEOBF_MAP.isEmpty()) {
for (ClassNode classNode : rootNode.getClasses(true)) {
if (classNode.getAlias() != null) {
String oldName = classNode.getClassInfo().getFullName();
String newName = classNode.getAlias().getFullName();
if (!oldName.equals(newName)) {
- deobfMap.put(oldName, newName);
+ DEOBF_MAP.put(oldName, newName);
}
}
}
}
- return deobfMap.get(old);
+ return DEOBF_MAP.get(old);
}
}
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/XmlSecurity.java b/jadx-core/src/main/java/jadx/core/xmlgen/XmlSecurity.java
index defa24867..c67167c69 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/XmlSecurity.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/XmlSecurity.java
@@ -7,7 +7,8 @@ public class XmlSecurity {
private static DocumentBuilderFactory secureDbf = null;
- private XmlSecurity() {}
+ private XmlSecurity() {
+ }
public static DocumentBuilderFactory getSecureDbf() throws ParserConfigurationException {
synchronized (XmlSecurity.class) {
diff --git a/jadx-core/src/main/java/jadx/core/xmlgen/entry/EntryConfig.java b/jadx-core/src/main/java/jadx/core/xmlgen/entry/EntryConfig.java
index 4211dba61..d5dcca8bd 100644
--- a/jadx-core/src/main/java/jadx/core/xmlgen/entry/EntryConfig.java
+++ b/jadx-core/src/main/java/jadx/core/xmlgen/entry/EntryConfig.java
@@ -14,6 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package jadx.core.xmlgen.entry;
import org.slf4j.Logger;
@@ -21,7 +22,8 @@ import org.slf4j.LoggerFactory;
/**
* Original source code can be found
- * here
+ * here
*/
public class EntryConfig {
@@ -64,13 +66,13 @@ public class EntryConfig {
private final int size;
public EntryConfig(short mcc, short mnc, char[] language,
- char[] region, byte orientation,
- byte touchscreen, int density, byte keyboard, byte navigation,
- byte inputFlags, short screenWidth, short screenHeight,
- short sdkVersion, byte screenLayout, byte uiMode,
- short smallestScreenWidthDp, short screenWidthDp,
- short screenHeightDp, char[] localeScript, char[] localeVariant,
- byte screenLayout2, byte colorMode, boolean isInvalid, int size) {
+ char[] region, byte orientation,
+ byte touchscreen, int density, byte keyboard, byte navigation,
+ byte inputFlags, short screenWidth, short screenHeight,
+ short sdkVersion, byte screenLayout, byte uiMode,
+ short smallestScreenWidthDp, short screenWidthDp,
+ short screenHeightDp, char[] localeScript, char[] localeVariant,
+ byte screenLayout2, byte colorMode, boolean isInvalid, int size) {
if (orientation < 0 || orientation > 3) {
LOG.warn("Invalid orientation value: {}", orientation);
orientation = 0;
@@ -394,7 +396,8 @@ public class EntryConfig {
}
private short getNaturalSdkVersionRequirement() {
- if ((uiMode & MASK_UI_MODE_TYPE) == UI_MODE_TYPE_VR_HEADSET || (colorMode & COLOR_WIDE_MASK) != 0 || ((colorMode & COLOR_HDR_MASK) != 0)) {
+ if ((uiMode & MASK_UI_MODE_TYPE) == UI_MODE_TYPE_VR_HEADSET || (colorMode & COLOR_WIDE_MASK) != 0
+ || ((colorMode & COLOR_HDR_MASK) != 0)) {
return SDK_OREO;
}
if ((screenLayout2 & MASK_SCREENROUND) != 0) {
@@ -421,8 +424,8 @@ public class EntryConfig {
// check for old style non BCP47 tags
// allows values-xx-rXX, values-xx, values-xxx-rXX
// denies values-xxx, anything else
- if (localeVariant == null && localeScript == null && (region[0] != '\00' || language[0] != '\00') &&
- region.length != 3) {
+ if (localeVariant == null && localeScript == null && (region[0] != '\00' || language[0] != '\00')
+ && region.length != 3) {
sb.append('-').append(language);
if (region[0] != '\00') {
sb.append("-r").append(region);
diff --git a/jadx-core/src/test/java/jadx/NotYetImplemented.java b/jadx-core/src/test/java/jadx/NotYetImplemented.java
index de3f415d9..c20bf94da 100644
--- a/jadx-core/src/test/java/jadx/NotYetImplemented.java
+++ b/jadx-core/src/test/java/jadx/NotYetImplemented.java
@@ -8,10 +8,13 @@ import java.lang.annotation.Target;
/**
* Indicates a test which is known to fail.
*
- *
This would cause a failure to be considered as success and a success as failure,
- * with the benefit of updating the related issue when it has been resolved even unintentionally.
+ *
+ * This would cause a failure to be considered as success and a success as failure,
+ * with the benefit of updating the related issue when it has been resolved even unintentionally.
+ *
*
- *
To have an effect, the test class must be annotated with:
+ *
+ * To have an effect, the test class must be annotated with:
*
*
* @ExtendWith(NotYetImplementedExtension.class)
@@ -19,7 +22,7 @@ import java.lang.annotation.Target;
*