Module InferModules.Driver

entry points for top-level functionalities such as capture under various build systems, analysis, and reporting

type mode =
| Analyze
| BuckGenrule of string
| 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
| Python of 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

include sig ... end
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 mode_of_build_command : string list ‑> mode

driver mode computed from the build command alone, eg ["buck"; "build"; ...] gives PythonCapture (BBuck, ["buck"; "build"; ...])

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 : mode ‑> 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