← All repos

infer

A static analyzer for Java, C, C++, and Objective-C

ccode-qualitycppjavaobjective-cstatic-analysisstatic-code-analysis
Browse cluster: Static Analysis & Code Quality
16,192commits
231contributors
28languages

Tech stack & purpose

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.

Community & reference links

Languages

OCaml
69.6%
Java
6.1%
C++
6.0%
LLVM
4.2%
Objective-C
2.9%
Makefile
2.6%
C
2.2%
Hack
1.5%
Erlang
1.3%
Swift
1.0%
Python
0.9%
Shell
0.5%
Kotlin
0.4%
M4
0.2%
Objective-C++
0.2%
MATLAB
0.1%
Common Lisp
0.1%
OpenEdge ABL
0.1%
Rust
0.1%
Dockerfile
0.0%
Emacs Lisp
0.0%
Starlark
0.0%
Gnuplot
0.0%
M
0.0%
Wolfram Language
0.0%
Assembly
0.0%
CMake
0.0%
Dune
0.0%

Contributors (top 30 of 231)