summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar liach2019-11-08 17:24:41 -0600
committerGravatar modmuss502019-11-08 23:24:41 +0000
commitb49e7eeb75837faeafb938a739cd2fa82594bcea (patch)
tree2c1b726c16556f78c660f4e044f9f2e5f0a88b45
parentAdd stats generation (#177) (diff)
downloadenigma-b49e7eeb75837faeafb938a739cd2fa82594bcea.tar.gz
enigma-b49e7eeb75837faeafb938a739cd2fa82594bcea.tar.xz
enigma-b49e7eeb75837faeafb938a739cd2fa82594bcea.zip
Tweak runemoro's stats generator to be compatible with multiple services (#178)
* Tweak runemoro's stats generator to be compatible with multiple services Signed-off-by: liach <liach@users.noreply.github.com> * Names can have $ in java Signed-off-by: liach <liach@users.noreply.github.com>
-rw-r--r--src/main/java/cuchaz/enigma/analysis/SourceIndex.java18
-rw-r--r--src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java24
2 files changed, 27 insertions, 15 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndex.java b/src/main/java/cuchaz/enigma/analysis/SourceIndex.java
index ed12ce37..a800f432 100644
--- a/src/main/java/cuchaz/enigma/analysis/SourceIndex.java
+++ b/src/main/java/cuchaz/enigma/analysis/SourceIndex.java
@@ -16,7 +16,11 @@ import com.google.common.collect.Lists;
16import com.google.common.collect.Maps; 16import com.google.common.collect.Maps;
17import com.google.common.collect.Multimap; 17import com.google.common.collect.Multimap;
18import com.strobel.decompiler.languages.Region; 18import com.strobel.decompiler.languages.Region;
19import com.strobel.decompiler.languages.java.ast.*; 19import com.strobel.decompiler.languages.java.ast.AstNode;
20import com.strobel.decompiler.languages.java.ast.CompilationUnit;
21import com.strobel.decompiler.languages.java.ast.ConstructorDeclaration;
22import com.strobel.decompiler.languages.java.ast.Identifier;
23import com.strobel.decompiler.languages.java.ast.TypeDeclaration;
20import cuchaz.enigma.gui.SourceRemapper; 24import cuchaz.enigma.gui.SourceRemapper;
21import cuchaz.enigma.translation.mapping.EntryResolver; 25import cuchaz.enigma.translation.mapping.EntryResolver;
22import cuchaz.enigma.translation.mapping.ResolutionStrategy; 26import cuchaz.enigma.translation.mapping.ResolutionStrategy;
@@ -133,12 +137,12 @@ public class SourceIndex {
133 // DEBUG 137 // DEBUG
134 // System.out.println( String.format( "%s \"%s\" region: %s", node.getNodeType(), name, region ) ); 138 // System.out.println( String.format( "%s \"%s\" region: %s", node.getNodeType(), name, region ) );
135 139
136 // if the token has a $ in it, something's wrong. Ignore this token 140 // Tokens can have $ in name, even for top-level classes
137 if (name.lastIndexOf('$') >= 0 && this.ignoreBadTokens) { 141 //if (name.lastIndexOf('$') >= 0 && this.ignoreBadTokens) {
138 // DEBUG 142 // // DEBUG
139 System.err.println(String.format("WARNING: %s \"%s\" is probably a bad token. It was ignored", node.getNodeType(), name)); 143 // System.err.println(String.format("WARNING: %s \"%s\" is probably a bad token. It was ignored", node.getNodeType(), name));
140 return null; 144 // return null;
141 } 145 //}
142 146
143 return token; 147 return token;
144 } 148 }
diff --git a/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java b/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java
index 485daf55..88ed96f4 100644
--- a/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java
+++ b/src/main/java/cuchaz/enigma/gui/stats/StatsGenerator.java
@@ -18,15 +18,15 @@ public class StatsGenerator {
18 private final EntryIndex entryIndex; 18 private final EntryIndex entryIndex;
19 private final EntryRemapper mapper; 19 private final EntryRemapper mapper;
20 private final EntryResolver entryResolver; 20 private final EntryResolver entryResolver;
21 private final ObfuscationTestService obfuscationTestService; 21 private final List<ObfuscationTestService> obfuscationTestServices;
22 private final NameProposalService nameProposalService; 22 private final List<NameProposalService> nameProposalServices;
23 23
24 public StatsGenerator(EnigmaProject project) { 24 public StatsGenerator(EnigmaProject project) {
25 entryIndex = project.getJarIndex().getEntryIndex(); 25 entryIndex = project.getJarIndex().getEntryIndex();
26 mapper = project.getMapper(); 26 mapper = project.getMapper();
27 entryResolver = project.getJarIndex().getEntryResolver(); 27 entryResolver = project.getJarIndex().getEntryResolver();
28 obfuscationTestService = project.getEnigma().getServices().get(ObfuscationTestService.TYPE).orElse(null); 28 obfuscationTestServices = project.getEnigma().getServices().get(ObfuscationTestService.TYPE);
29 nameProposalService = project.getEnigma().getServices().get(NameProposalService.TYPE).orElse(null); 29 nameProposalServices = project.getEnigma().getServices().get(NameProposalService.TYPE);
30 } 30 }
31 31
32 public String generate(ProgressListener progress, Set<StatsMember> includedMembers) { 32 public String generate(ProgressListener progress, Set<StatsMember> includedMembers) {
@@ -112,12 +112,20 @@ public class StatsGenerator {
112 private boolean isObfuscated(Entry<?> entry) { 112 private boolean isObfuscated(Entry<?> entry) {
113 String name = entry.getName(); 113 String name = entry.getName();
114 114
115 if (obfuscationTestService != null && obfuscationTestService.testDeobfuscated(entry)) { 115 if (!obfuscationTestServices.isEmpty()) {
116 return false; 116 for (ObfuscationTestService service : obfuscationTestServices) {
117 if (service.testDeobfuscated(entry)) {
118 return false;
119 }
120 }
117 } 121 }
118 122
119 if (nameProposalService != null && nameProposalService.proposeName(entry, mapper).isPresent()) { 123 if (!nameProposalServices.isEmpty()) {
120 return false; 124 for (NameProposalService service : nameProposalServices) {
125 if (service.proposeName(entry, mapper).isPresent()) {
126 return false;
127 }
128 }
121 } 129 }
122 130
123 String mappedName = mapper.deobfuscate(entry).getName(); 131 String mappedName = mapper.deobfuscate(entry).getName();