8 个版本

0.5.1 2021年3月4日
0.5.0 2020年5月18日
0.4.0 2020年4月29日
0.3.2 2020年4月17日
0.1.1 2020年3月26日

#342Cargo 插件

每月 36 次下载

MIT/Apache

43KB
782

Cargo dephell

cargo dephell

Cargo dephell 是一个分析 Rust 包或 Rust 工作区导入的第三方依赖的工具。它使用 guppy 解析依赖项,使用 geiger 查找不安全代码,使用 loc 计算代码行数。Cargo dephell 强烈倾向于 libra 代码库(在我们有工作区时,我们不会在 workspace 中列出不包含在内的内部包,我们对依赖项的 Rust 版本也不是很关心,等等。)

用法

安装

cargo install --git https://github.com/mimoo/cargo-dephell

确保您已经构建了您的包或工作区。

只需在相关的 Cargo.toml 上运行程序,并将结果输出到 HTML 文件

cargo run -- --manifest-path ./Cargo.toml -o analysis_results.html

请注意,您可能需要一个个人访问令牌来查询 Github API。您可以通过以下步骤轻松获取一个:

转到您的 github 设置

github settings

转到 开发者设置

github dev settings

转到 个人访问令牌 页面,然后点击 生成新令牌 按钮

github personal access token

一旦生成,只需

  • 给它一个名字
  • 不要勾选任何框
  • 生成令牌

有了它后,将其作为参数传递

cargo run -- --manifest-path ./Cargo.toml -o analysis_results.html --github-token <username>:<token>

例如

cargo run -- --manifest-path ./Cargo.toml -o analysis_results.html --github-token mimoo:3902jfoiewjf130fjeowijfw

限制

请记住,这是一种尽力而为的方式来评估第三方依赖,这是由于以下原因之一(我们在这里记录了这些原因)

  • 依赖项导入的传递依赖项不是功能相关的,这至少是误导性的(这应该很快得到修复)。
  • “代码行数”指标通常不准确,因为它包括包文件夹中的所有文件。
  • “Rust 代码行数”指标通常不准确,因为它包括包文件夹中的所有 .rs 文件,并且对于每个文件,它包括每个功能、测试等。
  • 如果导入了一个依赖的多个版本,计算结果将基于我们遇到的第一个依赖。这是误导性的,因为版本可能会改变仓库、代码行数、它们导入的依赖项等。

路线图

如果您想帮忙

  1. 检查给定仓库上的代码是否与在crates.io上上传的代码相同
  2. 添加一个AUDIT.toml文件来跟踪谁审核了哪个仓库的哪个SHA-1提交。
  3. 使用dot(和d3)显示依赖图。
  4. 添加过去12个月内提交者的数量
  5. 添加crates的审核(来自https://github.com/RustSec/cargo-audit/blob/master/src/auditor.rs#L4
  6. 添加-sys/_sys crates的数量

依赖项

~44–60MB
~1M SLoC