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.
708 lines
13 KiB
708 lines
13 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! IStd
|
|
module CLOpt = CommandLineOption
|
|
|
|
(** Configuration values: either constant, determined at compile time, or set at startup
|
|
time by system calls, environment variables, or command line options *)
|
|
|
|
type analyzer =
|
|
| BiAbduction
|
|
| CaptureOnly
|
|
| CompileOnly
|
|
| Checkers
|
|
| Crashcontext
|
|
| Linters
|
|
[@@deriving compare]
|
|
|
|
val equal_analyzer : analyzer -> analyzer -> bool
|
|
|
|
val string_to_analyzer : (string * analyzer) list
|
|
(** Association list of analyzers and their names *)
|
|
|
|
val string_of_analyzer : analyzer -> string
|
|
|
|
type language = Clang | Java | Python [@@deriving compare]
|
|
|
|
val equal_language : language -> language -> bool
|
|
|
|
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
|
|
|
|
val issues_fields_symbols :
|
|
( string
|
|
* [ `Issue_field_bug_class
|
|
| `Issue_field_kind
|
|
| `Issue_field_bug_type
|
|
| `Issue_field_qualifier
|
|
| `Issue_field_severity
|
|
| `Issue_field_visibility
|
|
| `Issue_field_line
|
|
| `Issue_field_column
|
|
| `Issue_field_procedure
|
|
| `Issue_field_procedure_id
|
|
| `Issue_field_procedure_start_line
|
|
| `Issue_field_file
|
|
| `Issue_field_bug_trace
|
|
| `Issue_field_key
|
|
| `Issue_field_hash
|
|
| `Issue_field_line_offset
|
|
| `Issue_field_procedure_id_without_crc
|
|
| `Issue_field_qualifier_contains_potential_exception_note ] )
|
|
list
|
|
|
|
type os_type = Unix | Win32 | Cygwin
|
|
|
|
type compilation_database_dependencies =
|
|
| Deps of int option
|
|
(** get the compilation database of the dependencies up to depth n
|
|
by [Deps (Some n)], or all by [Deps None] *)
|
|
| NoDeps
|
|
[@@deriving compare]
|
|
|
|
type dynamic_dispatch_policy = [`None | `Interface | `Sound | `Lazy]
|
|
|
|
val env_inside_maven : Unix.env
|
|
|
|
(** Constant configuration values *)
|
|
|
|
val anonymous_block_num_sep : string
|
|
|
|
val anonymous_block_prefix : string
|
|
|
|
val append_buck_flavors : string list
|
|
|
|
val assign : string
|
|
|
|
val backend_stats_dir_name : string
|
|
|
|
val bin_dir : 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 clang_initializer_prefix : string
|
|
|
|
val clang_inner_destructor_prefix : string
|
|
|
|
val classnames_dir_name : string
|
|
|
|
val classpath : string option
|
|
|
|
val cpp_extra_include_dir : string
|
|
|
|
val duplicates_filename : string
|
|
|
|
val relative_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 etc_dir : string
|
|
|
|
val fail_on_issue_exit_code : int
|
|
|
|
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 infer_top_results_dir_env_var : string
|
|
|
|
val initial_analysis_time : float
|
|
|
|
val ivar_attributes : string
|
|
|
|
val lib_dir : string
|
|
|
|
val lint_dotty_dir_name : string
|
|
|
|
val lint_issues_dir_name : string
|
|
|
|
val linters_failed_sentinel_filename : 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 max_widens : int
|
|
|
|
val meet_level : int
|
|
|
|
val models_dir : string
|
|
|
|
val models_jar : string
|
|
|
|
val models_src_dir : string
|
|
|
|
val multicore_dir_name : string
|
|
|
|
val ncpu : int
|
|
|
|
val nsnotification_center_checker_backend : bool
|
|
|
|
val os_type : os_type
|
|
|
|
val passthroughs : bool
|
|
|
|
val patterns_modeled_expensive : string * Yojson.Basic.json
|
|
|
|
val patterns_never_returning_null : string * Yojson.Basic.json
|
|
|
|
val patterns_skip_implementation : string * Yojson.Basic.json
|
|
|
|
val patterns_skip_translation : string * Yojson.Basic.json
|
|
|
|
val per_procedure_parallelism : bool
|
|
|
|
val perf_stats_prefix : string
|
|
|
|
val pp_version : Format.formatter -> unit -> unit
|
|
|
|
val proc_stats_filename : string
|
|
|
|
val property_attributes : string
|
|
|
|
val report : bool
|
|
|
|
val report_condition_always_true_in_clang : bool
|
|
|
|
val report_custom_error : bool
|
|
|
|
val report_json : string
|
|
|
|
val report_nullable_inconsistency : bool
|
|
|
|
val reporting_stats_dir_name : string
|
|
|
|
val save_compact_summaries : bool
|
|
|
|
val smt_output : bool
|
|
|
|
val source_file_extentions : string list
|
|
|
|
val sources : string list
|
|
|
|
val sourcepath : string option
|
|
|
|
val specs_dir_name : string
|
|
|
|
val specs_files_suffix : string
|
|
|
|
val start_filename : string
|
|
|
|
val trace_absarray : bool
|
|
|
|
val undo_join : bool
|
|
|
|
val unsafe_unret : string
|
|
|
|
val use_jar_cache : bool
|
|
|
|
val version_string : string
|
|
|
|
val weak : string
|
|
|
|
val whitelisted_cpp_methods : string list
|
|
|
|
val whitelisted_cpp_classes : string list
|
|
|
|
val wrappers_dir : string
|
|
|
|
(** Configuration values specified by command-line options *)
|
|
|
|
val anon_args : string list
|
|
|
|
val rest : string list
|
|
|
|
val abs_struct : int
|
|
|
|
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
|
|
|
|
val annotation_reachability : bool
|
|
|
|
val annotation_reachability_custom_pairs : Yojson.Basic.json
|
|
|
|
val array_level : int
|
|
|
|
val ast_file : string option
|
|
|
|
val biabduction : bool
|
|
|
|
val blacklist : string option
|
|
|
|
val bootclasspath : string option
|
|
|
|
val bo_debug : int
|
|
|
|
val buck : bool
|
|
|
|
val buck_build_args : string list
|
|
|
|
val buck_cache_mode : bool
|
|
|
|
val buck_compilation_database : compilation_database_dependencies option
|
|
|
|
val buck_out : string option
|
|
|
|
val bufferoverrun : bool
|
|
|
|
val bugs_csv : string option
|
|
|
|
val bugs_tests : string option
|
|
|
|
val bugs_txt : string option
|
|
|
|
val changed_files_index : string option
|
|
|
|
val calls_csv : string option
|
|
|
|
val captured_dir : string
|
|
(** directory where the results of the capture phase are stored *)
|
|
|
|
val clang_biniou_file : string option
|
|
|
|
val clang_frontend_action_string : string
|
|
|
|
val clang_frontend_do_capture : bool
|
|
|
|
val clang_frontend_do_lint : bool
|
|
|
|
val clang_ignore_regex : string option
|
|
|
|
val clang_include_to_override_regex : string option
|
|
|
|
val cluster_cmdline : string option
|
|
|
|
val command : CLOpt.command
|
|
|
|
val compute_analytics : bool
|
|
|
|
val continue_capture : bool
|
|
|
|
val crashcontext : bool
|
|
|
|
val create_harness : bool
|
|
|
|
val current_to_previous_script : string option
|
|
|
|
val cxx : bool
|
|
|
|
val cxx_infer_headers : bool
|
|
|
|
val debug_level_analysis : int
|
|
|
|
val debug_level_capture : int
|
|
|
|
val debug_level_linters : int
|
|
|
|
val debug_exceptions : bool
|
|
|
|
val debug_mode : bool
|
|
|
|
val default_linters : bool
|
|
|
|
val dependency_mode : bool
|
|
|
|
val developer_mode : bool
|
|
|
|
val differential_filter_files : string option
|
|
|
|
val differential_filter_set : [`Introduced | `Fixed | `Preexisting] list
|
|
|
|
val dotty_cfg_libs : bool
|
|
|
|
val dump_duplicate_symbols : bool
|
|
|
|
val dynamic_dispatch : [`None | `Interface | `Sound | `Lazy]
|
|
|
|
val eradicate : bool
|
|
|
|
val eradicate_condition_redundant : bool
|
|
|
|
val eradicate_field_not_mutable : bool
|
|
|
|
val eradicate_field_over_annotated : bool
|
|
|
|
val eradicate_optional_present : bool
|
|
|
|
val eradicate_propagate_return_nullable : bool
|
|
|
|
val eradicate_return_over_annotated : bool
|
|
|
|
val eradicate_debug : bool
|
|
|
|
val eradicate_verbose : bool
|
|
|
|
val fail_on_bug : bool
|
|
|
|
val fcp_apple_clang : string option
|
|
|
|
val fcp_syntax_only : bool
|
|
|
|
val file_renamings : string option
|
|
|
|
val filter_paths : bool
|
|
|
|
val filtering : bool
|
|
|
|
val flavors : bool
|
|
|
|
val force_delete_results_dir : bool
|
|
|
|
val fragment_retains_view : bool
|
|
|
|
val from_json_report : string option
|
|
|
|
val frontend_tests : bool
|
|
|
|
val frontend_stats : bool
|
|
|
|
val gen_previous_build_command_script : string option
|
|
|
|
val generated_classes : string option
|
|
|
|
val headers : bool
|
|
|
|
val html : bool
|
|
|
|
val icfg_dotty_outfile : string option
|
|
|
|
val ignore_trivial_traces : bool
|
|
|
|
val immutable_cast : bool
|
|
|
|
val infer_cache : string option
|
|
|
|
val infer_is_clang : bool
|
|
|
|
val infer_is_javac : bool
|
|
|
|
val iphoneos_target_sdk_version : string option
|
|
|
|
type iphoneos_target_sdk_version_path_regex = {path: Str.regexp; version: string}
|
|
|
|
val iphoneos_target_sdk_version_path_regex : iphoneos_target_sdk_version_path_regex list
|
|
|
|
val issues_fields :
|
|
[ `Issue_field_bug_class
|
|
| `Issue_field_kind
|
|
| `Issue_field_bug_type
|
|
| `Issue_field_qualifier
|
|
| `Issue_field_severity
|
|
| `Issue_field_visibility
|
|
| `Issue_field_line
|
|
| `Issue_field_column
|
|
| `Issue_field_procedure
|
|
| `Issue_field_procedure_id
|
|
| `Issue_field_procedure_start_line
|
|
| `Issue_field_file
|
|
| `Issue_field_bug_trace
|
|
| `Issue_field_key
|
|
| `Issue_field_hash
|
|
| `Issue_field_line_offset
|
|
| `Issue_field_procedure_id_without_crc
|
|
| `Issue_field_qualifier_contains_potential_exception_note ]
|
|
list
|
|
|
|
val iterations : int
|
|
|
|
val java_jar_compiler : string option
|
|
|
|
val javac_classes_out : string option
|
|
|
|
val javac_verbose_out : string
|
|
|
|
val jobs : int
|
|
|
|
val join_cond : int
|
|
|
|
val keep_going : bool
|
|
|
|
val latex : string option
|
|
|
|
val linter : string option
|
|
|
|
val linters_def_file : string list
|
|
|
|
val linters_def_folder : string list
|
|
|
|
type linter_doc_url = {linter: string; doc_url: string}
|
|
|
|
val linters_doc_url : linter_doc_url list
|
|
|
|
val linters_developer_mode : bool
|
|
|
|
val linters_ignore_clang_failures : bool
|
|
|
|
val linters_validate_syntax_only : bool
|
|
|
|
val liveness : bool
|
|
|
|
val load_analysis_results : string option
|
|
|
|
val log_file : string
|
|
|
|
val makefile_cmdline : string
|
|
|
|
val max_nesting : int option
|
|
|
|
val merge : bool
|
|
|
|
val ml_buckets :
|
|
[`MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown] list
|
|
|
|
val models_mode : bool
|
|
|
|
val modified_targets : string option
|
|
|
|
val monitor_prop_size : bool
|
|
|
|
val nelseg : bool
|
|
|
|
val no_translate_libs : bool
|
|
|
|
val nullable_annotation : string option
|
|
|
|
val objc_memory_model_on : bool
|
|
|
|
val only_cheap_debug : bool
|
|
|
|
val only_footprint : bool
|
|
|
|
val only_show : bool
|
|
|
|
val pmd_xml : bool
|
|
|
|
val precondition_stats : bool
|
|
|
|
val previous_to_current_script : string option
|
|
|
|
val print_active_checkers : bool
|
|
|
|
val print_builtins : bool
|
|
|
|
val print_logs : bool
|
|
|
|
val print_types : bool
|
|
|
|
val print_using_diff : bool
|
|
|
|
val printf_args : bool
|
|
|
|
val procedures_per_process : int
|
|
|
|
val procs_csv : string option
|
|
|
|
val procs_xml : string option
|
|
|
|
val project_root : string
|
|
|
|
val quandary : bool
|
|
|
|
val quandary_endpoints : Yojson.Basic.json
|
|
|
|
val quandary_sanitizers : Yojson.Basic.json
|
|
|
|
val quandary_sources : Yojson.Basic.json
|
|
|
|
val quandary_sinks : Yojson.Basic.json
|
|
|
|
val quiet : bool
|
|
|
|
val reactive_mode : bool
|
|
|
|
val reactive_capture : bool
|
|
|
|
val repeated_calls : bool
|
|
|
|
val report_current : string option
|
|
|
|
val report_formatter : [`No_formatter | `Phabricator_formatter]
|
|
|
|
val report_hook : string option
|
|
|
|
val report_previous : string option
|
|
|
|
val tracing : bool
|
|
|
|
val reports_include_ml_loc : bool
|
|
|
|
val resource_leak : bool
|
|
|
|
val results_dir : string
|
|
|
|
val save_analysis_results : string option
|
|
|
|
val seconds_per_iteration : float option
|
|
|
|
val select : int option
|
|
|
|
val show_buckets : bool
|
|
|
|
val show_progress_bar : bool
|
|
|
|
val siof : bool
|
|
|
|
val siof_safe_methods : string list
|
|
|
|
val skip_analysis_in_path : string list
|
|
|
|
val skip_analysis_in_path_skips_compilation : bool
|
|
|
|
val skip_duplicated_types : bool
|
|
|
|
val skip_translation_headers : string list
|
|
|
|
val source_preview : bool
|
|
|
|
val spec_abs_level : int
|
|
|
|
val specs_library : string list
|
|
|
|
val stacktrace : string option
|
|
|
|
val stacktraces_dir : string option
|
|
|
|
val stats_mode : bool
|
|
|
|
val stats_report : string option
|
|
|
|
val subtype_multirange : bool
|
|
|
|
val suggest_nullable : bool
|
|
|
|
val svg : bool
|
|
|
|
val symops_per_iteration : int option
|
|
|
|
val test_filtering : bool
|
|
|
|
val testing_mode : bool
|
|
|
|
val threadsafety : bool
|
|
|
|
val threadsafe_aliases : Yojson.Basic.json
|
|
|
|
val trace_error : bool
|
|
|
|
val trace_ondemand : bool
|
|
|
|
val trace_join : bool
|
|
|
|
val trace_rearrange : bool
|
|
|
|
val tv_limit : int
|
|
|
|
val type_size : bool
|
|
|
|
val unsafe_malloc : bool
|
|
|
|
val whole_seconds : bool
|
|
|
|
val worklist_mode : int
|
|
|
|
val write_dotty : bool
|
|
|
|
val write_html : bool
|
|
|
|
val write_html_whitelist_regex : string list
|
|
|
|
val xcode_developer_dir : string option
|
|
|
|
val xcpretty : bool
|
|
|
|
val xml_specs : bool
|
|
|
|
(** Global variables *)
|
|
|
|
val arc_mode : bool ref
|
|
|
|
val curr_language : language ref
|
|
|
|
val curr_language_is : language -> bool
|
|
|
|
val footprint : bool ref
|
|
|
|
val run_in_footprint_mode : ('a -> 'b) -> 'a -> 'b
|
|
(** Call f x with footprint set to true.
|
|
Restore the initial value of footprint also in case of exception. *)
|
|
|
|
val run_in_re_execution_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 forcing_delayed_prints : bool 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
|
|
|
|
val run_with_abs_val_equal_zero : ('a -> 'b) -> 'a -> 'b
|
|
(** Call f x with abs_val set to zero.
|
|
Restore the initial value also in case of exception. *)
|
|
|
|
val allow_leak : bool ref
|
|
|
|
val clang_compilation_dbs : [`Escaped of string | `Raw of string] list ref
|
|
|
|
(** Command Line Interface Documentation *)
|
|
|
|
val print_usage_exit : unit -> 'a
|