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
- Clone the repository:
$ git clone https://github.com/janislley/lsverifier.git
- 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)
| File | Size | Uploaded | |
|---|---|---|---|
| LSVerifier-0.3.0.tar.gz | 23.5 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|