A static analyzer for Java, C, C++, and Objective-C
Infer is a static analysis tool developed by Meta that detects bugs in Java, C, C++, and Objective-C code. Written in OCaml, Infer translates source code from multiple languages into an intermediate representation called SIL (Separation Logic Intermediate Language) and then applies various analysis engines—primarily Pulse, an abstract domain handling memory safety, taint tracking, null safety, and resource leaks—to identify potential issues. The project includes frontends for each supported language (using a custom Clang plugin for C-family languages and bytecode parsing for Java), an abstract interpretation framework for fixpoint computation, and specialized analysis modules for buffer overruns, concurrency, and computational cost analysis.