有没有一种方法可以在Cargo.toml中声明我的项目只依赖于保证传递使用SafeRust的第三方crate?我是Rust的新手,Rust对我来说也是新的。我还没有机会尝试任何东西。
yjghlzjz1#
首先,每当作者提到使用不安全代码时,请查看crates.io文档。您可以通过在源代码中搜索unsafe关键字来仔细检查。然而,检查crate及其依赖项的源代码是一项繁琐的工作。名为cargo-geiger的工具提供有关crate及其所有依赖项中不安全使用的统计信息。安装后,导航到Cargo.toml文件并分析它:
unsafe
Cargo.toml
cargo geiger
字符串它将下载并扫描所有依赖项,然后将三个符号中的一个分配给一个crate:
Symbols: 🔒 = No `unsafe` usage found, declares #![forbid(unsafe_code)] ❓ = No `unsafe` usage found, missing #![forbid(unsafe_code)] ☢️ = `unsafe` usage found
型请注意,它只提供了unsafe关键字的用法。但要进行更全面的分析,请使用cargo-crev检查代码以验证包依赖项的可信性和安全漏洞。此外,如果您发现不安全的代码,您可以向safety-dance存储库报告。
一旦你检查了你的依赖项,现在是时候评估你的项目了。首先,使用clippy linter工具捕捉常见的错误:
clippy
cargo clippy
型此外,将#![forbid(unsafe_code)]宏添加到您的文件中,以传达禁止不安全代码块的信息。我不知道您是否可以声明您的软件包(保证)使用安全的Rust。但您可以在删除所有unsafe代码后在README.md文件中显示一个徽章:
#![forbid(unsafe_code)]
README.md
[![unsafe forbidden](https://img.shields.io/badge/unsafe-forbidden-success.svg)](https://github.com/rust-secure-code/safety-dance/)
型它会帮助其他人发现你的板条箱是安全的。请注意,Rust中没有100%的内存安全,因为标准库使用(非常谨慎)unsafe块。有时这是不可避免的。在任何情况下,您都应该始终尝试实现安全代码,即使您会损失一点性能增益。
更多阅读:
1条答案
按热度按时间yjghlzjz1#
解析重复
首先,每当作者提到使用不安全代码时,请查看crates.io文档。您可以通过在源代码中搜索
unsafe
关键字来仔细检查。然而,检查crate及其依赖项的源代码是一项繁琐的工作。名为cargo-geiger的工具提供有关crate及其所有依赖项中不安全使用的统计信息。安装后,导航到
Cargo.toml
文件并分析它:字符串
它将下载并扫描所有依赖项,然后将三个符号中的一个分配给一个crate:
型
请注意,它只提供了
unsafe
关键字的用法。但要进行更全面的分析,请使用cargo-crev检查代码以验证包依赖项的可信性和安全漏洞。此外,如果您发现不安全的代码,您可以向safety-dance存储库报告。分析项目
一旦你检查了你的依赖项,现在是时候评估你的项目了。首先,使用
clippy
linter工具捕捉常见的错误:型
此外,将
#![forbid(unsafe_code)]
宏添加到您的文件中,以传达禁止不安全代码块的信息。我不知道您是否可以声明您的软件包(保证)使用安全的Rust。但您可以在删除所有unsafe
代码后在README.md
文件中显示一个徽章:型
它会帮助其他人发现你的板条箱是安全的。
请注意,Rust中没有100%的内存安全,因为标准库使用(非常谨慎)
unsafe
块。有时这是不可避免的。在任何情况下,您都应该始终尝试实现安全代码,即使您会损失一点性能增益。更多阅读: