OCaml C Shell Ruby HTML Python
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bench put OCaml/lib benchmarks in bench/ Mar 8, 2018
g2html @ dbfa20d g2html: smaller warning-windows Jun 8, 2016
includes Add #define MODULE to preconf. Needed to parse a few more drivers. Oct 21, 2014
scripts also print id of failed tests Jun 8, 2018
spin better ltl not_starving Sep 14, 2017
src Remove faulty top check. Top address is any including top. Jul 17, 2018
tests options for term test Aug 23, 2017
unittest make uninit main branch 2/2 Aug 26, 2009
webapp @ d8c3a06 add g2html as a submodule Mar 27, 2014
.dockerignore update Dockerfile, .dockerignore = .gitignore May 17, 2018
.gitattributes Set up end-of-line normalization. May 8, 2013
.gitignore ignore vscode Jul 27, 2016
.gitmodules remove bench submodule from .gitmodules Jan 7, 2015
.merlin save json output in mongodb May 24, 2017
.travis.yml travis notifications in slack May 24, 2018
Dockerfile docker: quiet opam2 update May 22, 2018
LICENSE Update LICENSE for licensee/github to recognize. May 23, 2017
LICENSE.libs Set up end-of-line normalization. May 8, 2013
Makefile Change (fix?) old Makefile default to only native code. Jan 5, 2015
README.md docker in README May 18, 2018
Vagrantfile setup vagrant for local provision testing. see http://www.vagrantup.com/ Apr 26, 2013
dgoblint make it easy to switch between goblint/dgoblint Mar 2, 2015
docker-compose.test.yml docker: change locale from C to C.UTF-8 for tests Apr 6, 2017
goblint.dtd work for another html output Mar 2, 2014
goblint.install prepare opam package Dec 7, 2017
ma.sublime-project arinc: declarations and guards for return code variables Aug 28, 2014
make.sh tests need curl to download linux-headers Jun 13, 2018
myocamlbuild.ml EOL at EOF Jun 13, 2014
opam prepare opam package Dec 7, 2017
pgoblint.sh regression tests use warnstyle legacy Jun 6, 2018


goblint   Travis-CI Circle CI In Progress Gitter


Install opam, and then do opam install goblint to install the latest release.

For development, use make setup to install OCaml and all dependencies, and make to build.

Run goblint: ./goblint tests/regression/04-mutex/01-simple_rc.c.

If something goes wrong, take a look at travis-ci.sh for an example Ubuntu/macOS setup.


Goblint relies on GNU cpp to preprocess source files - the default clang cpp on macOS will not work. You can install it with brew install gcc (first do xcode-select --install if you don't want to build from source). You can check src/config.ml to see what command is used to call cpp.


We recommend using WSL/bash for Windows 10. For older versions you can try to build using Cygwin. For a goblint binary package, follow these instructions. For building from source, install Cygwin using setup-cygwin-dev.bat and then do

wget "https://raw.githubusercontent.com/goblint/analyzer/master/scripts/setup-cygwin-dev.sh" && source setup-cygwin-dev.sh

Docker container

You can run Goblint in a Docker container using:

docker run -it voglerr/goblint ./goblint --help

Virtual machine

A virtual machine containing Goblint can be set up using Vagrant:

vagrant up
vagrant ssh
sudo su -
cd analyzer

Web frontend

The analysis results are printed to stdout by default. Adding --html saves the results as XML, which is then transformed to be viewable in a web browser. Use make jar to build the needed Java program.

./goblint --html path/to/file.c && firefox result/index.xml