{"id":25777073,"url":"https://github.com/QilinPTA/Qilin","last_synced_at":"2025-02-27T06:07:13.391Z","repository":{"id":45585283,"uuid":"377440459","full_name":"QilinPTA/Qilin","owner":"QilinPTA","description":"Qilin: A New Framework for Supporting Fine-Grained Context-Sensitivity in Java Pointer Analysis","archived":false,"fork":false,"pushed_at":"2025-02-08T04:07:59.000Z","size":337324,"stargazers_count":129,"open_issues_count":1,"forks_count":31,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-02-08T05:18:10.611Z","etag":null,"topics":["java-pointer-analysis","static-analysis"],"latest_commit_sha":null,"homepage":"https://qilinpta.github.io/Qilin","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QilinPTA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-16T09:23:54.000Z","updated_at":"2025-02-08T04:08:04.000Z","dependencies_parsed_at":"2025-02-08T05:27:58.947Z","dependency_job_id":null,"html_url":"https://github.com/QilinPTA/Qilin","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QilinPTA%2FQilin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QilinPTA%2FQilin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QilinPTA%2FQilin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QilinPTA%2FQilin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QilinPTA","download_url":"https://codeload.github.com/QilinPTA/Qilin/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240987435,"owners_count":19889335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java-pointer-analysis","static-analysis"],"created_at":"2025-02-27T06:01:36.030Z","updated_at":"2025-02-27T06:07:13.383Z","avatar_url":"https://github.com/QilinPTA.png","language":"Java","funding_links":[],"categories":["静态分析"],"sub_categories":[],"readme":"[![Gradle](https://github.com/QilinPTA/Qilin/actions/workflows/gradle.yml/badge.svg?event=push)](https://github.com/QilinPTA/Qilin/actions/workflows/gradle.yml)\n[![Docker](https://github.com/QilinPTA/Qilin/actions/workflows/docker-image.yml/badge.svg?event=push)](https://github.com/QilinPTA/Qilin/actions/workflows/docker-image.yml)\n[![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/QilinPTA/Qilin)\n\n\u003e :warning: [Documentation for Qilin](https://qilinpta.github.io/) is under development.\n\n# News\n\n* \u003cb\u003e[DebloaterX](https://github.com/DongjieHe/DebloaterX) published in\n  our [OOPSLA paper](https://dongjiehe.github.io/mypaper/OOPSLA2023_DebloaterX_Preprint.pdf) is now available in\n  Qilin\u003c/b\u003e\n* \u003cb\u003eQilin now supports Soot-4.6.0\u003c/b\u003e\n\n# Qilin: A fully imperative Java Pointer Analysis Framework.\n\nThe repository hosts Qilin, a new Java pointer analysis framework for supporting fine-grained context-sensitivity. For\ntechnical details, please refer to\nour [ECOOP'22 paper](https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ECOOP.2022.30).\n\n## A Quick Start\n\n### Prerequisites\n\n* Java 16+ (Qilin uses the pattern matching for `instanceof` provided since Java 16).\n* Python 3.5+ (the api `subprocess.run` used in `artifact/qilin.py` is added in Python 3.5).\n\n### Download\n\nThis repository contains a `submodule` that contains a set of real-world ready-to-use benchmarks for Qilin.\nIf you want to run Qilin on these benchmarks, please use the following command to fetch the Qilin source code:\n\n```\n$ git clone --recurse-submodules https://github.com/QilinPTA/Qilin.git\n```\n\nIf you have cloned Qilin in a normal way, you still can use the command below to download these benchmarks:\n\n```\n$ git submodule update --init\n```\n\n### Building Qilin with Gradle\n\nWe use Gradle as the build automation tool. To build Qilin, use\n\n```\n$ ./run.sh\n```\n\nThis script contains commands to generate `Qilin-VERSION-SNAPSHOT.jar`, which will be automatically moved\ninto `artifact/`.\n\nFor users who want to build Qilin in IDE, please refer\nto [this page](https://github.com/QilinPTA/Qilin/wiki/Set-up-the-Debugging-Environment-for-Qilin-in-IntelliJ-IDEA).\n\n### Using Qilin\n\nYou can use Qilin either through its command-line interface (e.g., `driver.Main`) or as a library.\nFor researchers who are working on Java pointer analysis, we have provided a whole set of scripts, benchmarks (\ne.g., `DaCapo2006`) and jdk libraries under `artifact/`.\n\nTo test Qilin, you can directly do:\n\n```\n$ cd artifact\n$ python3 run.py antlr ci -print\n```\n\nThe above command will analyse `antlr` with a context-insensitive pointer analysis with some metrics being displayed on\nthe screen.  \nWe plan to optimise the `run.py` script to make its help info more user-friendly.\n\n## Documentation\n\n| About Qilin                                                                                                                                                                   |                                                  Setup  Guide                                                   |                                                                                                                                                                                                               User Guide |                                                                                                                                                                                                                                                                                                  Developer Guide |\n|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------:|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|\n| Introducing Qilin -- [what it does](https://qilinpta.github.io/Qilin/#what-is-qilin) and [how we design it](https://github.com/QilinPTA/Qilin/wiki/Qilin-Design#qilin-design) | A step by step [setup guide](https://github.com/QilinPTA/Qilin/wiki/Setup-Guide#getting-started) to build Qilin | [Command-line options](https://github.com/QilinPTA/Qilin/wiki/Full-list-of-Qilin-options) of Qilin, and running Qilin with [an example](https://github.com/QilinPTA/Qilin/wiki/Analyse-a-Simple-Java-Program#an-example) | Detailed [technical documentation](https://qilinpta.github.io/Qilin/QilinCodeStructure.html) and how to [use Qilin as a lib](https://github.com/QilinPTA/Qilin/wiki/Qilin-as-a-lib) for your tool or [write your own analyses](https://github.com/QilinPTA/Qilin/wiki/Write-your-own-analysis-in-Qilin) in Qilin |\n\n## Contributing to Qilin\n\nContributions are always welcome. Qilin is an open-source project that we publish in the hope that it will be useful to\nthe research community as a whole.\nIf you have a new feature or a bug fix that you would like to see in the official code repository, please open a merge\nrequest here on Github and leave a short description of what you have done.\n\n## License\n\nQilin is licenced under the GPL v2.1 license, see the LICENSE file.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQilinPTA%2FQilin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FQilinPTA%2FQilin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQilinPTA%2FQilin/lists"}