void Options::add_options()

in source/Options.cpp [224:336]


void Options::add_options(
    boost::program_options::options_description& options) {
  options.add_options()(
      "system-jar-paths",
      program_options::value<std::string>()->required(),
      "A JSON configuration file with a list of paths to the system jars.");
  options.add_options()(
      "apk-directory",
      program_options::value<std::string>()->required(),
      "The extraced APK obtained by `redex -u`.");
  options.add_options()(
      "dex-directory",
      program_options::value<std::string>()->required(),
      "The extraced DEX obtained by `redex -u`.");

  options.add_options()(
      "models-paths",
      program_options::value<std::string>(),
      "A `;` separated list of models files and directories containing models files.");
  options.add_options()(
      "rules-paths",
      program_options::value<std::string>()->required(),
      "A `;` separated list of rules files and directories containing rules files.");
  options.add_options()(
      "proguard-configuration-paths",
      program_options::value<std::string>(),
      "A `;` separated list of ProGuard configuration files or directories containing ProGuard configuration files.");
  options.add_options()(
      "lifecycles-paths",
      program_options::value<std::string>(),
      "A `;` separated list of files and directories containing life-cycles files.");
  options.add_options()(
      "generated-models-directory",
      program_options::value<std::string>(),
      "Directory where generated models will be stored.");
  options.add_options()(
      "model-generator-configuration-paths",
      program_options::value<std::string>()->required(),
      "A `;` separated list of JSON configuration files each specifying a list of absolute paths to JSON model generators or names of CPP model generators.");
  options.add_options()(
      "model-generator-search-paths",
      program_options::value<std::string>(),
      "A `;` separated list of paths where we look for JSON model generators.");

  options.add_options()(
      "repository-root-directory",
      program_options::value<std::string>()->required(),
      "The root of the repository.");
  options.add_options()(
      "source-root-directory",
      program_options::value<std::string>()->required(),
      "The root where source files for the APK can be found.");
  options.add_options()(
      "source-exclude-directories",
      program_options::value<std::string>(),
      "A `;`-separated list of directories that should be excluded from indexed source files.");

  options.add_options()(
      "apk-path",
      program_options::value<std::string>()->required(),
      "The APK to analyze.");
  options.add_options()(
      "output-directory",
      program_options::value<std::string>()->required(),
      "Directory to write results in.");

  options.add_options()(
      "sequential", "Run the global fixpoint without parallelization.");
  options.add_options()(
      "skip-source-indexing", "Skip indexing java source files.");
  options.add_options()(
      "skip-model-generation", "Skip running model generation.");
  options.add_options()(
      "disable-parameter-type-overrides",
      "Disable analyzing methods with specific parameter type information.");
  options.add_options()(
      "remove-unreachable-code",
      "Prune unreachable code based on entry points specified in proguard configuration.");
  options.add_options()(
      "maximum-method-analysis-time",
      program_options::value<int>(),
      "Specify number of seconds as a bound. If the analysis of a method takes longer than this then make the method obscure (default taint-in-taint-out).");

  options.add_options()(
      "maximum-source-sink-distance",
      program_options::value<int>(),
      "Limits the distance of sources and sinks from a trace entry point.");

  options.add_options()(
      "log-method",
      program_options::value<std::vector<std::string>>()->multitoken(),
      "Enable logging for the given methods.");
  options.add_options()(
      "dump-class-hierarchies",
      "Dump the class hierarchies in `class_hierarchies.json`.");
  options.add_options()(
      "dump-overrides", "Dump the override graph in `overrides.json`.");
  options.add_options()(
      "dump-call-graph", "Dump the call graph in `call_graph.json`.");
  options.add_options()(
      "dump-dependencies", "Dump the dependency graph in `dependencies.json`.");
  options.add_options()(
      "dump-methods", "Dump the list of method signatures in `methods.json`.");

  options.add_options()(
      "job-id",
      program_options::value<std::string>(),
      "Identifier for the current analysis run.");
  options.add_options()(
      "metarun-id",
      program_options::value<std::string>(),
      "Identifier for a group of analysis runs.");
}