Skip to content
The goblint static analysis framework
OCaml C Shell Ruby HTML Python Other
Branch: master
Clone or download
vogler run
find "$path" -name "$name" -type f -print0 | xargs -0 sed -i 's/[ \t]*$//'
Latest commit 962a62b Sep 11, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
bench hashcons/equality experiments/benchmark Sep 10, 2019
conf use hashcons for incremental Sep 10, 2019
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
obj/.depend Git migration fixes, restore empty dirs and needed ignore files. Jul 18, 2011
scripts fixes to make it work with initial commit Aug 15, 2019
spin better ltl not_starving Sep 14, 2017
src run Sep 11, 2019
tests Remove redundant AddressOf padding. Jul 17, 2018
unittest run Sep 11, 2019
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 use opam local switch: all deps from `opam` file are installed in `_o… Jun 12, 2019
.gitmodules remove bench submodule from .gitmodules Jan 7, 2015
.merlin save json output in mongodb May 24, 2017
.travis.yml travis: no more gitter, no more notification Jul 23, 2019
Dockerfile docker: some info about fat/slim opam base images, compiling compiler… Jul 23, 2019
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 remove unused and Jun 25, 2019
Vagrantfile setup vagrant for local provision testing. see Apr 26, 2013
_tags start to fix unit tests Jun 19, 2019
dgoblint make it easy to switch between goblint/dgoblint Mar 2, 2015
docker-compose.test.yml docker: build image in any case, run tests and only push on success Jul 3, 2019
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 opam: put --locked at the end, see ocaml/opam#3932 Jul 22, 2019 run Sep 11, 2019
opam opam: install ounit for unit tests Jun 24, 2019
opam.locked opam lock: new ppx_deriving_yojson Jul 16, 2019 regression tests use warnstyle legacy Jun 6, 2018

goblint   Travis-CI Circle CI


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 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/ 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 "" && source

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
You can’t perform that action at this time.