Module InferModules.Driver

type mode =
| Analyze
| BuckGenrule of string
| BuckGenruleMaster of string list
| BuckCompilationDB of string * string list
| Clang of Clang.compiler * string * string list
| ClangCompilationDB of [ `Escaped of string | `Raw of string ] list
| Javac of Javac.compiler * string * string list
| Maven of string * string list
| PythonCapture of InferBase.Config.build_system * string list
| XcodeXcpretty of string * string list

based on the build_system and options passed to infer, we run in different driver modes

val compare_mode : mode -> mode -> int
val equal_mode : mode -> mode -> bool
val mode_from_command_line : mode InferStdlib.IStd.Lazy.t

driver mode computed from the command-line arguments and settings in Config

val run_prologue : mode -> unit

prepare the environment for running the given mode

val capture : changed_files:InferBase.SourceFile.Set.t option -> mode -> unit

run the capture for the given mode

val analyze_and_report : ?⁠suppress_console_report:bool -> changed_files:InferBase.SourceFile.Set.t option -> mode -> unit

run the analysis for the given mode

val run_epilogue : unit -> unit

cleanup infer-out/ for Buck, generate stats, and generally post-process the results of a run

val read_config_changed_files : unit -> InferBase.SourceFile.Set.t option

return the list of changed files as read from Config.changed_files_index and passed to SourceFile.changed_sources_from_changed_files