7 个版本 (重大更新)
| 0.15.0 | 2020年10月21日 |
|---|---|
| 0.14.0 | 2019年12月19日 |
| 0.13.0 | 2019年10月24日 |
| 0.12.0 | 2019年8月23日 |
| 0.10.1 | 2019年4月16日 |
#505 in 编程语言
每月下载量 21 次
2MB
40K SLoC
C2Rust 代码重构工具
这是一个针对 Rust 程序的代码重构工具,旨在从自动生成的 Rust 代码中移除不安全性。
用法
c2rust refactor 命令行用法如下
c2rust refactor [flags] <command> [command args] -- <input file> [rustc flags]
c2rust refactor --help 描述了 c2rust refactor 的标志。
有关命令列表、完整用法和描述,请参阅 命令文档(在线手册)。多个命令可以通过单个分号分隔,例如 c2rust refactor cmd1 arg1 ; cmd2 arg2。 (注意分号需要转义,以防止它被 shell 解释。)
c2rust refactor 需要为要重构的程序提供 rustc 命令行参数,以便它可以使用 rustc 加载和类型检查源代码。对于使用 cargo 构建的项目,将 --cargo 标志传递给 c2rust refactor,它将自动从 cargo 获取正确的参数。否则,您必须在 c2rust refactor 命令行中提供 rustc 参数,在 -- 分隔符之后。
标记
一些命令需要用户对某些 AST 节点进行“标记”,以便它能够操作。例如,rename_struct 命令需要用户标记要重命名的结构的声明。
每个标记将一个“标签”与一个特定的 AST 节点(通过其 NodeId 标识)相关联。标签用于区分不同类型的标记,并且单个节点可以具有任何数量的具有不同标签的标记。例如,当运行将函数转换为 inherent impl 中的方法的 func_to_method 命令时,用户必须使用 target 标签标记要移动的函数,并必须使用 dest 标签标记目标 impl。带有其他标签的节点将被忽略。命令所识别的标签集合在命令的文档中描述;默认情况下,大多数使用标记的命令在 target 上操作。
标记节点的最灵活的方法是使用 select 命令。有关详细信息,请参阅命令文档和 src/select/mod.rs。请注意,标记在 c2rust refactor 调用之间不会保留,因此您通常希望运行 select 后跟上述提到的 ; 分隔符以及感兴趣的命令。
依赖项
~37–49MB
~1M SLoC