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);
}
}