From 12f270c80570b136add40dc259c25383ac36bf81 Mon Sep 17 00:00:00 2001 From: Yanis48 Date: Tue, 15 Dec 2020 21:22:55 +0100 Subject: avoid duplicate logic --- .../cuchaz/enigma/gui/stats/StatsGenerator.java | 43 +++------------------- .../src/main/java/cuchaz/enigma/EnigmaProject.java | 30 +++++++++++++++ .../cuchaz/enigma/analysis/StructureTreeNode.java | 30 +-------------- 3 files changed, 37 insertions(+), 66 deletions(-) diff --git a/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java index b898eac3..20d6a0eb 100644 --- a/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java +++ b/enigma-swing/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java @@ -3,8 +3,6 @@ package cuchaz.enigma.gui.stats; import cuchaz.enigma.EnigmaProject; import cuchaz.enigma.ProgressListener; import cuchaz.enigma.analysis.index.EntryIndex; -import cuchaz.enigma.api.service.NameProposalService; -import cuchaz.enigma.api.service.ObfuscationTestService; import cuchaz.enigma.translation.mapping.EntryRemapper; import cuchaz.enigma.translation.mapping.EntryResolver; import cuchaz.enigma.translation.mapping.ResolutionStrategy; @@ -15,18 +13,16 @@ import cuchaz.enigma.utils.I18n; import java.util.*; public class StatsGenerator { + private final EnigmaProject project; private final EntryIndex entryIndex; private final EntryRemapper mapper; private final EntryResolver entryResolver; - private final List obfuscationTestServices; - private final List nameProposalServices; public StatsGenerator(EnigmaProject project) { - entryIndex = project.getJarIndex().getEntryIndex(); - mapper = project.getMapper(); - entryResolver = project.getJarIndex().getEntryResolver(); - obfuscationTestServices = project.getEnigma().getServices().get(ObfuscationTestService.TYPE); - nameProposalServices = project.getEnigma().getServices().get(NameProposalService.TYPE); + this.project = project; + this.entryIndex = project.getJarIndex().getEntryIndex(); + this.mapper = project.getMapper(); + this.entryResolver = project.getJarIndex().getEntryResolver(); } public StatsResult generate(ProgressListener progress, Set includedMembers, String topLevelPackage, boolean includeSynthetic) { @@ -111,36 +107,9 @@ public class StatsGenerator { } private void update(Map counts, Entry entry) { - if (isObfuscated(entry)) { + if (project.isObfuscated(entry)) { String parent = mapper.deobfuscate(entry.getAncestry().get(0)).getName().replace('/', '.'); counts.put(parent, counts.getOrDefault(parent, 0) + 1); } } - - private boolean isObfuscated(Entry entry) { - String name = entry.getName(); - - if (!obfuscationTestServices.isEmpty()) { - for (ObfuscationTestService service : obfuscationTestServices) { - if (service.testDeobfuscated(entry)) { - return false; - } - } - } - - if (!nameProposalServices.isEmpty()) { - for (NameProposalService service : nameProposalServices) { - if (service.proposeName(entry, mapper).isPresent()) { - return false; - } - } - } - - String mappedName = mapper.deobfuscate(entry).getName(); - if (mappedName != null && !mappedName.isEmpty() && !mappedName.equals(name)) { - return false; - } - - return true; - } } diff --git a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java index fcd2c96a..a01eca19 100644 --- a/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java +++ b/enigma/src/main/java/cuchaz/enigma/EnigmaProject.java @@ -18,6 +18,7 @@ import java.util.stream.Stream; import com.google.common.base.Functions; import com.google.common.base.Preconditions; +import cuchaz.enigma.api.service.ObfuscationTestService; import cuchaz.enigma.classprovider.ObfuscationFixClassProvider; import org.objectweb.asm.ClassWriter; import org.objectweb.asm.tree.ClassNode; @@ -158,6 +159,35 @@ public class EnigmaProject { return obfReference.isNamed() && isRenamable(obfReference.getNameableEntry()); } + public boolean isObfuscated(Entry entry) { + String name = entry.getName(); + + List obfuscationTestServices = this.getEnigma().getServices().get(ObfuscationTestService.TYPE); + if (!obfuscationTestServices.isEmpty()) { + for (ObfuscationTestService service : obfuscationTestServices) { + if (service.testDeobfuscated(entry)) { + return false; + } + } + } + + List nameProposalServices = this.getEnigma().getServices().get(NameProposalService.TYPE); + if (!nameProposalServices.isEmpty()) { + for (NameProposalService service : nameProposalServices) { + if (service.proposeName(entry, mapper).isPresent()) { + return false; + } + } + } + + String mappedName = mapper.deobfuscate(entry).getName(); + if (mappedName != null && !mappedName.isEmpty() && !mappedName.equals(name)) { + return false; + } + + return true; + } + public JarExport exportRemappedJar(ProgressListener progress) { Collection classEntries = jarIndex.getEntryIndex().getClasses(); ClassProvider fixingClassProvider = new ObfuscationFixClassProvider(classProvider, jarIndex); diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java b/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java index 876b5ca9..f310aa75 100644 --- a/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java +++ b/enigma/src/main/java/cuchaz/enigma/analysis/StructureTreeNode.java @@ -2,7 +2,6 @@ package cuchaz.enigma.analysis; import cuchaz.enigma.EnigmaProject; import cuchaz.enigma.api.service.NameProposalService; -import cuchaz.enigma.api.service.ObfuscationTestService; import cuchaz.enigma.translation.TranslateResult; import cuchaz.enigma.translation.mapping.EntryRemapper; import cuchaz.enigma.translation.representation.TypeDescriptor; @@ -43,7 +42,7 @@ public class StructureTreeNode extends DefaultMutableTreeNode { } // don't add deobfuscated members if hideDeobfuscated is true, unless it's an inner class - if (hideDeobfuscated && this.isDeobfuscated(project, child) && !(child instanceof ClassEntry)) { + if (hideDeobfuscated && !project.isObfuscated(child) && !(child instanceof ClassEntry)) { continue; } @@ -56,33 +55,6 @@ public class StructureTreeNode extends DefaultMutableTreeNode { } } - private boolean isDeobfuscated(EnigmaProject project, ParentedEntry child) { - List obfuscationTestServices = project.getEnigma().getServices().get(ObfuscationTestService.TYPE); - - if (!obfuscationTestServices.isEmpty()) { - for (ObfuscationTestService service : obfuscationTestServices) { - if (service.testDeobfuscated(child)) { - return true; - } - } - } - - if (!this.nameProposalServices.isEmpty()) { - for (NameProposalService service : this.nameProposalServices) { - if (service.proposeName(child, this.mapper).isPresent()) { - return true; - } - } - } - - String mappedName = project.getMapper().deobfuscate(child).getName(); - if (mappedName != null && !mappedName.isEmpty() && !mappedName.equals(child.getName())) { - return true; - } - - return false; - } - @Override public String toString() { TranslateResult translateResult = this.mapper.extendedDeobfuscate(this.entry); -- cgit v1.2.3