Skip to main content

LSVerifier

LSVerifier is a command-line tool for formal verification of large ANSI-C projects in a single run.

It leverages the ESBMC model checker as its core verification engine.

Demo video.

Version

Version Improviments
v0.3.0 Support specific class of property verification; Support for large software; Prioritized functions verification, Disable invalid pointer verification.
v0.2.0 Support for libraries dependencies; Recursive verification.

Installation

Install LSVerifier

From repository
  1. Clone the repository:
$ git clone https://github.com/janislley/lsverifier.git
  1. Install using pip:
$ cd LSVerifier
$ pip3 install .
From Pypi
$ pip3 install lsverifier

Usage

1. Verify a project

$ cd <project-root>
$ lsverifier -r -f

For projects with third-party library dependencies, use -l option to specify header paths:

$ lsverifier -r -f -l dep.txt

See an example of dep.txt below:

  /usr/include/glib-2.0/
  /usr/lib/x86_64-linux-gnu/glib-2.0/include/extcap/
  extcap/
  plugins/epan/ethercat/
  plugins/epan/falco_bridge/
  plugins/epan/wimaxmacphy/
  epan/crypt/
  ...

2. Verify a single C file

$ lsverifier -f -fl file.c

3. Verify C files using a priorization algorithm

If you want to verify a project using a prioritization scheme, run:

$ cd <project-root>
$ lsverifier -r -fp

4. Verify an entire project by providing the folder path as an argument

To set the folder path parameter, you should use -d:

lsverifier -r -f -l dep.txt -d project-root/

5. Verify C files using a predefined class of properties

In the project that you want to verify, run:

$ lsverifier -r -f -p memory-leak-check,overflow-check,deadlock-check,data-races-check

See more properties on tool help.

6. LSVerifier help

For more details, check the help:

$ lsverifier -h

usage: lsverifier [-h] [-l LIBRARIES] [-p PROPERTIES] [-f] [-fp] [-fl FILE] [-v] [-r] [-d DIRECTORY] [-dp] [-e ESBMC_PARAMETER]

Input Options

optional arguments:
  -h, --help            show this help message and exit
  -l,--libraries LIBRARIES
                        Path to the file that describes the libraries' dependencies
  -p,--properties PROPERTIES
                        Properties to be verified (comma separated):
                        multi-property
                        nan-check
                        memory-leak-check
                        floatbv
                        overflow-check
                        unsigned-overflow-check
                        ub-shift-check
                        struct-fields-check
                        deadlock-check
                        data-races-check
                        lock-order-check
  -f, --functions       Enable Functions Verification
  -fp, --function-prioritized
                        Enable Prioritized Functions Verification
  -fl,--file FILE       File to be verified
  -v, --verbose         Enable Verbose Output
  -r, --recursive       Enable Recursive Verification
  -d,--directory DIRECTORY
                        Set the directory to be verified
  -dp, --disable-pointer-check
                        Disable invalid pointer property verification
  -e,--esbmc-parameter ESBMC_PARAMETER
                        Use ESBMC parameter

Verification report

The verification results will be saved in output folder, automatically created in the current verification path. Each verification run generates two files:

  • lsverifier-DATE.log: Contains the verification output log.
  • lsverifier-DATE.csv: Contains the verification results in CSV format.

Metadata

Release files for LSVerifier 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for LSVerifier 0.3.0
File Size Uploaded
LSVerifier-0.3.0.tar.gz 23.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for LSVerifier 0.3.0
File Interpreter ABI Platform
LSVerifier-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 47.1 MB

Release files / LSVerifier-0.3.0.tar.gz

Download URL LSVerifier-0.3.0.tar.gz
Size 23.5 MB
Tags Source
SHA-256 checksum
How to use checksums
9fa5e85c2e77900f95c0e7a710dae60c6390584bb3d280842a1c1bc59efc74d7
BLAKE2b-256 checksum
How to use checksums
b08c04b5324c81bb4acc0737902fba3f294d1180c37fa6b3b6d478dcd99f61db
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / LSVerifier-0.3.0-py3-none-any.whl

Download URL LSVerifier-0.3.0-py3-none-any.whl
Size 23.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
c14dc7332f071cb26667703e83b9e95fcd86efafd52c9cfe19aea7ebdf7a5a7c
BLAKE2b-256 checksum
How to use checksums
4b243564c5150841e1d0e656d7a4fba0e1b21b3a9148af10ff9dd76d4415ff49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page