Cargo-Geiger

Hacker News Top 工具

摘要

cargo-geiger 是一个 Rust cargo 插件,用于列出 crate 及其依赖中不安全代码使用的统计信息,为审计提供输入。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/20 17:16

geiger-rs/cargo-geiger

来源:https://github.com/geiger-rs/cargo-geiger cargo-geiger ☢️

CI (https://github.com/geiger-rs/cargo-geiger/actions/workflows/ci.yml) unsafe forbidden (https://github.com/rust-secure-code/safety-dance/) crates.io (https://crates.io/crates/cargo-geiger) Crates.io (https://crates.io/crates/cargo-geiger)

一个列出 Rust crate 及其所有依赖中 unsafe Rust 代码使用统计信息的工具。

这个 cargo 插件最初基于另外两个项目的代码:* 和 *

安装

尝试查找并使用系统范围内安装的 OpenSSL 库:

cargo install --locked cargo-geiger

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

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

或者,可以从 GitHub releases 获取预构建的二进制发布版本 (https://github.com/geiger-rs/cargo-geiger/releases)。

用法

  1. 进入包含你想要分析的 Cargo.toml 的目录。
  2. cargo geiger

预期用途

此工具并非直接建议代码最终是否真正不安全。cargo-geiger 的目的是为审计提供统计输入,例如配合:

  • cargo-crev (https://crates.io/crates/cargo-crev)
  • safety-dance (https://github.com/rust-secure-code/safety-dance)

unsafe 的使用在某些情况下是微妙且必要的,使用它的任何动机都不在 cargo-geiger 的范围内。任何报告都需谨慎处理,这一点很重要:

  • Reddit: The Stigma around Unsafe (https://www.reddit.com/r/rust/comments/y1u068/the_stigma_around_unsafe/)
  • YouTube: Rust NYC: Jon Gjengset - Demystifying unsafe code (https://youtu.be/QAz-maaH0KM)
  • Rust-lang: WG Unsafe Code Guidelines (https://github.com/rust-lang/unsafe-code-guidelines)

输出示例

示例输出

已知问题

  • 参见问题跟踪器 (https://github.com/rust-secure-code/cargo-geiger/issues)。

库

Cargo Geiger 暴露了三个库:

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

更新日志

参见 changelog。

为什么叫这个名字?

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

相似文章

使用 Call Graph Analyzer 查找 panic

Lobsters Hottest

Tweede golf 与 Microsoft 在 Open Device Partnership 框架下合作发布了 Call Graph Analyzer(CGA),这是一款 Rust 工具,可从单态化的 MIR 中提取调用图,用于追踪已编译二进制文件中可能发生 panic 的函数,可通过 `cargo cga check` 运行。

Cargo 的调度器能否改进?

Lobsters Hottest

本文通过分析 Rust 构建任务的基准测试来研究 Cargo 调度器的行为,并探讨替代调度算法。

crates.io: 开发更新

Lobsters Hottest

最新的 crates.io 开发更新引入了用于审计依赖项的源代码查看器,开始通过本地用户名将账户与 GitHub 解耦,并为被 RustSec 标记为无人维护的 crate 添加了醒目的警告。