RPL-Toolchain/RPL
GitHub: RPL-Toolchain/RPL
RPL 是一个将规则定义与检测逻辑解耦的 Rust 代码静态检查工具,通过 DSL 描述代码模式并利用自定义编译器工具链进行语义级别的模式匹配。
Stars: 18 | Forks: 7
# RPL
这是 RPL 的主要源代码仓库。它包含了 RPL 的工具链和文档。
## 什么是 RPL?
RPL 是一个 Rust linter,它将规则的定义与检测逻辑分离开来。
具体来说,RPL 由两个主要组件组成:
- 一种领域特定语言 (DSL),允许开发者对代码模式进行建模/定义,
- 一个用于检测这些模式实例的检测引擎。
RPL 的工具链是 Rust 编译器的自定义配置,能够准确识别与现有模式表现出语义等价性的代码实例。
## 快速开始
1. 克隆仓库并进入目录:`git clone https://github.com/RPL-Toolchain/RPL.git && cd RPL`
2. 将 RPL 作为 cargo 子命令安装:`cargo install --path .`
3. 在你的 Rust 项目上运行 RPL 分析:
- 使用基于内联 MIR 的内置 RPL 模式定义进行检查:
RPL_PATS=/path/to/RPL/docs/patterns-pest cargo +nightly-2025-02-14 rpl
- 使用基于 MIR 的内置 RPL 模式定义进行检查:
RUSTFLAGS="-Zinline-mir=false" RPL_PATS=/path/to/RPL/docs/patterns-pest cargo +nightly-2025-02-14 rpl
或者
RPL_PATS=/path/to/RPL/docs/patterns-pest cargo +nightly-2025-02-14 rpl -- -Zinline-mir=false
为了方便起见,你也可以存储环境变量 `RPL_PATS`。
如果不设置 `RPL_PATS`,将使用内置的 RPL 模式定义。
提示:你可以使用 `cargo rpl -- -W help` 查看所有可用的 lint。
## 编写模式文档
你可以为任何 `.rpl` 文件生成 Markdown 文档,使用以下命令:
```
cargo rpl doc path/to/pattern.rpl
```
有关编写规范,请参阅 [`docs/development/rpldoc-authoring.md`](./docs/development/rpldoc-authoring.md)(`//!` 用于文件级文档,`///` 用于条目,以及同级的示例文件夹)。
## RPL 书籍
请访问[此网站](https://rpl-toolchain.github.io/rpl-book/)查看 RPL 书籍(编写中)。
## 获取帮助
如果你有任何问题,欢迎提 issue 或通过电子邮件 (stuuupidcat@163.com) 联系我们。
## 贡献
有关与贡献相关的说明,请参阅[此文档](./CONTRIBUTING.md)。
## 许可证
本项目基于 [MPL-2.0](./LICENSE) 许可证授权。
标签:Android, DSL, Rust, 云安全监控, 云计算, 可视化界面, 编译器工具链, 网络流量审计, 规则引擎, 通知系统, 静态分析