mirror of
https://github.com/moparisthebest/fernflower
synced 2024-11-29 20:42:22 -05:00
java-decompiler: post-import cleanup (explicit defaults for all preferences)
This commit is contained in:
parent
3854b67daa
commit
3104531729
@ -24,6 +24,8 @@ import org.jetbrains.java.decompiler.modules.renamer.PoolInterceptor;
|
|||||||
import org.jetbrains.java.decompiler.struct.StructContext;
|
import org.jetbrains.java.decompiler.struct.StructContext;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
public class DecompilerContext {
|
public class DecompilerContext {
|
||||||
@ -38,7 +40,7 @@ public class DecompilerContext {
|
|||||||
|
|
||||||
private static ThreadLocal<DecompilerContext> currentContext = new ThreadLocal<DecompilerContext>();
|
private static ThreadLocal<DecompilerContext> currentContext = new ThreadLocal<DecompilerContext>();
|
||||||
|
|
||||||
private HashMap<String, Object> properties = new HashMap<String, Object>();
|
private final Map<String, Object> properties;
|
||||||
|
|
||||||
private StructContext structcontext;
|
private StructContext structcontext;
|
||||||
|
|
||||||
@ -54,49 +56,16 @@ public class DecompilerContext {
|
|||||||
|
|
||||||
private IFernflowerLogger logger;
|
private IFernflowerLogger logger;
|
||||||
|
|
||||||
|
private DecompilerContext(Map<String, Object> properties) {
|
||||||
private DecompilerContext(HashMap<String, Object> properties) {
|
this.properties = properties;
|
||||||
this.properties.putAll(properties);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void initContext(HashMap<String, Object> propertiesCustom) {
|
public static void initContext(Map<String, Object> propertiesCustom) {
|
||||||
|
Map<String, Object> properties = new HashMap<String, Object>(IFernflowerPreferences.DEFAULTS);
|
||||||
HashMap<String, Object> mapDefault = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
// default settings
|
|
||||||
mapDefault.put(IFernflowerPreferences.DECOMPILE_INNER, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.DECOMPILE_CLASS_1_4, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.DECOMPILE_ASSERTIONS, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.REMOVE_BRIDGE, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.REMOVE_SYNTHETIC, "0");
|
|
||||||
mapDefault.put(IFernflowerPreferences.HIDE_EMPTY_SUPER, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.HIDE_DEFAULT_CONSTRUCTOR, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "0");
|
|
||||||
mapDefault.put(IFernflowerPreferences.NO_EXCEPTIONS_RETURN, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.DECOMPILE_ENUM, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.FINALLY_DEINLINE, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.REMOVE_GETCLASS_NEW, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.LITERALS_AS_IS, "0");
|
|
||||||
mapDefault.put(IFernflowerPreferences.ASCII_STRING_CHARACTERS, "0");
|
|
||||||
mapDefault.put(IFernflowerPreferences.BOOLEAN_TRUE_ONE, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.SYNTHETIC_NOT_SET, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.UNDEFINED_PARAM_TYPE_OBJECT, "1");
|
|
||||||
|
|
||||||
mapDefault.put(IFernflowerPreferences.USE_DEBUG_VARNAMES, "1");
|
|
||||||
mapDefault.put(IFernflowerPreferences.MAX_PROCESSING_METHOD, "0");
|
|
||||||
|
|
||||||
mapDefault.put(IFernflowerPreferences.REMOVE_EMPTY_RANGES, "1");
|
|
||||||
|
|
||||||
mapDefault.put(IFernflowerPreferences.NEW_LINE_SEPARATOR, "0");
|
|
||||||
mapDefault.put(IFernflowerPreferences.INDENT_STRING, " ");
|
|
||||||
|
|
||||||
mapDefault.put(IFernflowerPreferences.IDEA_NOT_NULL_ANNOTATION, "1");
|
|
||||||
|
|
||||||
if (propertiesCustom != null) {
|
if (propertiesCustom != null) {
|
||||||
mapDefault.putAll(propertiesCustom);
|
properties.putAll(propertiesCustom);
|
||||||
}
|
}
|
||||||
|
currentContext.set(new DecompilerContext(properties));
|
||||||
currentContext.set(new DecompilerContext(mapDefault));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DecompilerContext getCurrentContext() {
|
public static DecompilerContext getCurrentContext() {
|
||||||
@ -182,7 +151,7 @@ public class DecompilerContext {
|
|||||||
if (logger != null) {
|
if (logger != null) {
|
||||||
String severity = (String)getProperty(IFernflowerPreferences.LOG_LEVEL);
|
String severity = (String)getProperty(IFernflowerPreferences.LOG_LEVEL);
|
||||||
if (severity != null) {
|
if (severity != null) {
|
||||||
Integer iSeverity = IFernflowerLogger.mapLogLevel.get(severity.toUpperCase());
|
Integer iSeverity = IFernflowerLogger.mapLogLevel.get(severity.toUpperCase(Locale.US));
|
||||||
if (iSeverity != null) {
|
if (iSeverity != null) {
|
||||||
logger.setSeverity(iSeverity);
|
logger.setSeverity(iSeverity);
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ public class ConsoleDecompiler implements IBytecodeProvider, IDecompilatSaver {
|
|||||||
|
|
||||||
if (isOption && arg.startsWith("-") &&
|
if (isOption && arg.startsWith("-") &&
|
||||||
arg.length() > 5 && arg.charAt(4) == '=') {
|
arg.length() > 5 && arg.charAt(4) == '=') {
|
||||||
String value = arg.substring(5).toUpperCase();
|
String value = arg.substring(5).toUpperCase(Locale.US);
|
||||||
if ("TRUE".equals(value)) {
|
if ("TRUE".equals(value)) {
|
||||||
value = "1";
|
value = "1";
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.jetbrains.java.decompiler.main.extern;
|
package org.jetbrains.java.decompiler.main.extern;
|
||||||
|
|
||||||
public interface IFernflowerPreferences {
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public interface IFernflowerPreferences {
|
||||||
String REMOVE_BRIDGE = "rbr";
|
String REMOVE_BRIDGE = "rbr";
|
||||||
String REMOVE_SYNTHETIC = "rsy";
|
String REMOVE_SYNTHETIC = "rsy";
|
||||||
String DECOMPILE_INNER = "din";
|
String DECOMPILE_INNER = "din";
|
||||||
@ -30,28 +33,51 @@ public interface IFernflowerPreferences {
|
|||||||
String REMOVE_GETCLASS_NEW = "rgn";
|
String REMOVE_GETCLASS_NEW = "rgn";
|
||||||
String LITERALS_AS_IS = "lit";
|
String LITERALS_AS_IS = "lit";
|
||||||
String BOOLEAN_TRUE_ONE = "bto";
|
String BOOLEAN_TRUE_ONE = "bto";
|
||||||
|
String ASCII_STRING_CHARACTERS = "asc";
|
||||||
String SYNTHETIC_NOT_SET = "nns";
|
String SYNTHETIC_NOT_SET = "nns";
|
||||||
String UNDEFINED_PARAM_TYPE_OBJECT = "uto";
|
String UNDEFINED_PARAM_TYPE_OBJECT = "uto";
|
||||||
String USE_DEBUG_VARNAMES = "udv";
|
String USE_DEBUG_VARNAMES = "udv";
|
||||||
String MAX_PROCESSING_METHOD = "mpm";
|
|
||||||
String REMOVE_EMPTY_RANGES = "rer";
|
String REMOVE_EMPTY_RANGES = "rer";
|
||||||
String ASCII_STRING_CHARACTERS = "asc";
|
|
||||||
|
|
||||||
String FINALLY_DEINLINE = "fdi";
|
String FINALLY_DEINLINE = "fdi";
|
||||||
|
|
||||||
String FINALLY_CATCHALL = "FINALLY_CATCHALL";
|
|
||||||
String FINALLY_SEMAPHOR = "FINALLY_SEMAPHOR";
|
|
||||||
|
|
||||||
String RENAME_ENTITIES = "ren";
|
|
||||||
String USER_RENAMER_CLASS = "urc";
|
|
||||||
|
|
||||||
String LOG_LEVEL = "log";
|
|
||||||
|
|
||||||
String NEW_LINE_SEPARATOR = "nls";
|
|
||||||
String IDEA_NOT_NULL_ANNOTATION = "inn";
|
String IDEA_NOT_NULL_ANNOTATION = "inn";
|
||||||
String LAMBDA_TO_ANONYMOUS_CLASS = "lac";
|
String LAMBDA_TO_ANONYMOUS_CLASS = "lac";
|
||||||
|
|
||||||
|
String LOG_LEVEL = "log";
|
||||||
|
String MAX_PROCESSING_METHOD = "mpm";
|
||||||
|
String RENAME_ENTITIES = "ren";
|
||||||
|
String USER_RENAMER_CLASS = "urc";
|
||||||
|
String NEW_LINE_SEPARATOR = "nls";
|
||||||
String INDENT_STRING = "ind";
|
String INDENT_STRING = "ind";
|
||||||
|
|
||||||
String LINE_SEPARATOR_WIN = "\r\n";
|
String LINE_SEPARATOR_WIN = "\r\n";
|
||||||
String LINE_SEPARATOR_LIN = "\n";
|
String LINE_SEPARATOR_LIN = "\n";
|
||||||
|
|
||||||
|
Map<String, Object> DEFAULTS = Collections.unmodifiableMap(new HashMap<String, Object>() {{
|
||||||
|
put(REMOVE_BRIDGE, "1");
|
||||||
|
put(REMOVE_SYNTHETIC, "0");
|
||||||
|
put(DECOMPILE_INNER, "1");
|
||||||
|
put(DECOMPILE_CLASS_1_4, "1");
|
||||||
|
put(DECOMPILE_ASSERTIONS, "1");
|
||||||
|
put(HIDE_EMPTY_SUPER, "1");
|
||||||
|
put(HIDE_DEFAULT_CONSTRUCTOR, "1");
|
||||||
|
put(DECOMPILE_GENERIC_SIGNATURES, "0");
|
||||||
|
put(NO_EXCEPTIONS_RETURN, "1");
|
||||||
|
put(DECOMPILE_ENUM, "1");
|
||||||
|
put(REMOVE_GETCLASS_NEW, "1");
|
||||||
|
put(LITERALS_AS_IS, "0");
|
||||||
|
put(BOOLEAN_TRUE_ONE, "1");
|
||||||
|
put(ASCII_STRING_CHARACTERS, "0");
|
||||||
|
put(SYNTHETIC_NOT_SET, "1");
|
||||||
|
put(UNDEFINED_PARAM_TYPE_OBJECT, "1");
|
||||||
|
put(USE_DEBUG_VARNAMES, "1");
|
||||||
|
put(REMOVE_EMPTY_RANGES, "1");
|
||||||
|
put(FINALLY_DEINLINE, "1");
|
||||||
|
put(IDEA_NOT_NULL_ANNOTATION, "1");
|
||||||
|
put(LAMBDA_TO_ANONYMOUS_CLASS, "0");
|
||||||
|
|
||||||
|
put(MAX_PROCESSING_METHOD, "0");
|
||||||
|
put(RENAME_ENTITIES, "0");
|
||||||
|
put(NEW_LINE_SEPARATOR, "0");
|
||||||
|
put(INDENT_STRING, " ");
|
||||||
|
}});
|
||||||
}
|
}
|
||||||
|
@ -135,17 +135,14 @@ public class MethodProcessorThread implements Runnable {
|
|||||||
|
|
||||||
RootStatement root = DomHelper.parseGraph(graph);
|
RootStatement root = DomHelper.parseGraph(graph);
|
||||||
|
|
||||||
if (!DecompilerContext.getOption(IFernflowerPreferences.FINALLY_CATCHALL)) {
|
FinallyProcessor fproc = new FinallyProcessor(varproc);
|
||||||
FinallyProcessor fproc = new FinallyProcessor(varproc);
|
while (fproc.iterateGraph(mt, root, graph)) {
|
||||||
while (fproc.iterateGraph(mt, root, graph)) {
|
|
||||||
|
|
||||||
//DotExporter.toDotFile(graph, new File("c:\\Temp\\fern2.dot"), true);
|
//DotExporter.toDotFile(graph, new File("c:\\Temp\\fern2.dot"), true);
|
||||||
//System.out.println(graph.toString());
|
//System.out.println(graph.toString());
|
||||||
|
//System.out.println("~~~~~~~~~~~~~~~~~~~~~~ \r\n"+root.toJava());
|
||||||
|
|
||||||
//System.out.println("~~~~~~~~~~~~~~~~~~~~~~ \r\n"+root.toJava());
|
root = DomHelper.parseGraph(graph);
|
||||||
|
|
||||||
root = DomHelper.parseGraph(graph);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove synchronized exception handler
|
// remove synchronized exception handler
|
||||||
|
Loading…
Reference in New Issue
Block a user