Commit d3c2496f authored by Skylot's avatar Skylot

Code clean up

parent baa14e9d
...@@ -19,7 +19,7 @@ import com.beust.jcommander.ParameterDescription; ...@@ -19,7 +19,7 @@ import com.beust.jcommander.ParameterDescription;
import com.beust.jcommander.ParameterException; import com.beust.jcommander.ParameterException;
public class JadxArgs { public class JadxArgs {
private final static Logger LOG = LoggerFactory.getLogger(JadxArgs.class); private static final Logger LOG = LoggerFactory.getLogger(JadxArgs.class);
@Parameter(description = "<input files> (.dex, .apk, .jar or .class)", required = true) @Parameter(description = "<input files> (.dex, .apk, .jar or .class)", required = true)
protected List<String> files; protected List<String> files;
......
...@@ -11,7 +11,7 @@ import org.slf4j.Logger; ...@@ -11,7 +11,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
class ProcessClass implements Runnable { 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 ClassNode cls;
private final List<IDexTreeVisitor> passes; private final List<IDexTreeVisitor> passes;
......
...@@ -24,14 +24,9 @@ import java.util.Iterator; ...@@ -24,14 +24,9 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.android.dx.rop.code.AccessFlags; import com.android.dx.rop.code.AccessFlags;
public class ClassGen { public class ClassGen {
private final static Logger LOG = LoggerFactory.getLogger(ClassGen.class);
private final ClassNode cls; private final ClassNode cls;
private final ClassGen parentGen; private final ClassGen parentGen;
private final AnnotationGen annotationGen; private final AnnotationGen annotationGen;
......
...@@ -3,18 +3,17 @@ package jadx.codegen; ...@@ -3,18 +3,17 @@ package jadx.codegen;
import jadx.utils.exceptions.JadxRuntimeException; import jadx.utils.exceptions.JadxRuntimeException;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter; import java.io.PrintWriter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class CodeWriter { 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; private static final int MAX_FILENAME_LENGTH = 128;
public final static String NL = System.getProperty("line.separator"); public static final String NL = System.getProperty("line.separator");
public final static String INDENT = "\t"; public static final String INDENT = "\t";
private StringBuilder buf = new StringBuilder(); private StringBuilder buf = new StringBuilder();
private String indentStr; private String indentStr;
...@@ -155,11 +154,11 @@ public class CodeWriter { ...@@ -155,11 +154,11 @@ public class CodeWriter {
PrintWriter out = null; PrintWriter out = null;
try { try {
makeDirsForFile(file); makeDirsForFile(file);
out = new PrintWriter(file); out = new PrintWriter(file, "UTF-8");
String code = buf.toString(); String code = buf.toString();
code = removeFirstEmptyLine(code); code = removeFirstEmptyLine(code);
out.print(code); out.print(code);
} catch (FileNotFoundException e) { } catch (Exception e) {
LOG.error("Save file error", e); LOG.error("Save file error", e);
} finally { } finally {
if (out != null) if (out != null)
......
...@@ -33,7 +33,7 @@ import org.slf4j.Logger; ...@@ -33,7 +33,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class InsnGen { 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 MethodGen mgen;
protected final MethodNode mth; protected final MethodNode mth;
......
...@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory; ...@@ -34,7 +34,7 @@ import org.slf4j.LoggerFactory;
import com.android.dx.rop.code.AccessFlags; import com.android.dx.rop.code.AccessFlags;
public class MethodGen { 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 MethodNode mth;
private final Set<String> mthArgsDecls; private final Set<String> mthArgsDecls;
......
...@@ -35,7 +35,7 @@ import org.slf4j.Logger; ...@@ -35,7 +35,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class RegionGen extends InsnGen { 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) { public RegionGen(MethodGen mgen, MethodNode mth) {
super(mgen, mth, false); super(mgen, mth, false);
......
...@@ -5,12 +5,8 @@ import jadx.dex.instructions.args.RegisterArg; ...@@ -5,12 +5,8 @@ import jadx.dex.instructions.args.RegisterArg;
import jadx.dex.instructions.args.TypedVar; import jadx.dex.instructions.args.TypedVar;
import jadx.dex.nodes.DexNode; import jadx.dex.nodes.DexNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class LocalVarInfo extends RegisterArg { public class LocalVarInfo extends RegisterArg {
private final static Logger LOG = LoggerFactory.getLogger(LocalVarInfo.class);
private boolean isEnd; private boolean isEnd;
public LocalVarInfo(DexNode dex, int rn, int nameId, int typeId, int signId) { public LocalVarInfo(DexNode dex, int rn, int nameId, int typeId, int signId) {
...@@ -31,8 +27,6 @@ public class LocalVarInfo extends RegisterArg { ...@@ -31,8 +27,6 @@ public class LocalVarInfo extends RegisterArg {
TypedVar tv = new TypedVar(type); TypedVar tv = new TypedVar(type);
tv.setName(name); tv.setName(name);
setTypedVar(tv); setTypedVar(tv);
// LOG.trace("local var: {}, sign: {}", tv, sign);
} }
public void start(int addr, int line) { public void start(int addr, int line) {
......
...@@ -10,9 +10,6 @@ import jadx.dex.nodes.InsnNode; ...@@ -10,9 +10,6 @@ import jadx.dex.nodes.InsnNode;
import jadx.dex.nodes.MethodNode; import jadx.dex.nodes.MethodNode;
import jadx.utils.exceptions.DecodeException; import jadx.utils.exceptions.DecodeException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.android.dx.io.Code; import com.android.dx.io.Code;
import com.android.dx.io.OpcodeInfo; import com.android.dx.io.OpcodeInfo;
import com.android.dx.io.Opcodes; import com.android.dx.io.Opcodes;
...@@ -23,8 +20,6 @@ import com.android.dx.io.instructions.SparseSwitchPayloadDecodedInstruction; ...@@ -23,8 +20,6 @@ import com.android.dx.io.instructions.SparseSwitchPayloadDecodedInstruction;
public class InsnDecoder { public class InsnDecoder {
private final static Logger LOG = LoggerFactory.getLogger(InsnDecoder.class);
private final MethodNode method; private final MethodNode method;
private final DecodedInstruction[] insnArr; private final DecodedInstruction[] insnArr;
private final DexNode dex; private final DexNode dex;
...@@ -35,25 +30,20 @@ public class InsnDecoder { ...@@ -35,25 +30,20 @@ public class InsnDecoder {
this.insnArr = DecodedInstruction.decodeAll(mthCode.getInstructions()); this.insnArr = DecodedInstruction.decodeAll(mthCode.getInstructions());
} }
public InsnNode[] run() { public InsnNode[] run() throws DecodeException {
InsnNode[] instructions = new InsnNode[insnArr.length]; InsnNode[] instructions = new InsnNode[insnArr.length];
for (int i = 0; i < insnArr.length; i++) { for (int i = 0; i < insnArr.length; i++) {
try { DecodedInstruction rawInsn = insnArr[i];
DecodedInstruction rawInsn = insnArr[i]; if (rawInsn != null) {
if (rawInsn != null) { InsnNode insn = decode(rawInsn, i);
InsnNode insn = decode(rawInsn, i); if (insn != null) {
if (insn != null) { insn.setOffset(i);
insn.setOffset(i); insn.setInsnHashCode(calcHashCode(rawInsn));
insn.setInsnHashCode(calcHashCode(rawInsn));
}
instructions[i] = insn;
} else {
instructions[i] = null;
} }
} catch (DecodeException e) { instructions[i] = insn;
LOG.error("Instruction decode error", e); } else {
System.exit(1); instructions[i] = null;
} }
} }
return instructions; return instructions;
......
...@@ -20,9 +20,9 @@ public class TypedVar { ...@@ -20,9 +20,9 @@ public class TypedVar {
/** /**
* This method must be used very carefully * This method must be used very carefully
*/ */
public boolean forceSetType(ArgType type) { public boolean forceSetType(ArgType newType) {
if (type != null && !type.equals(type)) { if (newType != null && !type.equals(newType)) {
this.type = type; type = newType;
return true; return true;
} else { } else {
return false; return false;
......
...@@ -13,6 +13,7 @@ import java.util.List; ...@@ -13,6 +13,7 @@ import java.util.List;
public class BlockNode extends AttrNode implements IBlock { public class BlockNode extends AttrNode implements IBlock {
private int id;
private final int startOffset; private final int startOffset;
private final List<InsnNode> instructions = new ArrayList<InsnNode>(2); private final List<InsnNode> instructions = new ArrayList<InsnNode>(2);
...@@ -26,12 +27,9 @@ public class BlockNode extends AttrNode implements IBlock { ...@@ -26,12 +27,9 @@ public class BlockNode extends AttrNode implements IBlock {
private BlockRegState startState; private BlockRegState startState;
private BlockRegState endState; private BlockRegState endState;
private int id; public BlockNode(MethodNode mth, int id, int offset) {
public static int initialID; this.id = id;
public BlockNode(MethodNode mth, int offset) {
this.startOffset = offset; this.startOffset = offset;
this.id = ++initialID;
} }
public void setId(int id) { public void setId(int id) {
......
...@@ -32,7 +32,7 @@ import com.android.dx.io.ClassDef; ...@@ -32,7 +32,7 @@ import com.android.dx.io.ClassDef;
public class ClassNode extends AttrNode implements ILoadable { 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 DexNode dex;
private final ClassInfo clsInfo; private final ClassInfo clsInfo;
......
...@@ -23,7 +23,7 @@ import com.android.dx.merge.TypeList; ...@@ -23,7 +23,7 @@ import com.android.dx.merge.TypeList;
public class DexNode { public class DexNode {
public final static int NO_INDEX = -1; public static final int NO_INDEX = -1;
private final RootNode root; private final RootNode root;
private final DexBuffer dexBuf; private final DexBuffer dexBuf;
......
...@@ -148,6 +148,7 @@ public class InsnNode extends AttrNode { ...@@ -148,6 +148,7 @@ public class InsnNode extends AttrNode {
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (this == obj) return true; if (this == obj) return true;
if (obj == null) return false;
if (hashCode() != obj.hashCode()) return false; if (hashCode() != obj.hashCode()) return false;
if (!(obj instanceof InsnNode)) return false; if (!(obj instanceof InsnNode)) return false;
......
...@@ -8,6 +8,7 @@ import jadx.dex.info.AccessInfo.AFType; ...@@ -8,6 +8,7 @@ import jadx.dex.info.AccessInfo.AFType;
import jadx.dex.info.ClassInfo; import jadx.dex.info.ClassInfo;
import jadx.dex.info.MethodInfo; import jadx.dex.info.MethodInfo;
import jadx.dex.instructions.GotoNode; import jadx.dex.instructions.GotoNode;
import jadx.dex.instructions.IfNode;
import jadx.dex.instructions.InsnDecoder; import jadx.dex.instructions.InsnDecoder;
import jadx.dex.instructions.SwitchNode; import jadx.dex.instructions.SwitchNode;
import jadx.dex.instructions.args.ArgType; import jadx.dex.instructions.args.ArgType;
...@@ -27,9 +28,6 @@ import java.util.HashSet; ...@@ -27,9 +28,6 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.android.dx.io.ClassData.Method; import com.android.dx.io.ClassData.Method;
import com.android.dx.io.Code; import com.android.dx.io.Code;
import com.android.dx.io.Code.CatchHandler; import com.android.dx.io.Code.CatchHandler;
...@@ -37,8 +35,6 @@ import com.android.dx.io.Code.Try; ...@@ -37,8 +35,6 @@ import com.android.dx.io.Code.Try;
public class MethodNode extends AttrNode implements ILoadable { public class MethodNode extends AttrNode implements ILoadable {
private final static Logger LOG = LoggerFactory.getLogger(MethodNode.class);
private final MethodInfo mthInfo; private final MethodInfo mthInfo;
private final ClassNode parentClass; private final ClassNode parentClass;
private final AccessInfo accFlags; private final AccessInfo accFlags;
...@@ -259,23 +255,24 @@ public class MethodNode extends AttrNode implements ILoadable { ...@@ -259,23 +255,24 @@ public class MethodNode extends AttrNode implements ILoadable {
case SWITCH: { case SWITCH: {
SwitchNode sw = (SwitchNode) insn; SwitchNode sw = (SwitchNode) insn;
for (int target : sw.getTargets()) { for (int target : sw.getTargets()) {
insnByOffset[target].getAttributes().add(new JumpAttribute(offset, target)); addJump(insnByOffset, offset, target);
} }
// default case // default case
int next = InsnDecoder.getNextInsnOffset(insnByOffset, offset); int next = InsnDecoder.getNextInsnOffset(insnByOffset, offset);
if (next != -1) if (next != -1)
insnByOffset[next].getAttributes().add(new JumpAttribute(offset, next)); addJump(insnByOffset, offset, next);
break; break;
} }
case IF: case IF:
int next = InsnDecoder.getNextInsnOffset(insnByOffset, offset); int next = InsnDecoder.getNextInsnOffset(insnByOffset, offset);
if (next != -1) if (next != -1)
insnByOffset[next].getAttributes().add(new JumpAttribute(offset, next)); addJump(insnByOffset, offset, next);
// no break addJump(insnByOffset, offset, ((IfNode) insn).getTarget());
break;
case GOTO: case GOTO:
int target = ((GotoNode) insn).getTarget(); addJump(insnByOffset, offset, ((GotoNode) insn).getTarget());
insnByOffset[target].getAttributes().add(new JumpAttribute(offset, target));
break; break;
default: default:
...@@ -284,6 +281,10 @@ public class MethodNode extends AttrNode implements ILoadable { ...@@ -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() { public String getName() {
String name = mthInfo.getName(); String name = mthInfo.getName();
if (name.equals(parentClass.getShortName())) if (name.equals(parentClass.getShortName()))
......
...@@ -16,7 +16,7 @@ import org.slf4j.Logger; ...@@ -16,7 +16,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class RootNode { 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; private final JadxArgs jadxArgs;
......
...@@ -15,15 +15,10 @@ import java.util.HashMap; ...@@ -15,15 +15,10 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.android.dx.io.DexBuffer.Section; import com.android.dx.io.DexBuffer.Section;
public class AnnotationsParser { public class AnnotationsParser {
private final static Logger LOG = LoggerFactory.getLogger(AnnotationsParser.class);
private final DexNode dex; private final DexNode dex;
public AnnotationsParser(ClassNode cls, int offset) throws DecodeException { public AnnotationsParser(ClassNode cls, int offset) throws DecodeException {
...@@ -74,7 +69,6 @@ public class AnnotationsParser { ...@@ -74,7 +69,6 @@ public class AnnotationsParser {
Section anSection = dex.openSection(section.readInt()); Section anSection = dex.openSection(section.readInt());
Annotation a = readAnnotation(dex, anSection, true); Annotation a = readAnnotation(dex, anSection, true);
list.add(a); list.add(a);
// LOG.debug(" + " + a);
} }
return new AnnotationsList(list); return new AnnotationsList(list);
} }
......
...@@ -14,20 +14,20 @@ import com.android.dx.io.DexBuffer.Section; ...@@ -14,20 +14,20 @@ import com.android.dx.io.DexBuffer.Section;
public class DebugInfoParser { public class DebugInfoParser {
private final static int DBG_END_SEQUENCE = 0x00; private static final int DBG_END_SEQUENCE = 0x00;
private final static int DBG_ADVANCE_PC = 0x01; private static final int DBG_ADVANCE_PC = 0x01;
private final static int DBG_ADVANCE_LINE = 0x02; private static final int DBG_ADVANCE_LINE = 0x02;
private final static int DBG_START_LOCAL = 0x03; private static final int DBG_START_LOCAL = 0x03;
private final static int DBG_START_LOCAL_EXTENDED = 0x04; private static final int DBG_START_LOCAL_EXTENDED = 0x04;
private final static int DBG_END_LOCAL = 0x05; private static final int DBG_END_LOCAL = 0x05;
private final static int DBG_RESTART_LOCAL = 0x06; private static final int DBG_RESTART_LOCAL = 0x06;
private final static int DBG_SET_PROLOGUE_END = 0x07; private static final int DBG_SET_PROLOGUE_END = 0x07;
private final static int DBG_SET_EPILOGUE_BEGIN = 0x08; private static final int DBG_SET_EPILOGUE_BEGIN = 0x08;
private final static int DBG_SET_FILE = 0x09; private static final int DBG_SET_FILE = 0x09;
private final static int DBG_FIRST_SPECIAL = 0x0a; // the smallest special opcode private static final int DBG_FIRST_SPECIAL = 0x0a; // the smallest special opcode
private final static int DBG_LINE_BASE = -4; // the smallest line number increment private static final 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_LINE_RANGE = 15; // the number of line increments represented
private final MethodNode mth; private final MethodNode mth;
private final Section section; private final Section section;
......
...@@ -26,26 +26,30 @@ import java.util.List; ...@@ -26,26 +26,30 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BlockMakerVisitor extends AbstractVisitor { public class BlockMakerVisitor extends AbstractVisitor {
private final static Logger LOG = LoggerFactory.getLogger(BlockMakerVisitor.class);
// leave these instructions alone in block node // leave these instructions alone in block node
private final static Set<InsnType> separateInsns = EnumSet.of( private static final Set<InsnType> separateInsns = EnumSet.of(
InsnType.IF, InsnType.IF,
InsnType.SWITCH, InsnType.SWITCH,
InsnType.MONITOR_ENTER, InsnType.MONITOR_ENTER,
InsnType.MONITOR_EXIT); InsnType.MONITOR_EXIT);
private static int nextBlockId;
@Override @Override
public void visit(MethodNode mth) { public void visit(MethodNode mth) {
if (mth.isNoCode()) if (mth.isNoCode())
return; return;
mth.initBasicBlocks(); mth.initBasicBlocks();
BlockNode.initialID = 0; makeBasicBlocks(mth);
BlockProcessingHelper.visit(mth);
mth.finishBasicBlocks();
}
private static void makeBasicBlocks(MethodNode mth) {
nextBlockId = 0;
InsnNode prevInsn = null; InsnNode prevInsn = null;
Map<Integer, BlockNode> blocksMap = new HashMap<Integer, BlockNode>(); Map<Integer, BlockNode> blocksMap = new HashMap<Integer, BlockNode>();
...@@ -179,10 +183,6 @@ public class BlockMakerVisitor extends AbstractVisitor { ...@@ -179,10 +183,6 @@ public class BlockMakerVisitor extends AbstractVisitor {
if (i > 100) if (i > 100)
throw new AssertionError("Can't fix method cfg: " + mth); throw new AssertionError("Can't fix method cfg: " + mth);
} }
BlockProcessingHelper.visit(mth);
mth.finishBasicBlocks();
} }
private static BlockNode getBlock(MethodNode mth, int offset, Map<Integer, BlockNode> blocksMap) { private static BlockNode getBlock(MethodNode mth, int offset, Map<Integer, BlockNode> blocksMap) {
...@@ -204,7 +204,7 @@ public class BlockMakerVisitor extends AbstractVisitor { ...@@ -204,7 +204,7 @@ public class BlockMakerVisitor extends AbstractVisitor {
} }
private static BlockNode startNewBlock(MethodNode mth, int offset) { 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); mth.getBasicBlocks().add(block);
return block; return block;
} }
...@@ -337,7 +337,7 @@ public class BlockMakerVisitor extends AbstractVisitor { ...@@ -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) if (block.getAttributes().contains(AttributeFlag.RETURN)
&& block.getPredecessors().size() > 1 && block.getPredecessors().size() > 1
&& !block.getInstructions().get(0).getAttributes().contains(AttributeType.CATCH_BLOCK)) { && !block.getInstructions().get(0).getAttributes().contains(AttributeType.CATCH_BLOCK)) {
...@@ -377,7 +377,7 @@ public class BlockMakerVisitor extends AbstractVisitor { ...@@ -377,7 +377,7 @@ public class BlockMakerVisitor extends AbstractVisitor {
return false; return false;
} }
private void cleanDomTree(MethodNode mth) { private static void cleanDomTree(MethodNode mth) {
for (BlockNode block : mth.getBasicBlocks()) { for (BlockNode block : mth.getBasicBlocks()) {
AttributesList attrs = block.getAttributes(); AttributesList attrs = block.getAttributes();
attrs.remove(AttributeType.LOOP); attrs.remove(AttributeType.LOOP);
......
...@@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory; ...@@ -23,7 +23,7 @@ import org.slf4j.LoggerFactory;
public class CodeShrinker extends AbstractVisitor { public class CodeShrinker extends AbstractVisitor {
private final static Logger LOG = LoggerFactory.getLogger(CodeShrinker.class); private static final Logger LOG = LoggerFactory.getLogger(CodeShrinker.class);
@Override @Override
public void visit(MethodNode mth) { public void visit(MethodNode mth) {
...@@ -186,12 +186,12 @@ public class CodeShrinker extends AbstractVisitor { ...@@ -186,12 +186,12 @@ public class CodeShrinker extends AbstractVisitor {
rarg.wrapInstruction(ai); rarg.wrapInstruction(ai);
} }
// remove method args // remove method args
if (list.size() != 0 & args.size() != 0) { if (list.size() != 0 && args.size() != 0) {
list.removeAll(args); list.removeAll(args);
} }
i++; i++;
if (i > 10000) 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()); } while (!list.isEmpty());
return arg.wrapInstruction(assignInsn); return arg.wrapInstruction(assignInsn);
......
...@@ -104,7 +104,7 @@ public class EnumVisitor extends AbstractVisitor { ...@@ -104,7 +104,7 @@ public class EnumVisitor extends AbstractVisitor {
continue; continue;
RegisterArg nameArg = (RegisterArg) insn.getArg(0); RegisterArg nameArg = (RegisterArg) insn.getArg(0);
InsnArg pos = insn.getArg(1); // InsnArg pos = insn.getArg(1);
// TODO add check: pos == j // TODO add check: pos == j
String name = (String) nameArg.getConstValue(); String name = (String) nameArg.getConstValue();
......
...@@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory; ...@@ -32,7 +32,7 @@ import org.slf4j.LoggerFactory;
* (remove, replace, process exception handlers) * (remove, replace, process exception handlers)
*/ */
public class ModVisitor extends AbstractVisitor { public class ModVisitor extends AbstractVisitor {
private final static Logger LOG = LoggerFactory.getLogger(ModVisitor.class); private static final Logger LOG = LoggerFactory.getLogger(ModVisitor.class);
@Override @Override
public void visit(MethodNode mth) { public void visit(MethodNode mth) {
......
...@@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory; ...@@ -27,8 +27,8 @@ import org.slf4j.LoggerFactory;
* Extract blocks to separate try/catch region * Extract blocks to separate try/catch region
*/ */
public class MarkTryCatchRegions extends AbstractRegionVisitor { public class MarkTryCatchRegions extends AbstractRegionVisitor {
private final static Logger LOG = LoggerFactory.getLogger(MarkTryCatchRegions.class); private static final Logger LOG = LoggerFactory.getLogger(MarkTryCatchRegions.class);
private final static boolean DEBUG = false; private static final boolean DEBUG = false;
static { static {
if (DEBUG) if (DEBUG)
......
...@@ -12,11 +12,7 @@ import jadx.utils.exceptions.JadxException; ...@@ -12,11 +12,7 @@ import jadx.utils.exceptions.JadxException;
import java.util.List; import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PostRegionVisitor extends AbstractVisitor { public class PostRegionVisitor extends AbstractVisitor {
private final static Logger LOG = LoggerFactory.getLogger(PostRegionVisitor.class);
@Override @Override
public void visit(MethodNode mth) throws JadxException { public void visit(MethodNode mth) throws JadxException {
...@@ -24,10 +20,9 @@ public class PostRegionVisitor extends AbstractVisitor { ...@@ -24,10 +20,9 @@ public class PostRegionVisitor extends AbstractVisitor {
return; return;
DepthRegionTraverser.traverse(mth, new MarkTryCatchRegions(mth), mth.getRegion()); DepthRegionTraverser.traverse(mth, new MarkTryCatchRegions(mth), mth.getRegion());
DepthRegionTraverser.traverse(mth, new FinishRegions(), mth.getRegion()); DepthRegionTraverser.traverse(mth, new FinishRegions(), mth.getRegion());
// removeReturn(mth); removeReturn(mth);
} }
/** /**
......
...@@ -25,7 +25,7 @@ import org.slf4j.Logger; ...@@ -25,7 +25,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class ProcessVariables extends AbstractVisitor { 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 static class Usage {
private RegisterArg arg; private RegisterArg arg;
......
...@@ -38,7 +38,7 @@ import org.slf4j.Logger; ...@@ -38,7 +38,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class RegionMaker { 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; private final MethodNode mth;
...@@ -247,7 +247,7 @@ public class RegionMaker { ...@@ -247,7 +247,7 @@ public class RegionMaker {
return out; return out;
} }
private final static Set<BlockNode> cacheSet = new HashSet<BlockNode>(); private static final Set<BlockNode> cacheSet = new HashSet<BlockNode>();
private BlockNode processMonitorEnter(IRegion curRegion, BlockNode block, InsnNode insn, RegionStack stack) { private BlockNode processMonitorEnter(IRegion curRegion, BlockNode block, InsnNode insn, RegionStack stack) {
RegisterArg arg = (RegisterArg) insn.getArg(0); RegisterArg arg = (RegisterArg) insn.getArg(0);
......
...@@ -12,8 +12,8 @@ import org.slf4j.Logger; ...@@ -12,8 +12,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class RegionStack { public class RegionStack {
private final static Logger LOG = LoggerFactory.getLogger(RegionStack.class); private static final Logger LOG = LoggerFactory.getLogger(RegionStack.class);
private final static boolean DEBUG = false; private static final boolean DEBUG = false;
static { static {
if (DEBUG) if (DEBUG)
......
...@@ -5,11 +5,7 @@ import jadx.dex.nodes.InsnNode; ...@@ -5,11 +5,7 @@ import jadx.dex.nodes.InsnNode;
import jadx.dex.nodes.MethodNode; import jadx.dex.nodes.MethodNode;
import jadx.utils.ErrorsCounter; import jadx.utils.ErrorsCounter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CheckTypeVisitor { public class CheckTypeVisitor {
private final static Logger LOG = LoggerFactory.getLogger(CheckTypeVisitor.class);
public static void visit(MethodNode mth, InsnNode insn) { public static void visit(MethodNode mth, InsnNode insn) {
if (insn.getResult() != null) { if (insn.getResult() != null) {
...@@ -28,7 +24,6 @@ public class CheckTypeVisitor { ...@@ -28,7 +24,6 @@ public class CheckTypeVisitor {
} }
private static void error(String msg, MethodNode mth, InsnNode insn) { private static void error(String msg, MethodNode mth, InsnNode insn) {
// LOG.warn(msg + ": " + insn + " " + insn.getMethod());
ErrorsCounter.methodError(mth, msg + ": " + insn); ErrorsCounter.methodError(mth, msg + ": " + insn);
} }
} }
...@@ -166,19 +166,6 @@ public class BlockUtils { ...@@ -166,19 +166,6 @@ public class BlockUtils {
return false; return false;
} }
private static boolean addPredcessorsUntil(Set<BlockNode> 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) { public static boolean isPathExists(BlockNode start, BlockNode end) {
if (start == end) if (start == end)
return true; return true;
......
...@@ -12,9 +12,9 @@ import org.slf4j.Logger; ...@@ -12,9 +12,9 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class ErrorsCounter { 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<Object> errorNodes = new HashSet<Object>(); private static final Set<Object> errorNodes = new HashSet<Object>();
private static int errorsCount = 0; private static int errorsCount = 0;
public static int getErrorCount() { public static int getErrorCount() {
......
package jadx.utils; package jadx.utils;
import java.io.File;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.Iterator; import java.util.Iterator;
...@@ -39,19 +38,6 @@ public class Utils { ...@@ -39,19 +38,6 @@ public class Utils {
return str.toString(); 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) { public static String getStackTrace(Throwable throwable) {
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true); PrintWriter pw = new PrintWriter(sw, true);
......
...@@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory; ...@@ -16,7 +16,7 @@ import org.slf4j.LoggerFactory;
import com.android.dx.io.DexBuffer; import com.android.dx.io.DexBuffer;
public class InputFile { 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 File file;
private final DexBuffer dexBuf; private final DexBuffer dexBuf;
......
...@@ -4,15 +4,15 @@ import java.util.Arrays; ...@@ -4,15 +4,15 @@ import java.util.Arrays;
public class TestFields extends AbstractTest { public class TestFields extends AbstractTest {
private final static boolean fbz = false; private static final boolean fbz = false;
private final static boolean fb = true; private static final boolean fb = true;
private final static int fi = 5; private static final int fi = 5;
private final static int fiz = 0; 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 static final double fd = 3.14;
private final static double[] fda = new double[] { 3.14, 2.7 }; private static final double[] fda = new double[] { 3.14, 2.7 };
private static int si = 5; private static int si = 5;
......
...@@ -62,11 +62,12 @@ public class TypeMergeTest extends TestCase { ...@@ -62,11 +62,12 @@ public class TypeMergeTest extends TestCase {
private void merge(ArgType t1, ArgType t2, ArgType exp) { private void merge(ArgType t1, ArgType t2, ArgType exp) {
ArgType res = ArgType.merge(t1, t2); ArgType res = ArgType.merge(t1, t2);
String msg = format(t1, t2, exp, res);
if (exp == null) { if (exp == null) {
assertNull("Incorrect accept: " + format(t1, t2, exp, res), res); assertNull("Incorrect accept: " + msg, res);
} else { } else {
assertNotNull("Incorrect reject: " + format(t1, t2, exp, res), res); assertNotNull("Incorrect reject: " + msg, res);
assertTrue("Incorrect result: " + format(t1, t2, exp, res), exp.equals(res)); assertTrue("Incorrect result: " + msg, exp.equals(res));
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment