The goblint static analysis framework
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bench put OCaml/lib benchmarks in bench/ Mar 8, 2018
g2html @ dbfa20d
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 also print id of failed tests Jun 8, 2018
spin better ltl not_starving Sep 14, 2017
src
tests Remove redundant AddressOf padding. Jul 17, 2018
unittest make uninit main branch 2/2 Aug 26, 2009
webapp @ d8c3a06 add g2html as a submodule Mar 27, 2014
.dockerignore
.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
LICENSE.libs
Makefile
README.md docker in README May 18, 2018
Vagrantfile
_tags always compile with debug info, -O3 when using flambda (~9% faster) Mar 7, 2018
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
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

README.md

goblint   Travis-CI Circle CI In Progress Gitter

Setup

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.

macOS

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.

Windows

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