(* L.err "Warning: procedure %a is defined in both %s and %s@." Procname.pp pname (DB.source_file_to_string source)(DB.source_file_to_string old_source); *)
source<old_source(* when a procedure is defined in several files, map to the first alphabetically *)
(* L.err "Warning: procedure %a is defined in both %s and %s@." Procname.pp pname (DB.source_file_to_string source)(DB.source_file_to_string old_source); *)
source<old_source(* when a procedure is defined in several files, map to the first alphabetically *)
"-err_file",Arg.Set_stringerr_file_cmdline,Some"file","use file for the err channel";
"-exclude",Arg.Stringexclude,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",Arg.Unit(fun()->incremental_mode:=ANALYZE_CHANGED_AND_DEPENDENCIES),None,"analyze files captured since the last analysis plus any dependencies";
"-iterations",Arg.Set_intiterations_cmdline,Some"n","set the max number of operations for each function, expressed as a multiple of symbolic operations (default n=1)";
"-nonstop",Arg.SetConfig.nonstop,None,"activate the nonstop mode: the analysis continues after finding errors. With this option the analysis can become less precise.";
"-out_file",Arg.Set_stringout_file_cmdline,Some"file","use file for the out channel";
"-print_builtins",Arg.UnitSymExec.print_builtins,None,"print the builtin functions and exit";
"-source_path",Arg.Stringsource_path,Some"path","specify the absolute path to the root of the source files. Used to interpret relative paths when using option -exclude.";
(* TODO: merge with the -project_root option *)
"-java",Arg.Unit(fun()->Sil.curr_language:=Sil.Java),None,"Set language to Java";
"-version",Arg.Unitprint_version,None,"print version information and exit";
"-version_json",Arg.Unitprint_version_json,None,"print version json formatted";
"memory leak buckets to be checked, separated by commas. The possible buckets are cf (Core Foundation), arc, narc (No arc)";
"-err_file",Arg.Set_stringerr_file_cmdline,Some"file","use file for the err channel";
"-exclude",Arg.Stringexclude,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",Arg.Unit(fun()->incremental_mode:=ANALYZE_CHANGED_AND_DEPENDENCIES),None,"analyze files captured since the last analysis plus any dependencies";
"-iterations",Arg.Set_intiterations_cmdline,Some"n","set the max number of operations for each function, expressed as a multiple of symbolic operations (default n=1)";
"-nonstop",Arg.SetConfig.nonstop,None,"activate the nonstop mode: the analysis continues after finding errors. With this option the analysis can become less precise.";
"-out_file",Arg.Set_stringout_file_cmdline,Some"file","use file for the out channel";
"-print_builtins",Arg.UnitSymExec.print_builtins,None,"print the builtin functions and exit";
"-source_path",Arg.Stringsource_path,Some"path","specify the absolute path to the root of the source files. Used to interpret relative paths when using option -exclude.";
(* TODO: merge with the -project_root option *)
"-java",Arg.Unit(fun()->Sil.curr_language:=Sil.Java),None,"Set language to Java";
"-version",Arg.Unitprint_version,None,"print version information and exit";
"-version_json",Arg.Unitprint_version_json,None,"print version json formatted";
"-analysis_stops",Arg.SetConfig.analysis_stops,None,"issue a warning when the analysis stops";
"-angelic_execution",Arg.SetConfig.angelic_execution,None,"activate angelic execution: the analysis ignores errors caused by unknown procedure calls.";
"-checkers",Arg.Setcheckers,None," run only the checkers instead of the full analysis";
"-cluster",Arg.String(funs->cluster_cmdline:=Somes),Some"fname","specify a .cluster file to be analyzed";
"-codequery",Arg.String(funs->CodeQuery.query:=Somes),Some"query"," execute the code query";
"-eradicate",Arg.SetConfig.eradicate,None," activate the eradicate checker for java annotations";
"-file",Arg.String(funs->only_files_cmdline:=s::!only_files_cmdline),Some"fname","specify one file to be analyzed (without path); the option can be repeated";
"-intraprocedural",Arg.SetConfig.intraprocedural,None,"perform an intraprocedural analysis only";
"-makefile",Arg.Set_stringmakefile_cmdline,Some"file","create a makefile to perform the analysis";
"-max_cluster",Arg.Set_intConfig.max_cluster_size,Some"n","set the max number of procedures in each cluster (default n=2000)";
"-only_nospecs",Arg.SetConfig.only_nospecs,None," only analyze procedures which were analyzed before but have no specs";
"-only_skips",Arg.SetConfig.only_skips,None," only analyze procedures dependent on previous skips which now have a .specs file";
"-seconds_per_iteration",Arg.Set_intseconds_per_iteration,Some"n","set the number of seconds per iteration (default n=30)";
"-simulate",Arg.Setsimulate,None," run a simulation of the analysis only";
"-subtype_multirange",Arg.SetConfig.subtype_multirange,None,"use the multirange subtyping domain";
"-optimistic_cast",Arg.SetConfig.optimistic_cast,None,"allow cast of undefined values";
"-select_proc",Arg.String(funs->select_proc:=Somes),Some"string","only consider procedures whose name contains the given string";
"-symops_per_iteration",Arg.Set_intsymops_per_iteration,Some"n","set the number of symbolic operations per iteration (default n="^(string_of_int!symops_per_iteration)^")";
"-type_size",Arg.SetConfig.type_size,None,"consider the size of types during analysis";
"Add buckets to issue descriptions, useful when developing infer"
"-analysis_stops",Arg.SetConfig.analysis_stops,None,"issue a warning when the analysis stops";
"-angelic_execution",Arg.SetConfig.angelic_execution,None,"activate angelic execution: the analysis ignores errors caused by unknown procedure calls.";
"-checkers",Arg.Setcheckers,None," run only the checkers instead of the full analysis";
"-cluster",Arg.String(funs->cluster_cmdline:=Somes),Some"fname","specify a .cluster file to be analyzed";
"-codequery",Arg.String(funs->CodeQuery.query:=Somes),Some"query"," execute the code query";
"-eradicate",Arg.SetConfig.eradicate,None," activate the eradicate checker for java annotations";
"-file",Arg.String(funs->only_files_cmdline:=s::!only_files_cmdline),Some"fname","specify one file to be analyzed (without path); the option can be repeated";
"-intraprocedural",Arg.SetConfig.intraprocedural,None,"perform an intraprocedural analysis only";
"-makefile",Arg.Set_stringmakefile_cmdline,Some"file","create a makefile to perform the analysis";
"-max_cluster",Arg.Set_intConfig.max_cluster_size,Some"n","set the max number of procedures in each cluster (default n=2000)";
"-only_nospecs",Arg.SetConfig.only_nospecs,None," only analyze procedures which were analyzed before but have no specs";
"-only_skips",Arg.SetConfig.only_skips,None," only analyze procedures dependent on previous skips which now have a .specs file";
"-seconds_per_iteration",Arg.Set_intseconds_per_iteration,Some"n","set the number of seconds per iteration (default n=30)";
"-simulate",Arg.Setsimulate,None," run a simulation of the analysis only";
"-subtype_multirange",Arg.SetConfig.subtype_multirange,None,"use the multirange subtyping domain";
"-optimistic_cast",Arg.SetConfig.optimistic_cast,None,"allow cast of undefined values";
"-select_proc",Arg.String(funs->select_proc:=Somes),Some"string","only consider procedures whose name contains the given string";
"-symops_per_iteration",Arg.Set_intsymops_per_iteration,Some"n","set the number of symbolic operations per iteration (default n="^(string_of_int!symops_per_iteration)^")";
"-type_size",Arg.SetConfig.type_size,None,"consider the size of types during analysis";
"-bugs",Arg.String(funs->bugs_csv:=create_outfiles),Some"bugs.csv","create file bugs.csv containing a list of bugs in CSV format";
"-bugs_json",Arg.String(funs->bugs_json:=create_outfiles),Some"bugs.json","create file bugs.json containing a list of bugs in JSON format";
"-bugs_txt",Arg.String(funs->bugs_txt:=create_outfiles),Some"bugs.txt","create file bugs.txt containing a list of bugs in text format";
"-bugs_xml",Arg.String(funs->bugs_xml:=create_outfiles),Some"bugs.xml","create file bugs.xml containing a list of bugs in XML format";
"-calls",Arg.String(funs->calls_csv:=create_outfiles),Some"calls.csv","write individual calls in csv format to file.csv";
"-load_results",Arg.String(funs->load_analysis_results:=Somes),Some"file.iar","load analysis results from Infer Analysis Results file file.iar";
"-procs",Arg.String(funs->procs_csv:=create_outfiles),Some"procs.csv","create file procs.csv containing statistics for each procedure in CSV format";
"-procs_xml",Arg.String(funs->procs_xml:=create_outfiles),Some"procs.xml","create file procs.xml containing statistics for each procedure in XML format";
"-results_dir",Arg.String(funs->results_dir_cmdline:=true;Config.results_dir:=s),Some"dir","read all the .specs files in the results dir";
"-q",Arg.Setquiet,None,"quiet: do not print specs on standard output";
"-save_results",Arg.String(funs->save_analysis_results:=Somes),Some"file.iar","save analysis results to Infer Analysis Results file file.iar";
"-unit_test",Arg.Setunit_test,None,"print unit test code";
"-xml",Arg.Setxml_specs,None,"export specs into XML files file1.xml ... filen.xml";
"-test_filtering",Arg.Settest_filtering,None,
"list all the files Infer can report on (should be call at the root of the procject, where
"-bugs",Arg.String(funs->bugs_csv:=create_outfiles),Some"bugs.csv","create file bugs.csv containing a list of bugs in CSV format";
"-bugs_json",Arg.String(funs->bugs_json:=create_outfiles),Some"bugs.json","create file bugs.json containing a list of bugs in JSON format";
"-bugs_txt",Arg.String(funs->bugs_txt:=create_outfiles),Some"bugs.txt","create file bugs.txt containing a list of bugs in text format";
"-bugs_xml",Arg.String(funs->bugs_xml:=create_outfiles),Some"bugs.xml","create file bugs.xml containing a list of bugs in XML format";
"-calls",Arg.String(funs->calls_csv:=create_outfiles),Some"calls.csv","write individual calls in csv format to file.csv";
"-load_results",Arg.String(funs->load_analysis_results:=Somes),Some"file.iar","load analysis results from Infer Analysis Results file file.iar";
"-procs",Arg.String(funs->procs_csv:=create_outfiles),Some"procs.csv","create file procs.csv containing statistics for each procedure in CSV format";
"-procs_xml",Arg.String(funs->procs_xml:=create_outfiles),Some"procs.xml","create file procs.xml containing statistics for each procedure in XML format";
"-results_dir",Arg.String(funs->results_dir_cmdline:=true;Config.results_dir:=s),Some"dir","read all the .specs files in the results dir";
"-q",Arg.Setquiet,None,"quiet: do not print specs on standard output";
"-save_results",Arg.String(funs->save_analysis_results:=Somes),Some"file.iar","save analysis results to Infer Analysis Results file file.iar";
"-unit_test",Arg.Setunit_test,None,"print unit test code";
"-xml",Arg.Setxml_specs,None,"export specs into XML files file1.xml ... filen.xml";
"-test_filtering",Arg.Settest_filtering,None,
"list all the files Infer can report on (should be call at the root of the procject, where
"-latex",Arg.String(funs->latex:=create_outfiles),Some"file.tex","print latex report to file.tex";
"-print_types",Arg.SetConfig.print_types,None,"print types in symbolic heaps";
"-precondition_stats",Arg.Setprecondition_stats,None,"print stats about preconditions to standard output";
"-report",Arg.String(funs->report:=create_outfiles),Some"report_file","create file report_file containing a report of the analysis results";
"-source_file_copy",Arg.String(funs->source_file_copy:=Some(DB.abs_source_file_from_paths)),Some"source_file","print the path of the copy of source_file in the results directory";
"-latex",Arg.String(funs->latex:=create_outfiles),Some"file.tex","print latex report to file.tex";
"-print_types",Arg.SetConfig.print_types,None,"print types in symbolic heaps";
"-precondition_stats",Arg.Setprecondition_stats,None,"print stats about preconditions to standard output";
"-report",Arg.String(funs->report:=create_outfiles),Some"report_file","create file report_file containing a report of the analysis results";
"-source_file_copy",Arg.String(funs->source_file_copy:=Some(DB.abs_source_file_from_paths)),Some"source_file","print the path of the copy of source_file in the results directory";
|Tstructofstruct_fields*struct_fields*csu*Mangled.toption*(csu*Mangled.t)list*Procname.tlist*item_annotation(** structure type with class/struct/union flag and name and list of superclasses *)
(** Structure type with nonstatic and static fields, class/struct/union flag, name, list of superclasses,