#unsafe #cargo-subcommand #cargo #plugin

bin+lib cargo-geiger

检测 Rust 包及其依赖项中 unsafe Rust 的使用

31 个版本

0.11.7 2024 年 2 月 1 日
0.11.6 2023 年 3 月 31 日
0.11.5 2023 年 1 月 9 日
0.11.4 2022 年 8 月 1 日
0.4.0 2018 年 7 月 23 日

#231Cargo 插件

Download history 70/week @ 2024-04-14 54/week @ 2024-04-21 99/week @ 2024-04-28 63/week @ 2024-05-05 124/week @ 2024-05-12 61/week @ 2024-05-19 85/week @ 2024-05-26 84/week @ 2024-06-02 66/week @ 2024-06-09 101/week @ 2024-06-16 93/week @ 2024-06-23 57/week @ 2024-06-30 61/week @ 2024-07-07 84/week @ 2024-07-14 82/week @ 2024-07-21 79/week @ 2024-07-28

每月 310 次下载

Apache-2.0/MIT

255KB
6.5K SLoC

cargo-geiger ☢️

CI unsafe forbidden crates.io Crates.io

一个工具,列出与 Rust 包及其所有依赖项中 unsafe Rust 代码使用相关的统计数据。

此 cargo 插件最初基于两个其他项目的代码

安装

尝试查找和使用全局安装的 OpenSSL 库

cargo install --locked cargo-geiger

或者,构建并将 OpenSSL 静态链接到 cargo-geiger 可执行文件中

cargo install --locked cargo-geiger --features vendored-openssl

或者,可以从 GitHub 发布版 获取预构建的二进制文件。

用法

  1. 导航到您要分析的同目录中的 Cargo.toml
  2. cargogeiger

预期用途

此工具并非旨在直接建议代码是否最终确实不安全。

cargo-geiger 的目的是为审计提供统计输入,例如使用

unsafe 的使用具有细微差别,在有些情况下是必要的,任何使用它的动机都不在 cargo-geiger 的范围内。

重要的是要小心处理任何报告

输出示例

Example output

已知问题

Cargo Geiger 暴露了三个库

  • cargo-geiger - 未版本化且高度不稳定的库,暴露了 cargo-geiger 二进制的内部。因此,此库中包含的任何函数都可能发生变化。
  • cargo-geiger-serde - 包含可序列化报告类型的库
  • geiger - 包含一些解耦的 cargo 组件的库,被 cargo-geiger 使用

变更日志

查看 变更日志

为什么叫这个名字?

https://en.wikipedia.org/wiki/Geiger_counter

在某些情况下,像电离辐射这样的不安全代码是不可避免的,并且应该被安全地封装!

依赖项

~66MB
~1.5M SLoC