public static void main()

in jar-infer/jar-infer-cli/src/main/java/com/uber/nullaway/jarinfer/JarInfer.java [36:114]


  public static void main(String[] args) throws Exception {
    Options options = new Options();
    HelpFormatter hf = new HelpFormatter();
    hf.setWidth(100);
    options.addOption(
        Option.builder("i")
            .argName("in_path")
            .longOpt("input-file")
            .hasArg()
            .required()
            .desc("path to target jar/aar file")
            .build());
    options.addOption(
        Option.builder("p")
            .argName("pkg_name")
            .longOpt("package")
            .hasArg()
            .desc("qualified package name")
            .build());
    options.addOption(
        Option.builder("o")
            .argName("out_path")
            .longOpt("output-file")
            .hasArg()
            .required()
            .desc("path to processed jar/aar file")
            .build());
    options.addOption(
        Option.builder("b")
            .argName("annotate_bytecode")
            .longOpt("annotate_bytecode")
            .desc("annotate bytecode")
            .build());
    options.addOption(
        Option.builder("s")
            .argName("strip-jar-signatures")
            .longOpt("strip-jar-signatures")
            .desc("handle signed jars by removing signature information from META-INF/")
            .build());
    options.addOption(
        Option.builder("h")
            .argName("help")
            .longOpt("help")
            .desc("print usage information")
            .build());
    options.addOption(
        Option.builder("d")
            .argName("debug")
            .longOpt("debug")
            .desc("print debug information")
            .build());
    options.addOption(
        Option.builder("v").argName("verbose").longOpt("verbose").desc("set verbosity").build());
    try {
      CommandLine line = new DefaultParser().parse(options, args);
      if (line.hasOption('h')) {
        hf.printHelp(appName, options, true);
        return;
      }
      String jarPath = line.getOptionValue('i');
      String pkgName = line.getOptionValue('p', "");
      String outPath = line.getOptionValue('o');
      boolean annotateBytecode = line.hasOption('b');
      boolean stripJarSignatures = line.hasOption('s');
      boolean debug = line.hasOption('d');
      boolean verbose = line.hasOption('v');
      if (!pkgName.isEmpty()) {
        pkgName = "L" + pkgName.replaceAll("\\.", "/");
      }
      DefinitelyDerefedParamsDriver driver = new DefinitelyDerefedParamsDriver();
      driver.run(
          jarPath, pkgName, outPath, annotateBytecode, stripJarSignatures, false, debug, verbose);
      if (!new File(outPath).exists()) {
        System.out.println("Could not write jar file: " + outPath);
      }
    } catch (ParseException pe) {
      hf.printHelp(appName, options, true);
    }
  }