analyzer

Static analysis framework for C

https://github.com/goblint/analyzer

Science Score: 62.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
    Organization goblint has institutional domain (goblint.in.tum.de)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.6%) to scientific vocabulary

Keywords

abstract-interpretation c ocaml program-analysis race-conditions race-detection software-verification static-analysis static-code-analysis
Last synced: 4 months ago · JSON representation ·

Repository

Static analysis framework for C

Basic Info
  • Host: GitHub
  • Owner: goblint
  • License: mit
  • Language: OCaml
  • Default Branch: master
  • Homepage: https://goblint.in.tum.de
  • Size: 39.2 MB
Statistics
  • Stars: 201
  • Watchers: 17
  • Forks: 83
  • Open Issues: 249
  • Releases: 22
Topics
abstract-interpretation c ocaml program-analysis race-conditions race-detection software-verification static-analysis static-code-analysis
Created over 14 years ago · Last pushed 4 months ago
Metadata Files
Readme Changelog License Citation Zenodo

README.md

Goblint

GitHub release status opam package status Zenodo DOI

locked workflow status unlocked workflow status Coverage Status docker workflow status Documentation Status project chat

Documentation can be browsed on Read the Docs or GitHub.

Installing

Both for using an up-to-date version of Goblint or developing it, the best way is to install from source by cloning this repository. For benchmarking Goblint, please follow the Benchmarking guide on Read the Docs.

Linux

  1. Install opam.
  2. Make sure the following are installed: git, patch, m4, autoconf, libgmp-dev, libmpfr-dev and pkg-config.
  3. Run make setup to install OCaml and dependencies via opam.
  4. Run make to build Goblint itself.
  5. Run make install to install Goblint into the opam switch for usage via switch's PATH.
  6. Optional: See scripts/bash-completion.sh for setting up bash completion for Goblint arguments.

