IBase.IssueTypeval compare_visibility : visibility -> visibility -> intval equal_visibility : visibility -> visibility -> boolval string_of_visibility : visibility -> stringval all_of_severity : severity listval all_of_category : category listval string_of_severity : severity -> stringval string_of_category : category -> stringval category_documentation : category -> stringtype t = private {unique_id : string;checker : Checker.t;category : category;visibility : visibility;user_documentation : string option;mutable default_severity : severity;used for documentation but can be overriden at report time
*)mutable enabled : bool;mutable hum : string;}include Ppx_compare_lib.Comparable.S with type t := tval compare : t Base__Ppx_compare_lib.compareval all_issues : unit -> t listall the issues declared so far
val pp : Stdlib.Format.formatter -> t -> unitpretty print a localised string
val find_from_string : id:string -> t optionreturn the issue type if it was previously registered
val register_dynamic :
?enabled:bool ->
?hum:string ->
id:string ->
?user_documentation:string ->
severity ->
Checker.t ->
tCreate a new issue and register it in the list of all issues. NOTE: if the issue with the same string id is already registered, overrides `hum` but DOES NOT override `enabled`. This trick allows to deal with disabling/enabling dynamic issues from the config, when we don't know all params yet. Thus, the human-readable description can be updated when we encounter the definition of the issue type.
Whether the issue was registered as coming from the given checker. Important to call this before reporting to keep documentation accurate.
val set_enabled : t -> bool -> unitval abduction_case_not_implemented : tval arbitrary_code_execution_under_lock : tval array_of_pointsto : tval array_out_of_bounds_l1 : tval array_out_of_bounds_l2 : tval array_out_of_bounds_l3 : tval assert_failure : tval bad_footprint : tval bad_arg : latent:bool -> tval bad_generator : latent:bool -> tval bad_key : latent:bool -> tval bad_map : latent:bool -> tval bad_record : latent:bool -> tval bad_return : latent:bool -> tval biabduction_analysis_stops : tval biabduction_retain_cycle : tval block_parameter_not_null_checked : tval buffer_overrun_l1 : tval buffer_overrun_l2 : tval buffer_overrun_l3 : tval buffer_overrun_l4 : tval buffer_overrun_l5 : tval buffer_overrun_s2 : tval buffer_overrun_u5 : tval cannot_star : tval captured_strong_self : tval checkers_allocates_memory : tWarning name when a performance critical method directly or indirectly calls a method allocating memory
val checkers_annotation_reachability_error : tval checkers_calls_expensive_method : tWarning name when a performance critical method directly or indirectly calls a method annotatd as expensive
val checkers_expensive_overrides_unexpensive : tWarning name for the subtyping rule: method not annotated as expensive cannot be overridden by a method annotated as expensive
val checkers_fragment_retain_view : tval checkers_printf_args : tval class_cast_exception : tval complexity_increase : kind:CostKind.t -> is_on_ui_thread:bool -> tval condition_always_false : tval condition_always_true : tval config_impact_analysis : tval config_impact_analysis_strict : tval pulse_config_usage : tval pulse_const_refable : tval constant_address_dereference : latent:bool -> tval cxx_ref_captured_in_block : tval create_intent_from_uri : tval cross_site_scripting : tval dangling_pointer_dereference : tval dangling_pointer_dereference_maybe : tval data_flow_to_sink : tval datalog_fact : tval dead_store : tval deadlock : tval divide_by_zero : tval do_not_report : tan issue type that should never be reported
val empty_vector_access : tval exposed_insecure_intent_handling : tval expensive_cost_call : kind:CostKind.t -> tval failure_exe : tval guardedby_violation : tval impure_function : tval inefficient_keyset_iterator : tval inferbo_alloc_is_big : tval inferbo_alloc_is_negative : tval inferbo_alloc_is_zero : tval inferbo_alloc_may_be_big : tval inferbo_alloc_may_be_negative : tval infinite_cost_call : kind:CostKind.t -> tval inherently_dangerous_function : tval insecure_intent_handling : tval integer_overflow_l1 : tval integer_overflow_l2 : tval integer_overflow_l5 : tval integer_overflow_u5 : tval interface_not_thread_safe : tval internal_error : tval invalid_sil : tval invariant_call : tval ipc_on_ui_thread : tval javascript_injection : tval lab_resource_leak : tval leak_after_array_abstraction : tval leak_in_footprint : tval leak_unknown_origin : tval lockless_violation : tval lock_consistency_violation : tval logging_private_data : tval expensive_loop_invariant_call : tval memory_leak : tval missing_fld : tval missing_required_prop : tval mixed_self_weakself : tval modifies_immutable : tval multiple_weakself : tval mutual_recursion_cycle : tval nil_block_call : latent:bool -> tval nil_insertion_into_collection : latent:bool -> tval nil_messaging_to_non_pod : latent:bool -> tval no_match_of_rhs : latent:bool -> tval no_matching_case_clause : latent:bool -> tval no_matching_else_clause : latent:bool -> tval no_matching_function_clause : latent:bool -> tval no_true_branch_in_if : latent:bool -> tval no_matching_branch_in_try : latent:bool -> tval null_argument : latent:bool -> tval null_dereference : tval nullptr_dereference : latent:bool -> tval nullptr_dereference_in_nullsafe_class : latent:bool -> tval optional_empty_access : latent:bool -> tval precondition_not_found : tval precondition_not_met : tval premature_nil_termination : tval pulse_cannot_instantiate_abstract_class : tval pulse_dict_missing_key : tval pulse_dynamic_type_mismatch : tval pulse_transitive_access : tval pulse_memory_leak_c : tval pulse_memory_leak_cpp : tval pulse_resource_leak : tval pulse_unawaited_awaitable : tval pulse_uninitialized_const : tval pure_function : tval quandary_taint_error : tval regex_op_on_ui_thread : tval resource_leak : tval retain_cycle : tval retain_cycle_no_weak_info : tval scope_leakage : tval sensitive_data_flow : tval skip_function : tval shell_injection : tval shell_injection_risk : tval sql_injection : tval sql_injection_risk : tval stack_variable_address_escape : tval starvation : tval static_initialization_order_fiasco : tval strict_mode_violation : tval strong_self_not_checked : tval symexec_memory_error : tval taint_error : tval thread_safety_violation : tval topl_error : latent:bool -> tval uninitialized_value_pulse : tval unnecessary_copy_pulse : tval unnecessary_copy_assignment_pulse : tval unnecessary_copy_assignment_const_pulse : tval unnecessary_copy_assignment_movable_pulse : tval unnecessary_copy_intermediate_pulse : tval unnecessary_copy_intermediate_const_pulse : tval unnecessary_copy_movable_pulse : tval unnecessary_copy_optional_pulse : tval unnecessary_copy_optional_const_pulse : tval unnecessary_copy_return_pulse : tval unreachable_code_after : tval use_after_delete : latent:bool -> tval use_after_free : latent:bool -> tval use_after_lifetime : latent:bool -> tval untrusted_buffer_access : tval untrusted_deserialization : tval untrusted_deserialization_risk : tval untrusted_file : tval untrusted_file_risk : tval untrusted_heap_allocation : tval untrusted_intent_creation : tval untrusted_url_risk : tval untrusted_environment_change_risk : tval untrusted_variable_length_array : tval user_controlled_sql_risk : tval vector_invalidation : latent:bool -> tval pulse_reference_stability : tval weak_self_in_noescape_block : tval wrong_argument_number : tval unreachable_cost_call : kind:CostKind.t -> tmodule Map : IStdlib.PrettyPrintable.PPMap with type key = t