⚠️ Documentation for Qilin is under development.
- DebloaterX published in our OOPSLA paper is now available in Qilin
- Qilin now supports Soot-4.5.0
The repository hosts Qilin, a new Java pointer analysis framework for supporting fine-grained context-sensitivity. For technical details, please refer to our ECOOP'22 paper.
- Java 16+ (Qilin uses the pattern matching for
instanceof
provided since Java 16). - Python 3.5+ (the api
subprocess.run
used inartifact/qilin.py
is added in Python 3.5).
This repository contains a submodule
that contains a set of real-world ready-to-use benchmarks for Qilin.
If you want to run Qilin on these benchmarks, please use the following command to fetch the Qilin source code:
$ git clone --recurse-submodules https://github.com/QilinPTA/Qilin.git
If you have cloned Qilin in a normal way, you still can use the command below to download these benchmarks:
$ git submodule update --init
We use Gradle as the build automation tool. To build Qilin, use
$ ./run.sh
This script contains commands to generate Qilin-VERSION-SNAPSHOT.jar
, which will be automatically moved
into artifact/
.
For users who want to build Qilin in IDE, please refer to this page.
You can use Qilin either through its command-line interface (e.g., driver.Main
) or as a library.
For researchers who are working on Java pointer analysis, we have provided a whole set of scripts, benchmarks (
e.g., DaCapo2006
) and jdk libraries under artifact/
.
To test Qilin, you can directly do:
$ cd artifact
$ python3 run.py antlr ci -print
The above command will analyse antlr
with a context-insensitive pointer analysis with some metrics being displayed on
the screen.
We plan to optimise the run.py
script to make its help info more user-friendly.
About Qilin | Setup Guide | User Guide | Developer Guide |
---|---|---|---|
Introducing Qilin -- what it does and how we design it | A step by step setup guide to build Qilin | Command-line options of Qilin, and running Qilin with an example | Detailed technical documentation and how to use Qilin as a lib for your tool or write your own analyses in Qilin |
Contributions are always welcome. Qilin is an open-source project that we publish in the hope that it will be useful to the research community as a whole. If you have a new feature or a bug fix that you would like to see in the official code repository, please open a merge request here on Github and leave a short description of what you have done.
Qilin is licenced under the GPL v2.1 license, see the LICENSE file.