The Sparrow Static Analyzer
Switch branches/tags
Nothing to show
Clone or download


Sparrow is a state-of-the-art static analyzer that aims to verify the absence of fatal bugs in C source. Sparrow is designed based on the Abstract Interpretation framework and the analysis is sound in design. Sparrow adopts a number of well-founded static analysis techniques for scalability, precision, and user convenience. This is the academic version of Sparrow that is different from the commercial version.

Build Status

Build Status Build Status

Sparrow Dependencies

To build Sparrow, you need

Optionally, you need the following prerequisites to use machine-learning features

Install Sparrow with OPAM

The easiest way to install Sparrow is to use OPAM. Once you have cloned the source codes, run the build script to install the prerequisites and Sparrow:

$ git clone
$ cd sparrow
$ ./
$ eval `opam config env`

After that, you can directly run make or make install.

Optionally, you need to set up environment variables to use machine-learning features depending on the installation prefix.


For example, if you install Sparrow using OPAM:

$ export SPARROW_BIN_PATH=`opam config var sparrow:bin`
$ export SPARROW_DATA_PATH=`opam config var sparrow:etc`

Run the analysis

You can run Sparrow for buffer overflow detection on pre-processed C files. For example:

$ ./bin/sparrow test.i
# partially flow-sensitive analysis with degree [0-100]
$ ./bin/sparrow -pfs 10 test.i
# selectively unsound analysis with bugfinder level [0-2]
$ ./bin/sparrow -bugfinder 2 test.i