You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
317 lines
9.0 KiB
317 lines
9.0 KiB
(*
|
|
* Copyright (c) 2009 - 2013 Monoidics ltd.
|
|
* Copyright (c) 2013 - present Facebook, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* This source code is licensed under the BSD style license found in the
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
*)
|
|
|
|
open! Utils
|
|
|
|
(** Configuration values: either constant, determined at compile time, or set at startup
|
|
time by system calls, environment variables, or command line options *)
|
|
|
|
|
|
(** Various kind of analyzers *)
|
|
type analyzer = Capture | Compile | Infer | Eradicate | Checkers | Tracing
|
|
| Crashcontext | Linters | Quandary
|
|
|
|
(** Association list of analyzers and their names *)
|
|
val string_to_analyzer : (string * analyzer) list
|
|
|
|
|
|
type clang_lang = C | CPP | OBJC | OBJCPP
|
|
|
|
type language = Clang | Java
|
|
|
|
val string_of_language : language -> string
|
|
|
|
|
|
val ml_bucket_symbols :
|
|
(string * [ `MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown ])
|
|
list
|
|
|
|
|
|
type os_type = Unix | Win32 | Cygwin
|
|
|
|
|
|
type method_pattern = {
|
|
class_name : string;
|
|
method_name : string option;
|
|
parameters : (string list) option;
|
|
}
|
|
|
|
type pattern =
|
|
| Method_pattern of language * method_pattern
|
|
| Source_contains of language * string
|
|
|
|
|
|
type zip_library = {
|
|
zip_filename : string;
|
|
zip_channel : Zip.in_file Lazy.t;
|
|
models : bool;
|
|
}
|
|
|
|
|
|
(** Constant configuration values *)
|
|
|
|
val allow_missing_index_in_proc_call : bool
|
|
val anonymous_block_num_sep : string
|
|
val anonymous_block_prefix : string
|
|
val assign : string
|
|
val attributes_dir_name : string
|
|
val backend_stats_dir_name : string
|
|
val bound_error_allowed_in_procedure_call : bool
|
|
val buck_generated_folder : string
|
|
val buck_infer_deps_file_name : string
|
|
val captured_dir_name : string
|
|
val checks_disabled_by_default : string list
|
|
val clang_build_output_dir_name : string
|
|
val cpp_models_dir : string
|
|
val csl_analysis : bool
|
|
val default_failure_name : string
|
|
val default_in_zip_results_dir : string
|
|
val dotty_output : string
|
|
val fail_on_issue_exit_code : int
|
|
val filter_buckets : bool
|
|
val frontend_stats_dir_name : string
|
|
val global_tenv_filename : string
|
|
val idempotent_getters : bool
|
|
val incremental_procs : bool
|
|
val infer_py_argparse_error_exit_code : int
|
|
val initial_analysis_time : float
|
|
val ivar_attributes : string
|
|
val lint_issues_dir_name : string
|
|
val load_average : float option
|
|
val log_analysis_crash : string
|
|
val log_analysis_file : string
|
|
val log_analysis_procedure : string
|
|
val log_analysis_recursion_timeout : string
|
|
val log_analysis_symops_timeout : string
|
|
val log_analysis_wallclock_timeout : string
|
|
val log_dir_name : string
|
|
val max_recursion : int
|
|
val meet_level : int
|
|
val models_dir : string
|
|
val ncpu : int
|
|
val nsnotification_center_checker_backend : bool
|
|
val os_type : os_type
|
|
val patterns_modeled_expensive : pattern list
|
|
val patterns_never_returning_null : pattern list
|
|
val patterns_skip_translation : pattern list
|
|
val patterns_suppress_warnings : pattern list
|
|
val perf_stats_prefix : string
|
|
val proc_stats_filename : string
|
|
val property_attributes : string
|
|
val report_nullable_inconsistency : bool
|
|
val reporting_stats_dir_name : string
|
|
val save_compact_summaries : bool
|
|
val save_time_in_summaries : bool
|
|
val smt_output : bool
|
|
val source_file_extentions : string list
|
|
val sources_dir_name : string
|
|
val specs_dir_name : string
|
|
val specs_files_suffix : string
|
|
val start_filename : string
|
|
val taint_analysis : bool
|
|
val trace_absarray : bool
|
|
val undo_join : bool
|
|
val unsafe_unret : string
|
|
val weak : string
|
|
val whitelisted_cpp_methods : string list list
|
|
val wrappers_dir : string
|
|
|
|
|
|
(** Configuration values specified by environment variables *)
|
|
|
|
val from_env_variable : string -> bool
|
|
val get_env_variable : string -> string option
|
|
|
|
val analyze_models : bool
|
|
val lazy_dynamic_dispatch : bool
|
|
val report_custom_error : bool
|
|
val sound_dynamic_dispatch : bool
|
|
|
|
val is_originator : bool
|
|
|
|
|
|
(** Configuration values specified by command-line options *)
|
|
|
|
val anon_args : string list
|
|
val rest : string list
|
|
val abs_struct : int
|
|
val absolute_paths : bool
|
|
val allow_specs_cleanup : bool
|
|
val analysis_path_regex_whitelist : analyzer -> string list
|
|
val analysis_path_regex_blacklist : analyzer -> string list
|
|
val analysis_blacklist_files_containing : analyzer -> string list
|
|
val analysis_stops : bool
|
|
val analysis_suppress_errors : analyzer -> string list
|
|
val analyzer : analyzer option
|
|
val angelic_execution : bool
|
|
val array_level : int
|
|
val ast_file : string option
|
|
val blacklist : string option
|
|
val buck : bool
|
|
val buck_build_args : string list
|
|
val buck_out : string option
|
|
val bugs_csv : outfile option
|
|
val bugs_json : outfile option
|
|
val bugs_tests : outfile option
|
|
val bugs_txt : outfile option
|
|
val bugs_xml : outfile option
|
|
val changed_files_index : string option
|
|
val calls_csv : outfile option
|
|
val checkers : bool
|
|
val checkers_enabled : bool
|
|
val clang_include_to_override : string option
|
|
val clang_lang : clang_lang
|
|
val cluster_cmdline : string option
|
|
val code_query : string option
|
|
val continue_capture : bool
|
|
val copy_propagation : bool
|
|
val crashcontext : bool
|
|
val create_harness : bool
|
|
val cxx_experimental : bool
|
|
val debug_mode : bool
|
|
val debug_exceptions : bool
|
|
val dependency_mode : bool
|
|
val developer_mode : bool
|
|
val disable_checks : string list
|
|
val dotty_cfg_libs : bool
|
|
val enable_checks : string list
|
|
val eradicate : bool
|
|
val err_file_cmdline : string
|
|
val fail_on_bug : bool
|
|
val failures_allowed : bool
|
|
val filtering : bool
|
|
val flavors : bool
|
|
val frontend_debug : bool
|
|
val frontend_stats : bool
|
|
val headers : bool
|
|
val infer_cache : string option
|
|
val iterations : int
|
|
val javac_verbose_out : string
|
|
val jobs : int
|
|
val join_cond : int
|
|
val latex : outfile option
|
|
val load_analysis_results : string option
|
|
val llvm : bool
|
|
val makefile_cmdline : string
|
|
val merge : bool
|
|
val ml_buckets :
|
|
[ `MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown ] list
|
|
val models_file : string option
|
|
val models_mode : bool
|
|
val modified_targets : string option
|
|
val monitor_prop_size : bool
|
|
val nelseg : bool
|
|
val no_static_final : bool
|
|
val no_translate_libs : bool
|
|
val nonstop : bool
|
|
val objc_memory_model_on : bool
|
|
val only_footprint : bool
|
|
val optimistic_cast : bool
|
|
val out_file_cmdline : string
|
|
val pmd_xml : bool
|
|
val precondition_stats : bool
|
|
val print_builtins : bool
|
|
val print_types : bool
|
|
val print_using_diff : bool
|
|
val procs_csv : outfile option
|
|
val procs_xml : outfile option
|
|
val project_root : string option
|
|
val quandary : bool
|
|
val quiet : bool
|
|
val reactive_mode : bool
|
|
val report : outfile option
|
|
val report_runtime_exceptions : bool
|
|
val reports_include_ml_loc : bool
|
|
val results_dir : string
|
|
val save_analysis_results : string option
|
|
val seconds_per_iteration : float
|
|
val show_buckets : bool
|
|
val show_progress_bar : bool
|
|
val skip_clang_analysis_in_path : string list
|
|
val skip_translation_headers : string list
|
|
val source_file : string option
|
|
val source_file_copy : string option
|
|
val spec_abs_level : int
|
|
val specs_library : string list
|
|
val stacktrace : string option
|
|
val stacktraces_dir : string option
|
|
val stats_mode : bool
|
|
val subtype_multirange : bool
|
|
val svg : bool
|
|
val symops_per_iteration : int
|
|
val test : bool
|
|
val test_filtering : bool
|
|
val testing_mode : bool
|
|
val trace_error : bool
|
|
val trace_join : bool
|
|
val trace_rearrange : bool
|
|
val type_size : bool
|
|
val unsafe_malloc : bool
|
|
val use_compilation_database : [ `Deps | `NoDeps ] option
|
|
val whole_seconds : bool
|
|
val worklist_mode : int
|
|
val write_dotty : bool
|
|
val write_html : bool
|
|
val xcode_developer_dir : string option
|
|
val xml_specs : bool
|
|
val zip_libraries : zip_library list
|
|
|
|
|
|
(** Global variables *)
|
|
|
|
(** [set_reference_and_call_function ref val f x] calls f x with ref set to val.
|
|
Restore the initial value also in case of exception. *)
|
|
val set_reference_and_call_function : 'a ref -> 'a -> ('b -> 'c) -> 'b -> 'c
|
|
|
|
val footprint : bool ref
|
|
|
|
(** Call f x with footprint set to true.
|
|
Restore the initial value of footprint also in case of exception. *)
|
|
val run_in_footprint_mode : ('a -> 'b) -> 'a -> 'b
|
|
|
|
(** Call f x with footprint set to false.
|
|
Restore the initial value of footprint also in case of exception. *)
|
|
val run_in_re_execution_mode : ('a -> 'b) -> 'a -> 'b
|
|
|
|
val forcing_delayed_prints : bool ref
|
|
val nLOC : int ref
|
|
val pp_simple : bool ref
|
|
|
|
|
|
|
|
(** Global variables with initial values specified by command-line options *)
|
|
|
|
val abs_val : int ref
|
|
|
|
val reset_abs_val : unit -> unit
|
|
|
|
(** Call f x with abs_val set to zero.
|
|
Restore the initial value also in case of exception. *)
|
|
val run_with_abs_val_equal_zero : ('a -> 'b) -> 'a -> 'b
|
|
|
|
val allow_leak : bool ref
|
|
val arc_mode : bool ref
|
|
val curr_language : language ref
|
|
|
|
|
|
(** Command Line Interface Documentation *)
|
|
|
|
val print_usage_exit : unit -> 'a
|
|
|
|
(** Name of files for logging the output in the current executable *)
|
|
val log_files_of_current_exe : string * string
|
|
|
|
(** Name of current temporary files for logging the output in the current executable *)
|
|
val tmp_log_files_of_current_exe : unit -> string * string
|
|
|
|
(** should_log_exe = true means that files for logging in the log folder will be created
|
|
and uses of Logging.out or Logging.err will log in those files *)
|
|
val should_log_current_exe : bool
|