{"id":29396051,"url":"https://github.com/Artisan-Lab/RAPx","last_synced_at":"2025-07-10T12:04:05.173Z","repository":{"id":198844952,"uuid":"700269511","full_name":"Artisan-Lab/RAPx","owner":"Artisan-Lab","description":"Rust Analysis Platform","archived":false,"fork":false,"pushed_at":"2025-07-01T08:58:55.000Z","size":2592,"stargazers_count":84,"open_issues_count":1,"forks_count":26,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-07-01T09:44:09.505Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://artisan-lab.github.io/RAPx","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Artisan-Lab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-MPL","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,"zenodo":null}},"created_at":"2023-10-04T09:20:41.000Z","updated_at":"2025-07-01T08:58:58.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a12b125-eddf-43f4-a64e-0fec21d4772c","html_url":"https://github.com/Artisan-Lab/RAPx","commit_stats":null,"previous_names":["artisan-lab/rap","artisan-lab/rapx"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Artisan-Lab/RAPx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artisan-Lab%2FRAPx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artisan-Lab%2FRAPx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artisan-Lab%2FRAPx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artisan-Lab%2FRAPx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Artisan-Lab","download_url":"https://codeload.github.com/Artisan-Lab/RAPx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artisan-Lab%2FRAPx/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263568534,"owners_count":23481663,"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":[],"created_at":"2025-07-10T12:01:31.032Z","updated_at":"2025-07-10T12:04:05.167Z","avatar_url":"https://github.com/Artisan-Lab.png","language":"Rust","funding_links":[],"categories":["Development tools"],"sub_categories":["Static analysis"],"readme":"# ![logo](https://raw.githubusercontent.com/Artisan-Lab/RAPx/main/logo.png)\nRAPx (Rust Analysis Platform with Extensions) [![license](https://img.shields.io/github/license/Artisan-Lab/RAPx)](./LICENSE-MPL)[![docs.rs](https://img.shields.io/docsrs/rapx)](https://docs.rs/rapx) is an advanced static analysis platform for Rust, developed by researchers at [Artisan-Lab](https://hxuhack.github.io), Fudan University. It provides an extensible framework for building and integrating powerful analysis capabilities that go beyond those available in the standard rustc compiler, empowering developers to reason about safety, robustness, and performance at a deeper level.\n\nRAPx is available on crates.io. [![crates.io](https://img.shields.io/crates/v/rapx.svg)](https://crates.io/crates/rapx)\n\n## Features\n# ![logo](https://raw.githubusercontent.com/Artisan-Lab/RAPx/main/feature.png)\nRAPx is structured into two layers: a core layer offering essential program analysis algorithms (e.g., alias and dataflow analysis), and an application layer implementing specific tasks such as bug detection. This separation of concerns promotes modular development and fosters collaboration between algorithm and application developers.\n\nThe project is still under heavy development. For further details, please refer to the [RAPx-Book](https://artisan-lab.github.io/RAPx-Book).\n\n## Quick Start\n\nInstall `nightly-2025-06-02` on which rapx is compiled with. This just needs to do once on your machine. If the toolchain exists,\nthis will do nothing.\n\n```shell\nrustup toolchain install nightly-2025-06-02 --profile minimal --component rustc-dev,rust-src,llvm-tools-preview\ncargo +nightly-2025-06-02 install rapx --git https://github.com/Artisan-Lab/RAPx.git\n```\n\n## Usage\n\nNavigate to your Rust project folder containing a `Cargo.toml` file. Then run `rapx` by manually specifying the toolchain version according to the [toolchain override shorthand syntax](https://rust-lang.github.io/rustup/overrides.html#toolchain-override-shorthand).\n\n```shell\ncargo +nightly-2025-06-02 rapx [rapx options] -- [cargo check options]\n```\n\nor by setting up default toolchain to the required version.\n```shell\nrustup default nightly-2025-06-02\n```\n\nCheck out supported options with `-help`:\n\n```shell\ncargo rapx -help\n\nUsage:\n    cargo rapx [rapx options] -- [cargo check options]\n\nRAPx Options:\n\nApplication:\n    -F or -uaf      use-after-free/double free detection.\n    -M or -mleak    memory leakage detection.\n    -O or -opt      automatically detect code optimization chances.\n    -I or -infer    (under development) infer the safety properties required by unsafe APIs.\n    -V or -verify   (under development) verify if the safety requirements of unsafe API are satisfied.\n\nAnalysis:\n    -alias          perform alias analysis (meet-over-paths by default)\n    -adg            generate API dependency graphs\n    -audit          (under development) generate unsafe code audit units\n    -callgraph      generate callgraphs\n    -dataflow       generate dataflow graphs\n    -ownedheap      analyze if the type holds a piece of memory on heap\n    -range          perform range analysis\n```\n\nIf RAPx gets stuck after executing `cargo clean`, try manually downloading metadata dependencies by running `cargo metadata`. \n\nRAPx supports the following environment variables (values are case insensitive):\n\n| var             | default when absent | one of these values | description                  |\n|-----------------|---------------------|---------------------|------------------------------|\n| `RAP_LOG`       | info                | debug, info, warn   | verbosity of logging         |\n| `RAP_CLEAN`     | true                | true, false         | run cargo clean before check |\n| `RAP_RECURSIVE` | none                | none, shallow, deep | scope of packages to check   |\n\nFor `RAP_RECURSIVE`:\n* none: check for current folder\n* shallow: check for current workpace members\n* deep: check for all workspaces from current folder\n \nNOTE: rapx will enter each member folder to do the check.\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArtisan-Lab%2FRAPx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FArtisan-Lab%2FRAPx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FArtisan-Lab%2FRAPx/lists"}