[Infer][frontend] Making -incremental-changed-only option available from command line

Summary: About to add some tests for this and need to be able to turn it on.
master
Sam Blackshear 9 years ago
parent f5f005a720
commit 2e27c5127b

@ -69,6 +69,16 @@ class VersionAction(argparse._VersionAction):
option_string) option_string)
class ConfirmIncrementalAction(argparse._StoreTrueAction):
def __call__(self, parser, namespace, values, option_string=None):
if not getattr(namespace, 'incremental'):
parser.error('-ic/--changed-only should only be used with -i')
super(ConfirmIncrementalAction, self).__call__(parser,
namespace,
values,
option_string)
base_parser = argparse.ArgumentParser(add_help=False) base_parser = argparse.ArgumentParser(add_help=False)
base_group = base_parser.add_argument_group('global arguments') base_group = base_parser.add_argument_group('global arguments')
base_group.add_argument('-o', '--out', metavar='<directory>', base_group.add_argument('-o', '--out', metavar='<directory>',
@ -76,8 +86,12 @@ base_group.add_argument('-o', '--out', metavar='<directory>',
action=utils.AbsolutePathAction, action=utils.AbsolutePathAction,
help='Set the Infer results directory') help='Set the Infer results directory')
base_group.add_argument('-i', '--incremental', action='store_true', base_group.add_argument('-i', '--incremental', action='store_true',
help='''Do not delete the results directory across help='''Analyze only changed procedures and their
Infer runs''') dependencies''')
base_group.add_argument('-ic', '--changed-only',
action=ConfirmIncrementalAction,
help='''Same as -i, but does not analyze
dependencies of changed procedures.''')
base_group.add_argument('-g', '--debug', action='store_true', base_group.add_argument('-g', '--debug', action='store_true',
help='Generate extra debugging information') help='Generate extra debugging information')
base_group.add_argument('-a', '--analyzer', base_group.add_argument('-a', '--analyzer',
@ -498,6 +512,9 @@ class Infer:
] ]
if self.args.incremental: if self.args.incremental:
if self.args.changed_only:
infer_options.append('-incremental_changed_only')
else:
infer_options.append('-incremental') infer_options.append('-incremental')
if self.args.specs_dirs: if self.args.specs_dirs:

@ -136,7 +136,7 @@ let arg_desc =
[ [
"-err_file", Arg.Set_string err_file_cmdline, Some "file", "use file for the err channel"; "-err_file", Arg.Set_string err_file_cmdline, Some "file", "use file for the err channel";
"-exclude", Arg.String exclude, Some "file", "exclude from analysis the files and directories specified in file"; "-exclude", Arg.String exclude, Some "file", "exclude from analysis the files and directories specified in file";
"-incremental_ignore_dependencies", Arg.Unit (fun () -> incremental_mode := ANALYZE_CHANGED_ONLY), None, "only analyze files captured since the last analysis"; "-incremental_changed_only", Arg.Unit (fun () -> incremental_mode := ANALYZE_CHANGED_ONLY), None, "only analyze files captured since the last analysis";
"-incremental", Arg.Unit (fun () -> incremental_mode := ANALYZE_CHANGED_AND_DEPENDENCIES), None, "analyze files captured since the last analysis plus any dependencies"; "-incremental", Arg.Unit (fun () -> incremental_mode := ANALYZE_CHANGED_AND_DEPENDENCIES), None, "analyze files captured since the last analysis plus any dependencies";
"-iterations", Arg.Set_int iterations_cmdline, Some "n", "set the max number of operations for each function, expressed as a multiple of symbolic operations (default n=1)"; "-iterations", Arg.Set_int iterations_cmdline, Some "n", "set the max number of operations for each function, expressed as a multiple of symbolic operations (default n=1)";
"-nonstop", Arg.Set Config.nonstop, None, "activate the nonstop mode: the analysis continues after finding errors. With this option the analysis can become less precise."; "-nonstop", Arg.Set Config.nonstop, None, "activate the nonstop mode: the analysis continues after finding errors. With this option the analysis can become less precise.";

Loading…
Cancel
Save