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 arbitrary_code_execution_under_lock : 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 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 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 compared_to_null_and_dereferenced : 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_string_captured_in_block : tval cxx_ref_captured_in_block : tval data_flow_to_sink : tval dead_store : tval deadlock : tval static_constructor_stall : tval do_not_report : tan issue type that should never be reported
val expensive_cost_call : kind:CostKind.t -> 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 infinite_recursion : tval integer_overflow_l1 : tval integer_overflow_l2 : tval integer_overflow_l5 : tval integer_overflow_u5 : tval interface_not_thread_safe : tval invalid_sil : tval invariant_call : tval ipc_on_ui_thread : tval lab_resource_leak : tval lockless_violation : tval lock_consistency_violation : tval lock_on_ui_thread : tval expensive_loop_invariant_call : 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 ns_string_captured_in_block : tval null_argument : latent:bool -> tval nullptr_dereference : latent:bool -> tval nullptr_dereference_in_nullsafe_class : latent:bool -> tval optional_empty_access : latent:bool -> tval pulse_assertion_error : 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_unfinished_builder : tval pulse_uninitialized_const : tval pulse_uninitialized_method : tval pure_function : tval regex_op_on_ui_thread : tval retain_cycle : tval retain_cycle_no_weak_info : tval scope_leakage : tval self_in_block_passed_to_init : tval sensitive_data_flow : tval stack_variable_address_escape : tval starvation : tval static_initialization_order_fiasco : tval strict_mode_violation : tval strong_self_not_checked : 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 unnecessary_copy_thrift_assignment_pulse : tval unreachable_code_after : tval use_after_delete : latent:bool -> tval use_after_free : latent:bool -> tval use_after_lifetime : latent:bool -> tval vector_invalidation : latent:bool -> tval pulse_reference_stability : tval weak_self_in_noescape_block : tval unreachable_cost_call : kind:CostKind.t -> tval lineage_flow : tmodule Map : IStdlib.PrettyPrintable.PPMap with type key = t