Exemple #1
0
  public void printUsage() {
    JCommander jc = new JCommander(this);
    // print usage in not sorted fields order (by default its sorted by description)
    PrintStream out = System.out;
    out.println();
    out.println("jadx - dex to java decompiler, version: " + JadxDecompiler.getVersion());
    out.println();
    out.println("usage: jadx [options] " + jc.getMainParameterDescription());
    out.println("options:");

    List<ParameterDescription> params = jc.getParameters();
    Map<String, ParameterDescription> paramsMap =
        new LinkedHashMap<String, ParameterDescription>(params.size());
    int maxNamesLen = 0;
    for (ParameterDescription p : params) {
      paramsMap.put(p.getParameterized().getName(), p);
      int len = p.getNames().length();
      if (len > maxNamesLen) {
        maxNamesLen = len;
      }
    }
    Field[] fields = JadxCLIArgs.class.getDeclaredFields();
    for (Field f : fields) {
      String name = f.getName();
      ParameterDescription p = paramsMap.get(name);
      if (p == null) {
        continue;
      }
      StringBuilder opt = new StringBuilder();
      opt.append(' ').append(p.getNames());
      addSpaces(opt, maxNamesLen - opt.length() + 2);
      opt.append("- ").append(p.getDescription());
      out.println(opt);
    }
    out.println("Example:");
    out.println(" jadx -d out classes.dex");
  }