jlisa is a static analysis tool built upon the LiSA framework. It provides a frontend for analyzing Java source code using configurable abstract domains and analysis strategies.
This tool parses Java source code, analyzes it using abstract interpretation, and generates analysis results in a specified output directory. It is built on top of the LiSA framework, providing support for heap analysis, numeric analysis, and type inference.
Clone the repository:
git clone https://github.com/lisa-analyzer/jlisa.git
cd jlisaBuild with Gradle:
./gradlew clean buildTo analyze Java source files:
./gradlew distZip./build/distributions/jlisa-0.1/bin/jlisa -s path/to/File.java -o out/ -n ConstantPropagation| Option | Long Option | Argument | Description |
|---|---|---|---|
-h |
--help |
None | Print help message |
-s |
--source |
Files | Java source files to analyze |
-o |
--outdir |
Path | Output directory for results |
-l |
--log-level |
Level | Logging level (e.g., INFO, DEBUG, ERROR) |
-v |
--version |
None | Version of current jlisa's implementation |
N/A |
--no-html |
None | Disable html output |
The main execution flow is handled by the Main class:
- Parses command line arguments using Apache Commons CLI.
- Parses Java source files using the
JavaFrontend. - Builds a LiSA
Programfrom the parsed files. - Configures analysis parameters (
LiSAConfiguration). - Executes the analysis and writes results.
The default abstract state consists of:
FieldSensitivePointBasedHeapfor heap abstractionIntegerConstantPropagationfor numeric analysisInferredTypesfor type inference
Make sure to have the following prerequisites:
- Java 17 or later
- Maven 3.6+
To run locally using Gradle:
./gradlew run --args="-s path/to/File.java -o out/ -n ConstantPropagation"This project is licensed under the MIT License.