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 errorNodes = new HashSet(); + private static final Set errorNodes = new HashSet(); private static int errorsCount = 0; public static int getErrorCount() { diff --git a/src/main/java/jadx/utils/Utils.java b/src/main/java/jadx/utils/Utils.java index 50da859ce..6ca2ec636 100644 --- a/src/main/java/jadx/utils/Utils.java +++ b/src/main/java/jadx/utils/Utils.java @@ -1,6 +1,5 @@ package jadx.utils; -import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Iterator; @@ -39,19 +38,6 @@ public class Utils { return str.toString(); } - public static boolean deleteFolder(File dir) { - File[] files = dir.listFiles(); - if (files != null) { - for (File f : files) { - if (f.isDirectory()) - deleteFolder(f); - else - f.delete(); - } - } - return dir.delete(); - } - public static String getStackTrace(Throwable throwable) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw, true); diff --git a/src/main/java/jadx/utils/files/InputFile.java b/src/main/java/jadx/utils/files/InputFile.java index 84f7ba98e..7472c6385 100644 --- a/src/main/java/jadx/utils/files/InputFile.java +++ b/src/main/java/jadx/utils/files/InputFile.java @@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; import com.android.dx.io.DexBuffer; public class InputFile { - private final static Logger LOG = LoggerFactory.getLogger(InputFile.class); + private static final Logger LOG = LoggerFactory.getLogger(InputFile.class); private final File file; private final DexBuffer dexBuf; diff --git a/src/samples/java/jadx/samples/TestFields.java b/src/samples/java/jadx/samples/TestFields.java index 098c970b1..f1c2644a0 100644 --- a/src/samples/java/jadx/samples/TestFields.java +++ b/src/samples/java/jadx/samples/TestFields.java @@ -4,15 +4,15 @@ import java.util.Arrays; public class TestFields extends AbstractTest { - private final static boolean fbz = false; - private final static boolean fb = true; - private final static int fi = 5; - private final static int fiz = 0; + private static final boolean fbz = false; + private static final boolean fb = true; + private static final int fi = 5; + private static final int fiz = 0; - private final static String fstr = "final string"; + private static final String fstr = "final string"; - private final static double fd = 3.14; - private final static double[] fda = new double[] { 3.14, 2.7 }; + private static final double fd = 3.14; + private static final double[] fda = new double[] { 3.14, 2.7 }; private static int si = 5; diff --git a/src/test/java/jadx/tests/TypeMergeTest.java b/src/test/java/jadx/tests/TypeMergeTest.java index 25764a9f5..d91b3e3b1 100644 --- a/src/test/java/jadx/tests/TypeMergeTest.java +++ b/src/test/java/jadx/tests/TypeMergeTest.java @@ -62,11 +62,12 @@ public class TypeMergeTest extends TestCase { private void merge(ArgType t1, ArgType t2, ArgType exp) { ArgType res = ArgType.merge(t1, t2); + String msg = format(t1, t2, exp, res); if (exp == null) { - assertNull("Incorrect accept: " + format(t1, t2, exp, res), res); + assertNull("Incorrect accept: " + msg, res); } else { - assertNotNull("Incorrect reject: " + format(t1, t2, exp, res), res); - assertTrue("Incorrect result: " + format(t1, t2, exp, res), exp.equals(res)); + assertNotNull("Incorrect reject: " + msg, res); + assertTrue("Incorrect result: " + msg, exp.equals(res)); } }