MacOS

  1. Install GCC with brew install gcc grep (first run xcode-select --install if you don't want to build it from source). Goblint requires GCC while macOS's default cpp is Clang, which will not work.
  2. ONLY for M1 (ARM64) processor: homebrew changed its install location from /usr/local/ to /opt/homebrew/. For packages to find their dependecies execute sudo ln -s /opt/homebrew/{include,lib} /usr/local/.
  3. Continue using Linux instructions (the formulae in brew for patch, libgmp-dev, libmpfr-dev are gpatch, gmp, mpfr, respectively).

Windows

  1. Install WSL2. Goblint is not compatible with WSL1.
  2. Continue using Linux instructions in WSL.

Other

  • opam. Install opam and run opam install goblint.
  • devcontainer. Select "Reopen in Container" in VS Code and continue with make using Linux instructions in devcontainer.
  • Docker (GitHub Container Registry). Run docker pull ghcr.io/goblint/analyzer:latest (or :nightly).
  • Docker (repository). Clone and run docker build -t goblint ..
  • Vagrant. Clone and run vagrant up && vagrant ssh.

Running

To confirm that building worked, you can try running Goblint as follows: ./goblint tests/regression/04-mutex/01-simple_rc.c To confirm that installation into the opam switch worked, you can try running Goblint as follows: goblint tests/regression/04-mutex/01-simple_rc.c To confirm that the Docker container worked, you can try running Goblint as follows: docker run -it --rm -v $(pwd):/data goblint /data/tests/regression/04-mutex/01-simple_rc.c If pulled from GitHub Container Registry, use the container name ghcr.io/goblint/analyzer:latest (or :nightly) instead.

For further information, see documentation.

Acknowledgements

Work on Goblint was supported in part by Deutsche Forschungsgemeinschaft (DFG) (47140942/1480 PUMA, 378803395/2428 ConVeY), ARTEMIS Joint Undertaking (269335 MBAT), ITEA3 project 14014 ASSUME, the Shota Rustaveli National Science Foundation of Georgia FR-21-7973, the Estonian Research Council (IUT2-1, PSG61), and the Estonian Centre of Excellence in IT (EXCITE), funded by the European Regional Development Fund.

We also thank Zulip for providing free Zulip Cloud Standard hosting for the Goblint project. Zulip is an open-source modern team chat app designed to keep both live and asynchronous conversations organized.

Owner

  • Name: Goblint Project
  • Login: goblint
  • Kind: organization

Citation (CITATION.cff)

cff-version: 1.2.0

message: "If you use this software, please cite it using the metadata from this file." # message required

title: "Goblint"
abstract: "Static analysis framework for C"
authors: # same authors as in .zenodo.json and dune-project
  - given-names: Simmo
    family-names: Saan
    affiliation: "University of Tartu"
    orcid: "https://orcid.org/0000-0003-4553-1350"
  - given-names: Michael
    family-names: Schwarz
    affiliation: "Technische Universität München"
    orcid: "https://orcid.org/0000-0002-9828-0308"
  - given-names: Julian
    family-names: Erhard
    affiliation: "Technische Universität München"
    orcid: "https://orcid.org/0000-0002-1729-3925"
  - given-names: Sarah
    family-names: Tilscher
    affiliation: "Technische Universität München"
    orcid: "https://orcid.org/0009-0009-9644-7475"
  - given-names: Karoliine
    family-names: Holter
    affiliation: "University of Tartu"
    orcid: "https://orcid.org/0009-0008-3725-4131"
  - given-names: Ralf
    family-names: Vogler
    affiliation: "Technische Universität München"
  - given-names: Kalmer
    family-names: Apinis
    affiliation: "University of Tartu"
  - given-names: Vesal
    family-names: Vojdani
    affiliation: "University of Tartu"
    orcid: "https://orcid.org/0000-0003-4336-7980"

license: MIT
repository-code: "https://github.com/goblint/analyzer"
url: "https://goblint.in.tum.de"
doi: 10.5281/zenodo.5735006

GitHub Events

Total
  • Create event: 115
  • Release event: 4
  • Issues event: 100
  • Watch event: 30
  • Delete event: 91
  • Issue comment event: 307
  • Push event: 515
  • Pull request review comment event: 739
  • Pull request event: 219
  • Pull request review event: 655
  • Fork event: 5
Last Year
  • Create event: 115
  • Release event: 4
  • Issues event: 100
  • Watch event: 30
  • Delete event: 91
  • Issue comment event: 307
  • Push event: 515
  • Pull request review comment event: 739
  • Pull request event: 219
  • Pull request review event: 655
  • Fork event: 5

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 159
  • Total pull requests: 275
  • Average time to close issues: 6 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 14
  • Total pull request authors: 25
  • Average comments per issue: 1.16
  • Average comments per pull request: 1.29
  • Merged pull requests: 182
  • Bot issues: 0
  • Bot pull requests: 8
Past Year
  • Issues: 52
  • Pull requests: 121
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 20 days
  • Issue authors: 9
  • Pull request authors: 16
  • Average comments per issue: 0.92
  • Average comments per pull request: 0.86
  • Merged pull requests: 71
  • Bot issues: 0
  • Bot pull requests: 1
Top Authors
Issue Authors
  • michael-schwarz (76)
  • sim642 (65)
  • karoliineh (5)
  • DrMichaelPetter (5)
  • Robotechnic (3)
  • Red-Panda64 (2)
  • vogler (2)
  • stilscher (1)
  • pvouzis (1)
  • AdrianKrauss (1)
  • SchiJoha (1)
  • leunam99 (1)
  • arkocal (1)
  • FungOliver (1)
Pull Request Authors
  • sim642 (136)
  • michael-schwarz (63)
  • karoliineh (33)
  • DrMichaelPetter (9)
  • dependabot[bot] (8)
  • Red-Panda64 (5)
  • arkocal (5)
  • jerhard (4)
  • FelixKrayer (2)
  • GollokG (2)
  • RonaldJudin (2)
  • vesalvojdani (2)
  • stilscher (2)
  • Robotechnic (2)
  • SchiJoha (2)
Top Labels
Issue Labels
bug (73) sv-comp (40) unsound (38) precision (32) good first issue (28) cleanup (27) feature (22) relational (21) usability (17) benchmarking (13) performance (11) testing (7) setup (7) student-job (5) documentation (3) in progress (2) type-safety (2) pr-dependency (2) parallel (2) debugging (1) github_actions (1) unsound-usability (1) question (1) preprocessing (1) explainability (1) sv-benchmarks-MR (1)
Pull Request Labels
bug (88) cleanup (76) precision (70) sv-comp (67) feature (43) unsound (40) relational (30) performance (25) usability (23) testing (18) dependencies (16) setup (16) type-safety (14) documentation (10) student-job (9) benchmarking (7) github_actions (5) in progress (4) c11 (2) parallel (2) explainability (1) upstream (1) proof-of-concept (1) pr-dependency (1) unsound-usability (1) python (1) practical-course (1) preprocessing (1)

Dependencies

.github/workflows/coverage.yml actions
  • actions/checkout v4 composite
  • actions/upload-artifact v3 composite
  • ocaml/setup-ocaml v2 composite
.github/workflows/docker.yml actions
  • actions/checkout v4 composite
  • docker/build-push-action v5 composite
  • docker/login-action v3 composite
  • docker/metadata-action v5 composite
  • docker/setup-buildx-action v3 composite
.github/workflows/docs.yml actions
  • actions/checkout v4 composite
  • actions/configure-pages v3 composite
  • actions/deploy-pages v2 composite
  • actions/upload-pages-artifact v2 composite
  • ocaml/setup-ocaml v2 composite
.github/workflows/indentation.yml actions
  • actions/checkout v4 composite
  • ocaml/setup-ocaml v2 composite
.github/workflows/locked.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
  • actions/upload-artifact v3 composite
  • ocaml/setup-ocaml v2 composite
.github/workflows/metadata.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
  • docker://citationcff/cffconvert latest composite
.github/workflows/options.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
.github/workflows/semgrep.yml actions
  • actions/checkout v4 composite
  • github/codeql-action/upload-sarif v2 composite
.github/workflows/unlocked.yml actions
  • actions/checkout v4 composite
  • addnab/docker-run-action v3 composite
  • docker/build-push-action v5 composite
  • docker/setup-buildx-action v3 composite
  • ocaml/setup-ocaml v2 composite
.devcontainer/Dockerfile docker
  • ocaml/opam ubuntu-22.04-opam build
Dockerfile docker
  • dev latest build
  • ocaml/opam ubuntu-22.04-opam build
  • ubuntu 22.04 build
docs/requirements.txt pypi
  • jinja2 ==3.0.3
  • mkdocs ==1.2.3