Cookie Consent by TermsFeed Projects structure | LiSA Menu

Projects structure

LiSA is split into several sub-projects, organized as in the following image, where straight arrows are compile dependencies, while dashed ones are test dependencies.

project structure

In each project, source files are located under src/main/java, while test source files are located under src/test/java. The root project lisa defines some common logic for the whole ecosystem, as coding style checks and test grouping. Specifically:

On each push to the master branch, a completeBuild is ran, wile pushes on other branch just perform a regular build. When a pull request is opened, and whenever new commits are pushed to that request, a completeBuild is ran and its successful result is a blocking criterion for the acceptance of the pull request.

lisa-sdk

lisa-sdk is the main artifact of LiSA, and it contains all the classes needed for developing frontends and analysis components, but contains no execution logic nor analysis implementations. The main packages of this project are:

For more information on these concepts, read the documentation on LiSA’s foundations.

lisa-core

lisa-core contains the implementations of abstract domains, call graphs and interprocedural analyses following the interfaces provided in lisa-sdk, as well as the execution logic. Specifically, LiSA.java is the entry point for running an analysis, that receives instances of LiSAConfiguration.java for setting it up. LiSAFactory.java can instead be used to instantiate various analysis components using default values, with the capability of customizing such defaults.

lisa-core also contains tests that run complete analyses, registered as cron tests, that verify the behavior of the implementations provided by the project itself. These tests work by comparing all files (except logs) generated by the analysis with baseline results under the folder imp-testcases. The tests usually run inside test-outputs, that is treated as a temporary folder whose contents are not committed and can be deleted at any point.

lisa-imp

lisa-imp contains the IMP frontend that is used for demos and internal testing (mostly for cron tests in lisa-core). The project uses antlr for generating a lexer and a parser starting from a grammar defined in src/main/antlr. Outputs of the generation are stored under build/generated-src/antlr/main and are used as additional sources for the project. The IMP frontend mostly uses expressions and types from the base ones present in lisa-sdk. For a documentation about the language, see the dedicated page here.

Releases 0.1b1 and older

LiSA was composed by one monolithic project that can be found here. The IMP frontend was all contained in the test source folder.