/rust-lisa

Rust frontend for LiSA

Primary LanguageJavaMIT LicenseMIT

Rust Java Gradle GitHub Workflow Status (branch) GitHub last commit

RustLiSA

An abstract interpretation-based static analyzer for Rust built upon LiSA (Library for Static Analysis)

🛠 Build

RustLiSA comes as a Gradle 6.6 project.

Development is done in Eclipse. You need to:

  • install the Gradle IDE Pack plugin through the Eclipse Marketplace; from the eclipse menu bar:
    • Help
    • Eclipse Marketplace...
    • Search for Gradle IDE Pack 3.8
    • Install Gradle IDE Pack 3.8
  • import the project into the eclipse workspace as a Gradle project.
  • run the ./rust-lisa/gradlew build

Run the project with Java 11. Note: in order to have gradle run you must run the project necessary with Java 11 and no greater version.

⚙️ Run

To run the project by using Eclipse you can use Run as Java application in Eclipse and passing a path to a Rust file as first argument.

The result will be put under the output folder, which will have all the enabled reports and a .dot file with the LiSA-CFG

You can run other gradle task with

./rust-lisa/gradlew -q :tasks --all

🎯 Contribute

Before every commit it is necessary to open a new branch with

git checkout -b <branch-name>

then you can start committing on that branch. Once you have finished, you first need to run

./rust-lisa/gradlew build
./rust-lisa/gradlew spotlessApply

and commit every change made to the files.

After that, you can open a Pull Request, marking the reviewers and adding tags about the PR, also with a short description.

🚀 Next steps

  • complete compilation from Rust constructs to LiSA control-flow graph nodes
  • complete semantics methods of Rust control-flow graph nodes
  • integrate APRON for numerical analyses