Module IBase.Checker

module F = Stdlib.Format
type t =
  1. | AnnotationReachability
  2. | Biabduction
  3. | BufferOverrunAnalysis
  4. | BufferOverrunChecker
  5. | ConfigImpactAnalysis
  6. | Cost
  7. | Datalog
  8. | DisjunctiveDemo
  9. | FragmentRetainsView
  10. | Impurity
  11. | InefficientKeysetIterator
  12. | LithoRequiredProps
  13. | Liveness
  14. | LoopHoisting
  15. | ParameterNotNullChecked
  16. | PrintfArgs
  17. | Pulse
  18. | PurityAnalysis
  19. | PurityChecker
  20. | Quandary
  21. | RacerD
  22. | ResourceLeakLabExercise
  23. | ScopeLeakage
  24. | SIOF
  25. | SILValidation
  26. | Lineage
  27. | LineageShape
  28. | SelfInBlock
  29. | Starvation
  30. | Topl
include Ppx_compare_lib.Equal.S with type t := t
val equal : t Base__Ppx_compare_lib.equal
include Ppx_enumerate_lib.Enumerable.S with type t := t
val all : t list
type support =
  1. | NoSupport
    (*

    checker does not run at all for this language

    *)
  2. | ExperimentalSupport
    (*

    checker runs but is not expected to give reasonable results

    *)
  3. | Support
    (*

    checker is expected to give reasonable results

    *)

per-language support for each checker

type cli_flags = {
  1. deprecated : string list;
    (*

    More command-line flags, similar to ~deprecated arguments in CommandLineOption.

    *)
  2. show_in_help : bool;
}
type kind =
  1. | UserFacing of {
    1. title : string;
      (*

      the title of the documentation web page

      *)
    2. markdown_body : string;
      (*

      main text of the documentation

      *)
    }
    (*

    can report issues to users

    *)
  2. | UserFacingDeprecated of {
    1. title : string;
      (*

      the title of the documentation web page

      *)
    2. markdown_body : string;
      (*

      main text of the documentation

      *)
    3. deprecation_message : string;
    }
    (*

    can report issues to users but should probably be deleted from infer

    *)
  3. | Internal
    (*

    Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.

    *)
  4. | Exercise
    (*

    reserved for the "resource leak" lab exercise

    *)
type config = {
  1. id : string;
    (*

    Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.

    *)
  2. kind : kind;
  3. support : Language.t -> support;
  4. short_documentation : string;
    (*

    used in man pages and as a short intro on the website

    *)
  5. cli_flags : cli_flags option;
    (*

    If None then the checker cannot be enabled/disabled from the command line.

    *)
  6. enabled_by_default : bool;
  7. activates : t list;
    (*

    list of checkers that get enabled when this checker is enabled

    *)
}
val config : t -> config
val get_id : t -> string

get_id c is (config c).id

val from_id : string -> t option
val pp_manual : F.formatter -> t -> unit

prints a short explanation of the checker; used for the man pages