diff --git a/src/main/java/jadx/JadxArgs.java b/src/main/java/jadx/JadxArgs.java
index 69ff93319..d77cad78b 100644
--- a/src/main/java/jadx/JadxArgs.java
+++ b/src/main/java/jadx/JadxArgs.java
@@ -19,7 +19,7 @@ import com.beust.jcommander.ParameterDescription;
import com.beust.jcommander.ParameterException;
public class JadxArgs {
- private final static Logger LOG = LoggerFactory.getLogger(JadxArgs.class);
+ private static final Logger LOG = LoggerFactory.getLogger(JadxArgs.class);
@Parameter(description = " (.dex, .apk, .jar or .class)", required = true)
protected List files;
diff --git a/src/main/java/jadx/ProcessClass.java b/src/main/java/jadx/ProcessClass.java
index 313290cdd..e12f48b1e 100644
--- a/src/main/java/jadx/ProcessClass.java
+++ b/src/main/java/jadx/ProcessClass.java
@@ -11,7 +11,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class ProcessClass implements Runnable {
- private final static Logger LOG = LoggerFactory.getLogger(ProcessClass.class);
+ private static final Logger LOG = LoggerFactory.getLogger(ProcessClass.class);
private final ClassNode cls;
private final List passes;
diff --git a/src/main/java/jadx/codegen/ClassGen.java b/src/main/java/jadx/codegen/ClassGen.java
index dd36974e4..307152ce7 100644
--- a/src/main/java/jadx/codegen/ClassGen.java
+++ b/src/main/java/jadx/codegen/ClassGen.java
@@ -24,14 +24,9 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.android.dx.rop.code.AccessFlags;
public class ClassGen {
- private final static Logger LOG = LoggerFactory.getLogger(ClassGen.class);
-
private final ClassNode cls;
private final ClassGen parentGen;
private final AnnotationGen annotationGen;
diff --git a/src/main/java/jadx/codegen/CodeWriter.java b/src/main/java/jadx/codegen/CodeWriter.java
index 3fc715853..c924f1ff3 100644
--- a/src/main/java/jadx/codegen/CodeWriter.java
+++ b/src/main/java/jadx/codegen/CodeWriter.java
@@ -3,18 +3,17 @@ package jadx.codegen;
import jadx.utils.exceptions.JadxRuntimeException;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.PrintWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CodeWriter {
- private final static Logger LOG = LoggerFactory.getLogger(CodeWriter.class);
+ private static final Logger LOG = LoggerFactory.getLogger(CodeWriter.class);
private static final int MAX_FILENAME_LENGTH = 128;
- public final static String NL = System.getProperty("line.separator");
- public final static String INDENT = "\t";
+ public static final String NL = System.getProperty("line.separator");
+ public static final String INDENT = "\t";
private StringBuilder buf = new StringBuilder();
private String indentStr;
@@ -155,11 +154,11 @@ public class CodeWriter {
PrintWriter out = null;
try {
makeDirsForFile(file);
- out = new PrintWriter(file);
+ out = new PrintWriter(file, "UTF-8");
String code = buf.toString();
code = removeFirstEmptyLine(code);
out.print(code);
- } catch (FileNotFoundException e) {
+ } catch (Exception e) {
LOG.error("Save file error", e);
} finally {
if (out != null)
diff --git a/src/main/java/jadx/codegen/InsnGen.java b/src/main/java/jadx/codegen/InsnGen.java
index 97b564914..c2d98e917 100644
--- a/src/main/java/jadx/codegen/InsnGen.java
+++ b/src/main/java/jadx/codegen/InsnGen.java
@@ -33,7 +33,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class InsnGen {
- private final static Logger LOG = LoggerFactory.getLogger(InsnGen.class);
+ private static final Logger LOG = LoggerFactory.getLogger(InsnGen.class);
protected final MethodGen mgen;
protected final MethodNode mth;
diff --git a/src/main/java/jadx/codegen/MethodGen.java b/src/main/java/jadx/codegen/MethodGen.java
index bdd0d66a0..7945d3d1d 100644
--- a/src/main/java/jadx/codegen/MethodGen.java
+++ b/src/main/java/jadx/codegen/MethodGen.java
@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
import com.android.dx.rop.code.AccessFlags;
public class MethodGen {
- private final static Logger LOG = LoggerFactory.getLogger(MethodGen.class);
+ private static final Logger LOG = LoggerFactory.getLogger(MethodGen.class);
private final MethodNode mth;
private final Set mthArgsDecls;
diff --git a/src/main/java/jadx/codegen/RegionGen.java b/src/main/java/jadx/codegen/RegionGen.java
index 5cbdd4b18..f3af0165c 100644
--- a/src/main/java/jadx/codegen/RegionGen.java
+++ b/src/main/java/jadx/codegen/RegionGen.java
@@ -35,7 +35,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RegionGen extends InsnGen {
- private final static Logger LOG = LoggerFactory.getLogger(RegionGen.class);
+ private static final Logger LOG = LoggerFactory.getLogger(RegionGen.class);
public RegionGen(MethodGen mgen, MethodNode mth) {
super(mgen, mth, false);
diff --git a/src/main/java/jadx/dex/info/LocalVarInfo.java b/src/main/java/jadx/dex/info/LocalVarInfo.java
index b79134bcf..51cfb2370 100644
--- a/src/main/java/jadx/dex/info/LocalVarInfo.java
+++ b/src/main/java/jadx/dex/info/LocalVarInfo.java
@@ -5,12 +5,8 @@ import jadx.dex.instructions.args.RegisterArg;
import jadx.dex.instructions.args.TypedVar;
import jadx.dex.nodes.DexNode;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
public class LocalVarInfo extends RegisterArg {
- private final static Logger LOG = LoggerFactory.getLogger(LocalVarInfo.class);
private boolean isEnd;
public LocalVarInfo(DexNode dex, int rn, int nameId, int typeId, int signId) {
@@ -31,8 +27,6 @@ public class LocalVarInfo extends RegisterArg {
TypedVar tv = new TypedVar(type);
tv.setName(name);
setTypedVar(tv);
-
- // LOG.trace("local var: {}, sign: {}", tv, sign);
}
public void start(int addr, int line) {
diff --git a/src/main/java/jadx/dex/instructions/InsnDecoder.java b/src/main/java/jadx/dex/instructions/InsnDecoder.java
index d61c7c5f0..cfd557d90 100644
--- a/src/main/java/jadx/dex/instructions/InsnDecoder.java
+++ b/src/main/java/jadx/dex/instructions/InsnDecoder.java
@@ -10,9 +10,6 @@ import jadx.dex.nodes.InsnNode;
import jadx.dex.nodes.MethodNode;
import jadx.utils.exceptions.DecodeException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.android.dx.io.Code;
import com.android.dx.io.OpcodeInfo;
import com.android.dx.io.Opcodes;
@@ -23,8 +20,6 @@ import com.android.dx.io.instructions.SparseSwitchPayloadDecodedInstruction;
public class InsnDecoder {
- private final static Logger LOG = LoggerFactory.getLogger(InsnDecoder.class);
-
private final MethodNode method;
private final DecodedInstruction[] insnArr;
private final DexNode dex;
@@ -35,25 +30,20 @@ public class InsnDecoder {
this.insnArr = DecodedInstruction.decodeAll(mthCode.getInstructions());
}
- public InsnNode[] run() {
+ public InsnNode[] run() throws DecodeException {
InsnNode[] instructions = new InsnNode[insnArr.length];
for (int i = 0; i < insnArr.length; i++) {
- try {
- DecodedInstruction rawInsn = insnArr[i];
- if (rawInsn != null) {
- InsnNode insn = decode(rawInsn, i);
- if (insn != null) {
- insn.setOffset(i);
- insn.setInsnHashCode(calcHashCode(rawInsn));
- }
- instructions[i] = insn;
- } else {
- instructions[i] = null;
+ DecodedInstruction rawInsn = insnArr[i];
+ if (rawInsn != null) {
+ InsnNode insn = decode(rawInsn, i);
+ if (insn != null) {
+ insn.setOffset(i);
+ insn.setInsnHashCode(calcHashCode(rawInsn));
}
- } catch (DecodeException e) {
- LOG.error("Instruction decode error", e);
- System.exit(1);
+ instructions[i] = insn;
+ } else {
+ instructions[i] = null;
}
}
return instructions;
diff --git a/src/main/java/jadx/dex/instructions/args/TypedVar.java b/src/main/java/jadx/dex/instructions/args/TypedVar.java
index c2acea41c..8444c50e6 100644
--- a/src/main/java/jadx/dex/instructions/args/TypedVar.java
+++ b/src/main/java/jadx/dex/instructions/args/TypedVar.java
@@ -20,9 +20,9 @@ public class TypedVar {
/**
* This method must be used very carefully
*/
- public boolean forceSetType(ArgType type) {
- if (type != null && !type.equals(type)) {
- this.type = type;
+ public boolean forceSetType(ArgType newType) {
+ if (newType != null && !type.equals(newType)) {
+ type = newType;
return true;
} else {
return false;
diff --git a/src/main/java/jadx/dex/nodes/BlockNode.java b/src/main/java/jadx/dex/nodes/BlockNode.java
index a21155c6f..3b1135423 100644
--- a/src/main/java/jadx/dex/nodes/BlockNode.java
+++ b/src/main/java/jadx/dex/nodes/BlockNode.java
@@ -13,6 +13,7 @@ import java.util.List;
public class BlockNode extends AttrNode implements IBlock {
+ private int id;
private final int startOffset;
private final List instructions = new ArrayList(2);
@@ -26,12 +27,9 @@ public class BlockNode extends AttrNode implements IBlock {
private BlockRegState startState;
private BlockRegState endState;
- private int id;
- public static int initialID;
-
- public BlockNode(MethodNode mth, int offset) {
+ public BlockNode(MethodNode mth, int id, int offset) {
+ this.id = id;
this.startOffset = offset;
- this.id = ++initialID;
}
public void setId(int id) {
diff --git a/src/main/java/jadx/dex/nodes/ClassNode.java b/src/main/java/jadx/dex/nodes/ClassNode.java
index aa75b9a3c..19e352d60 100644
--- a/src/main/java/jadx/dex/nodes/ClassNode.java
+++ b/src/main/java/jadx/dex/nodes/ClassNode.java
@@ -32,7 +32,7 @@ import com.android.dx.io.ClassDef;
public class ClassNode extends AttrNode implements ILoadable {
- private final static Logger LOG = LoggerFactory.getLogger(ClassNode.class);
+ private static final Logger LOG = LoggerFactory.getLogger(ClassNode.class);
private final DexNode dex;
private final ClassInfo clsInfo;
diff --git a/src/main/java/jadx/dex/nodes/DexNode.java b/src/main/java/jadx/dex/nodes/DexNode.java
index cccb51ed7..379d3fd6f 100644
--- a/src/main/java/jadx/dex/nodes/DexNode.java
+++ b/src/main/java/jadx/dex/nodes/DexNode.java
@@ -23,7 +23,7 @@ import com.android.dx.merge.TypeList;
public class DexNode {
- public final static int NO_INDEX = -1;
+ public static final int NO_INDEX = -1;
private final RootNode root;
private final DexBuffer dexBuf;
diff --git a/src/main/java/jadx/dex/nodes/InsnNode.java b/src/main/java/jadx/dex/nodes/InsnNode.java
index 1bfced068..ec42df246 100644
--- a/src/main/java/jadx/dex/nodes/InsnNode.java
+++ b/src/main/java/jadx/dex/nodes/InsnNode.java
@@ -148,6 +148,7 @@ public class InsnNode extends AttrNode {
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
+ if (obj == null) return false;
if (hashCode() != obj.hashCode()) return false;
if (!(obj instanceof InsnNode)) return false;
diff --git a/src/main/java/jadx/dex/nodes/MethodNode.java b/src/main/java/jadx/dex/nodes/MethodNode.java
index bea744ce0..5a7b6c816 100644
--- a/src/main/java/jadx/dex/nodes/MethodNode.java
+++ b/src/main/java/jadx/dex/nodes/MethodNode.java
@@ -8,6 +8,7 @@ import jadx.dex.info.AccessInfo.AFType;
import jadx.dex.info.ClassInfo;
import jadx.dex.info.MethodInfo;
import jadx.dex.instructions.GotoNode;
+import jadx.dex.instructions.IfNode;
import jadx.dex.instructions.InsnDecoder;
import jadx.dex.instructions.SwitchNode;
import jadx.dex.instructions.args.ArgType;
@@ -27,9 +28,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.android.dx.io.ClassData.Method;
import com.android.dx.io.Code;
import com.android.dx.io.Code.CatchHandler;
@@ -37,8 +35,6 @@ import com.android.dx.io.Code.Try;
public class MethodNode extends AttrNode implements ILoadable {
- private final static Logger LOG = LoggerFactory.getLogger(MethodNode.class);
-
private final MethodInfo mthInfo;
private final ClassNode parentClass;
private final AccessInfo accFlags;
@@ -259,23 +255,24 @@ public class MethodNode extends AttrNode implements ILoadable {
case SWITCH: {
SwitchNode sw = (SwitchNode) insn;
for (int target : sw.getTargets()) {
- insnByOffset[target].getAttributes().add(new JumpAttribute(offset, target));
+ addJump(insnByOffset, offset, target);
}
// default case
int next = InsnDecoder.getNextInsnOffset(insnByOffset, offset);
if (next != -1)
- insnByOffset[next].getAttributes().add(new JumpAttribute(offset, next));
+ addJump(insnByOffset, offset, next);
break;
}
case IF:
int next = InsnDecoder.getNextInsnOffset(insnByOffset, offset);
if (next != -1)
- insnByOffset[next].getAttributes().add(new JumpAttribute(offset, next));
- // no break
+ addJump(insnByOffset, offset, next);
+ addJump(insnByOffset, offset, ((IfNode) insn).getTarget());
+ break;
+
case GOTO:
- int target = ((GotoNode) insn).getTarget();
- insnByOffset[target].getAttributes().add(new JumpAttribute(offset, target));
+ addJump(insnByOffset, offset, ((GotoNode) insn).getTarget());
break;
default:
@@ -284,6 +281,10 @@ public class MethodNode extends AttrNode implements ILoadable {
}
}
+ private static void addJump(InsnNode[] insnByOffset, int offset, int target) {
+ insnByOffset[target].getAttributes().add(new JumpAttribute(offset, target));
+ }
+
public String getName() {
String name = mthInfo.getName();
if (name.equals(parentClass.getShortName()))
diff --git a/src/main/java/jadx/dex/nodes/RootNode.java b/src/main/java/jadx/dex/nodes/RootNode.java
index 701297c08..9934b9d7a 100644
--- a/src/main/java/jadx/dex/nodes/RootNode.java
+++ b/src/main/java/jadx/dex/nodes/RootNode.java
@@ -16,7 +16,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RootNode {
- private final static Logger LOG = LoggerFactory.getLogger(RootNode.class);
+ private static final Logger LOG = LoggerFactory.getLogger(RootNode.class);
private final JadxArgs jadxArgs;
diff --git a/src/main/java/jadx/dex/nodes/parser/AnnotationsParser.java b/src/main/java/jadx/dex/nodes/parser/AnnotationsParser.java
index 8a7cd8ced..b7a465c43 100644
--- a/src/main/java/jadx/dex/nodes/parser/AnnotationsParser.java
+++ b/src/main/java/jadx/dex/nodes/parser/AnnotationsParser.java
@@ -15,15 +15,10 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.android.dx.io.DexBuffer.Section;
public class AnnotationsParser {
- private final static Logger LOG = LoggerFactory.getLogger(AnnotationsParser.class);
-
private final DexNode dex;
public AnnotationsParser(ClassNode cls, int offset) throws DecodeException {
@@ -74,7 +69,6 @@ public class AnnotationsParser {
Section anSection = dex.openSection(section.readInt());
Annotation a = readAnnotation(dex, anSection, true);
list.add(a);
- // LOG.debug(" + " + a);
}
return new AnnotationsList(list);
}
diff --git a/src/main/java/jadx/dex/nodes/parser/DebugInfoParser.java b/src/main/java/jadx/dex/nodes/parser/DebugInfoParser.java
index c7a6e2dea..0f231a61e 100644
--- a/src/main/java/jadx/dex/nodes/parser/DebugInfoParser.java
+++ b/src/main/java/jadx/dex/nodes/parser/DebugInfoParser.java
@@ -14,20 +14,20 @@ import com.android.dx.io.DexBuffer.Section;
public class DebugInfoParser {
- private final static int DBG_END_SEQUENCE = 0x00;
- private final static int DBG_ADVANCE_PC = 0x01;
- private final static int DBG_ADVANCE_LINE = 0x02;
- private final static int DBG_START_LOCAL = 0x03;
- private final static int DBG_START_LOCAL_EXTENDED = 0x04;
- private final static int DBG_END_LOCAL = 0x05;
- private final static int DBG_RESTART_LOCAL = 0x06;
- private final static int DBG_SET_PROLOGUE_END = 0x07;
- private final static int DBG_SET_EPILOGUE_BEGIN = 0x08;
- private final static int DBG_SET_FILE = 0x09;
+ private static final int DBG_END_SEQUENCE = 0x00;
+ private static final int DBG_ADVANCE_PC = 0x01;
+ private static final int DBG_ADVANCE_LINE = 0x02;
+ private static final int DBG_START_LOCAL = 0x03;
+ private static final int DBG_START_LOCAL_EXTENDED = 0x04;
+ private static final int DBG_END_LOCAL = 0x05;
+ private static final int DBG_RESTART_LOCAL = 0x06;
+ private static final int DBG_SET_PROLOGUE_END = 0x07;
+ private static final int DBG_SET_EPILOGUE_BEGIN = 0x08;
+ private static final int DBG_SET_FILE = 0x09;
- private final static int DBG_FIRST_SPECIAL = 0x0a; // the smallest special opcode
- private final static int DBG_LINE_BASE = -4; // the smallest line number increment
- private final static int DBG_LINE_RANGE = 15; // the number of line increments represented
+ private static final int DBG_FIRST_SPECIAL = 0x0a; // the smallest special opcode
+ private static final int DBG_LINE_BASE = -4; // the smallest line number increment
+ private static final int DBG_LINE_RANGE = 15; // the number of line increments represented
private final MethodNode mth;
private final Section section;
diff --git a/src/main/java/jadx/dex/visitors/BlockMakerVisitor.java b/src/main/java/jadx/dex/visitors/BlockMakerVisitor.java
index de9dc64a2..31e4fd559 100644
--- a/src/main/java/jadx/dex/visitors/BlockMakerVisitor.java
+++ b/src/main/java/jadx/dex/visitors/BlockMakerVisitor.java
@@ -26,26 +26,30 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
public class BlockMakerVisitor extends AbstractVisitor {
- private final static Logger LOG = LoggerFactory.getLogger(BlockMakerVisitor.class);
// leave these instructions alone in block node
- private final static Set separateInsns = EnumSet.of(
+ private static final Set separateInsns = EnumSet.of(
InsnType.IF,
InsnType.SWITCH,
InsnType.MONITOR_ENTER,
InsnType.MONITOR_EXIT);
+ private static int nextBlockId;
+
@Override
public void visit(MethodNode mth) {
if (mth.isNoCode())
return;
mth.initBasicBlocks();
- BlockNode.initialID = 0;
+ makeBasicBlocks(mth);
+ BlockProcessingHelper.visit(mth);
+ mth.finishBasicBlocks();
+ }
+
+ private static void makeBasicBlocks(MethodNode mth) {
+ nextBlockId = 0;
InsnNode prevInsn = null;
Map blocksMap = new HashMap();
@@ -179,10 +183,6 @@ public class BlockMakerVisitor extends AbstractVisitor {
if (i > 100)
throw new AssertionError("Can't fix method cfg: " + mth);
}
-
- BlockProcessingHelper.visit(mth);
-
- mth.finishBasicBlocks();
}
private static BlockNode getBlock(MethodNode mth, int offset, Map blocksMap) {
@@ -204,7 +204,7 @@ public class BlockMakerVisitor extends AbstractVisitor {
}
private static BlockNode startNewBlock(MethodNode mth, int offset) {
- BlockNode block = new BlockNode(mth, offset);
+ BlockNode block = new BlockNode(mth, ++nextBlockId, offset);
mth.getBasicBlocks().add(block);
return block;
}
@@ -337,7 +337,7 @@ public class BlockMakerVisitor extends AbstractVisitor {
}
}
- // splice return block
+ // splice return block if several precessors presents
if (block.getAttributes().contains(AttributeFlag.RETURN)
&& block.getPredecessors().size() > 1
&& !block.getInstructions().get(0).getAttributes().contains(AttributeType.CATCH_BLOCK)) {
@@ -377,7 +377,7 @@ public class BlockMakerVisitor extends AbstractVisitor {
return false;
}
- private void cleanDomTree(MethodNode mth) {
+ private static void cleanDomTree(MethodNode mth) {
for (BlockNode block : mth.getBasicBlocks()) {
AttributesList attrs = block.getAttributes();
attrs.remove(AttributeType.LOOP);
diff --git a/src/main/java/jadx/dex/visitors/CodeShrinker.java b/src/main/java/jadx/dex/visitors/CodeShrinker.java
index 8f0805d41..effd6c743 100644
--- a/src/main/java/jadx/dex/visitors/CodeShrinker.java
+++ b/src/main/java/jadx/dex/visitors/CodeShrinker.java
@@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory;
public class CodeShrinker extends AbstractVisitor {
- private final static Logger LOG = LoggerFactory.getLogger(CodeShrinker.class);
+ private static final Logger LOG = LoggerFactory.getLogger(CodeShrinker.class);
@Override
public void visit(MethodNode mth) {
@@ -186,12 +186,12 @@ public class CodeShrinker extends AbstractVisitor {
rarg.wrapInstruction(ai);
}
// remove method args
- if (list.size() != 0 & args.size() != 0) {
+ if (list.size() != 0 && args.size() != 0) {
list.removeAll(args);
}
i++;
if (i > 10000)
- throw new JadxRuntimeException("Can't inline arguments for: " + arg + " insn:" + assignInsn);
+ throw new JadxRuntimeException("Can't inline arguments for: " + arg + " insn: " + assignInsn);
} while (!list.isEmpty());
return arg.wrapInstruction(assignInsn);
diff --git a/src/main/java/jadx/dex/visitors/EnumVisitor.java b/src/main/java/jadx/dex/visitors/EnumVisitor.java
index 74b87c584..4f3386a76 100644
--- a/src/main/java/jadx/dex/visitors/EnumVisitor.java
+++ b/src/main/java/jadx/dex/visitors/EnumVisitor.java
@@ -104,7 +104,7 @@ public class EnumVisitor extends AbstractVisitor {
continue;
RegisterArg nameArg = (RegisterArg) insn.getArg(0);
- InsnArg pos = insn.getArg(1);
+ // InsnArg pos = insn.getArg(1);
// TODO add check: pos == j
String name = (String) nameArg.getConstValue();
diff --git a/src/main/java/jadx/dex/visitors/ModVisitor.java b/src/main/java/jadx/dex/visitors/ModVisitor.java
index 9611fbefa..69d699f74 100644
--- a/src/main/java/jadx/dex/visitors/ModVisitor.java
+++ b/src/main/java/jadx/dex/visitors/ModVisitor.java
@@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory;
* (remove, replace, process exception handlers)
*/
public class ModVisitor extends AbstractVisitor {
- private final static Logger LOG = LoggerFactory.getLogger(ModVisitor.class);
+ private static final Logger LOG = LoggerFactory.getLogger(ModVisitor.class);
@Override
public void visit(MethodNode mth) {
diff --git a/src/main/java/jadx/dex/visitors/regions/MarkTryCatchRegions.java b/src/main/java/jadx/dex/visitors/regions/MarkTryCatchRegions.java
index 09bcea36b..2c63ab6dd 100644
--- a/src/main/java/jadx/dex/visitors/regions/MarkTryCatchRegions.java
+++ b/src/main/java/jadx/dex/visitors/regions/MarkTryCatchRegions.java
@@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory;
* Extract blocks to separate try/catch region
*/
public class MarkTryCatchRegions extends AbstractRegionVisitor {
- private final static Logger LOG = LoggerFactory.getLogger(MarkTryCatchRegions.class);
- private final static boolean DEBUG = false;
+ private static final Logger LOG = LoggerFactory.getLogger(MarkTryCatchRegions.class);
+ private static final boolean DEBUG = false;
static {
if (DEBUG)
diff --git a/src/main/java/jadx/dex/visitors/regions/PostRegionVisitor.java b/src/main/java/jadx/dex/visitors/regions/PostRegionVisitor.java
index 19800237a..cb34efdb4 100644
--- a/src/main/java/jadx/dex/visitors/regions/PostRegionVisitor.java
+++ b/src/main/java/jadx/dex/visitors/regions/PostRegionVisitor.java
@@ -12,11 +12,7 @@ import jadx.utils.exceptions.JadxException;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
public class PostRegionVisitor extends AbstractVisitor {
- private final static Logger LOG = LoggerFactory.getLogger(PostRegionVisitor.class);
@Override
public void visit(MethodNode mth) throws JadxException {
@@ -24,10 +20,9 @@ public class PostRegionVisitor extends AbstractVisitor {
return;
DepthRegionTraverser.traverse(mth, new MarkTryCatchRegions(mth), mth.getRegion());
-
DepthRegionTraverser.traverse(mth, new FinishRegions(), mth.getRegion());
- // removeReturn(mth);
+ removeReturn(mth);
}
/**
diff --git a/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java b/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java
index fe1ed48f2..4c09efeb8 100644
--- a/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java
+++ b/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java
@@ -25,7 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ProcessVariables extends AbstractVisitor {
- private final static Logger LOG = LoggerFactory.getLogger(ProcessVariables.class);
+ private static final Logger LOG = LoggerFactory.getLogger(ProcessVariables.class);
private static class Usage {
private RegisterArg arg;
diff --git a/src/main/java/jadx/dex/visitors/regions/RegionMaker.java b/src/main/java/jadx/dex/visitors/regions/RegionMaker.java
index 637006818..0b795aae2 100644
--- a/src/main/java/jadx/dex/visitors/regions/RegionMaker.java
+++ b/src/main/java/jadx/dex/visitors/regions/RegionMaker.java
@@ -38,7 +38,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RegionMaker {
- private final static Logger LOG = LoggerFactory.getLogger(RegionMaker.class);
+ private static final Logger LOG = LoggerFactory.getLogger(RegionMaker.class);
private final MethodNode mth;
@@ -247,7 +247,7 @@ public class RegionMaker {
return out;
}
- private final static Set cacheSet = new HashSet();
+ private static final Set cacheSet = new HashSet();
private BlockNode processMonitorEnter(IRegion curRegion, BlockNode block, InsnNode insn, RegionStack stack) {
RegisterArg arg = (RegisterArg) insn.getArg(0);
diff --git a/src/main/java/jadx/dex/visitors/regions/RegionStack.java b/src/main/java/jadx/dex/visitors/regions/RegionStack.java
index bec8f50a5..d19eb72ea 100644
--- a/src/main/java/jadx/dex/visitors/regions/RegionStack.java
+++ b/src/main/java/jadx/dex/visitors/regions/RegionStack.java
@@ -12,8 +12,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RegionStack {
- private final static Logger LOG = LoggerFactory.getLogger(RegionStack.class);
- private final static boolean DEBUG = false;
+ private static final Logger LOG = LoggerFactory.getLogger(RegionStack.class);
+ private static final boolean DEBUG = false;
static {
if (DEBUG)
diff --git a/src/main/java/jadx/dex/visitors/typeresolver/finish/CheckTypeVisitor.java b/src/main/java/jadx/dex/visitors/typeresolver/finish/CheckTypeVisitor.java
index 3676b5ce1..3cb218b9e 100644
--- a/src/main/java/jadx/dex/visitors/typeresolver/finish/CheckTypeVisitor.java
+++ b/src/main/java/jadx/dex/visitors/typeresolver/finish/CheckTypeVisitor.java
@@ -5,11 +5,7 @@ import jadx.dex.nodes.InsnNode;
import jadx.dex.nodes.MethodNode;
import jadx.utils.ErrorsCounter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
public class CheckTypeVisitor {
- private final static Logger LOG = LoggerFactory.getLogger(CheckTypeVisitor.class);
public static void visit(MethodNode mth, InsnNode insn) {
if (insn.getResult() != null) {
@@ -28,7 +24,6 @@ public class CheckTypeVisitor {
}
private static void error(String msg, MethodNode mth, InsnNode insn) {
- // LOG.warn(msg + ": " + insn + " " + insn.getMethod());
ErrorsCounter.methodError(mth, msg + ": " + insn);
}
}
diff --git a/src/main/java/jadx/utils/BlockUtils.java b/src/main/java/jadx/utils/BlockUtils.java
index ede78e105..3e5b13091 100644
--- a/src/main/java/jadx/utils/BlockUtils.java
+++ b/src/main/java/jadx/utils/BlockUtils.java
@@ -166,19 +166,6 @@ public class BlockUtils {
return false;
}
- private static boolean addPredcessorsUntil(Set set, BlockNode from, BlockNode until) {
- set.add(from);
- for (BlockNode pred : from.getPredecessors()) {
- if (pred == until)
- return true;
- if (pred != until && !set.contains(pred)) {
- if (addPredcessorsUntil(set, pred, until))
- return true;
- }
- }
- return false;
- }
-
public static boolean isPathExists(BlockNode start, BlockNode end) {
if (start == end)
return true;
diff --git a/src/main/java/jadx/utils/ErrorsCounter.java b/src/main/java/jadx/utils/ErrorsCounter.java
index 4022ed321..4e0b9f8b6 100644
--- a/src/main/java/jadx/utils/ErrorsCounter.java
+++ b/src/main/java/jadx/utils/ErrorsCounter.java
@@ -12,9 +12,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class ErrorsCounter {
- private final static Logger LOG = LoggerFactory.getLogger(ErrorsCounter.class);
+ private static final Logger LOG = LoggerFactory.getLogger(ErrorsCounter.class);
- private final static Set