Module Integration.Driver

type mode =
| Analyze
| AnalyzeJson
| Ant of {
prog : string;
args : string list;
}
| BuckClangFlavor of {
build_cmd : string list;
}
| BuckCompilationDB of {
deps : IBase.BuckMode.clang_compilation_db_deps;
prog : string;
args : string list;
}
| BuckGenrule of {
prog : string;
}
| BuckJavaFlavor of {
build_cmd : string list;
}
| Clang of {
compiler : Clang.compiler;
prog : string;
args : string list;
}
| ClangCompilationDB of {
db_files : [ `Escaped of string | `Raw of string ] list;
}
| Gradle of {
prog : string;
args : string list;
}
| Javac of {
compiler : Javac.compiler;
prog : string;
args : string list;
}
| Maven of {
prog : string;
args : string list;
}
| NdkBuild of {
build_cmd : string list;
}
| Rebar3 of {
args : string list;
}
| XcodeBuild of {
prog : string;
args : string list;
}
| XcodeXcpretty of {
prog : string;
args : string list;
}

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

val is_analyze_mode : mode -> bool
val mode_from_command_line : mode IStdlib.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:IBase.SourceFile.Set.t option -> mode -> unit

run the capture for the given mode

val analyze_and_report : ?⁠suppress_console_report:bool -> changed_files:IBase.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