From 156e54c77f2a7150f527b9cfd9d7ab0e1d7b8550 Mon Sep 17 00:00:00 2001 From: Skylot Date: Sun, 22 Jul 2018 14:34:46 +0300 Subject: [PATCH] core: exclude inner classes from class dependencies (#318) --- .../src/main/java/jadx/core/dex/nodes/MethodNode.java | 4 ++++ .../java/jadx/core/dex/visitors/DependencyCollector.java | 8 ++++++++ 2 files changed, 12 insertions(+) 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 47b1a98e..cb48bec2 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 @@ -152,8 +152,12 @@ public class MethodNode extends LineAttrNode implements ILoadable, IDexNode { } instructions = null; blocks = null; + enterBlock = null; exitBlocks = null; exceptionHandlers.clear(); + sVars.clear(); + region = null; + loops.clear(); } private boolean parseSignature() { diff --git a/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java b/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java index 558ef3fb..4d8ffc9c 100644 --- a/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java +++ b/jadx-core/src/main/java/jadx/core/dex/visitors/DependencyCollector.java @@ -30,6 +30,7 @@ public class DependencyCollector extends AbstractVisitor { processClass(inner, dex, depList); } depList.remove(cls); + removeInnerClassesFromDeps(cls, depList); return false; } @@ -122,4 +123,11 @@ public class DependencyCollector extends AbstractVisitor { depList.add(clsNode.getTopParentClass()); } } + + private void removeInnerClassesFromDeps(ClassNode cls, Set depList) { + cls.getInnerClasses().forEach(inner -> { + depList.remove(inner); + removeInnerClassesFromDeps(inner, depList); + }); + } } -- GitLab