From 8e0df4c423b71c319ec6bddb6412e05a3cdd6532 Mon Sep 17 00:00:00 2001 From: Jan S Date: Fri, 10 May 2019 21:42:32 +0200 Subject: [PATCH] fix(gui): printUsage for jadx-gui now shows the new gui only parameter(s) (PR #660) --- .../main/java/jadx/cli/JCommanderWrapper.java | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/jadx-cli/src/main/java/jadx/cli/JCommanderWrapper.java b/jadx-cli/src/main/java/jadx/cli/JCommanderWrapper.java index a172084c819..a24fdf7c084 100644 --- a/jadx-cli/src/main/java/jadx/cli/JCommanderWrapper.java +++ b/jadx-cli/src/main/java/jadx/cli/JCommanderWrapper.java @@ -3,7 +3,9 @@ import java.io.PrintStream; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.Arrays; import java.util.LinkedHashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -66,9 +68,9 @@ public void printUsage() { maxNamesLen = len; } } - JadxCLIArgs args = new JadxCLIArgs(); - Field[] fields = args.getClass().getDeclaredFields(); - for (Field f : fields) { + + JadxCLIArgs args = (JadxCLIArgs) jc.getObjects().get(0); + for (Field f : getFields(args.getClass())) { String name = f.getName(); ParameterDescription p = paramsMap.get(name); if (p == null) { @@ -85,6 +87,21 @@ public void printUsage() { out.println(" jadx -d out classes.dex"); } + /** + * Get all declared fields of the specified class and all super classes + * + * @param clazz + * @return + */ + private List getFields(Class clazz) { + List fieldList = new LinkedList<>(); + while (clazz != null) { + fieldList.addAll(Arrays.asList(clazz.getDeclaredFields())); + clazz = clazz.getSuperclass(); + } + return fieldList; + } + private void addDefaultValue(JadxCLIArgs args, Field f, StringBuilder opt) { Class fieldType = f.getType(); if (fieldType == int.class) {