1 个不稳定版本

0.1.0 2021 年 8 月 11 日

#313构建工具

每月 28 次下载

Apache-2.0 许可证

710KB
4.5K SLoC

Depdive

depdive on crates.io Documentation (latest release) License

Depdive 是一个 Rust 依赖分析工具,它提供各种分析指标,以帮助:

安装

  1. 您可以将 depdive 作为 Rust 包集成到项目中,以提供对所提供分析的单独访问。
  2. 您还可以通过以下命令使用 CLI 工具:cargo install --git https://github.com/diem/whackadep --branch main depdive
  3. 对于依赖项更新审查,depdive 输出 Markdown 格式的字符串。因此,您可以将 depdive 集成到 CI 工具中,以自动获取关于更新依赖项的 depdive 评论。请参阅 此示例

用法

  1. 依赖项更新审查:您可以为给定仓库提供两个提交,或者为在两个不同提交中检出的仓库提供两个路径,以便比较两个提交之间的升级依赖项,并获取 Markdown 格式的 depdive 审查报告。请查看库根目录中的函数 run_update_analyzer_from_repo_commitsrun_update_analyzer_from_paths。当用作 CLI 工具时,您可以运行 depdive update-review commits <repo-path> <commit_a> <commit_b>depdive update-review paths <path_a> <path_b>

  2. 依赖监控指标:您可以提供您的Cargo项目的路径,以json格式获取依赖监控指标。在库根目录中检查DependencyAnalyzerDependencyGraphAnalyzer的实现。当用作CLI工具时,您可以运行depdive dep-review package-metrics <path>depdive dep-review code-metrics <path>以分别获取使用和活动指标以及代码和安全性分析指标。注意,代码指标使用(cargo-geiger)https://github.com/rust-secure-code/cargo-geiger,一次只能运行一次。

依赖更新审查

Depdive为Rust依赖更新提供以下分析

  1. 已知警告的存在
  2. 构建脚本文件的变化
  3. 不安全文件的变化
  4. 如果crates.io上托管代码与git源代码不同
  5. 版本差异摘要,更改文件列表。

Markdown注释如下所示,其中包含i)四个标准的复选框表格,以及ii)点击即可查看的详细信息。image

依赖监控指标

Depdive为依赖选择/监控提供以下分析

  1. 使用指标:Crates.io下载量,依赖项;GitHub星级,订阅者,分支。
  2. 活动指标:自上次提交以来的天数,最后打开的问题;过去六个月内的提交数,问题数;带有bugsecurity标签的开放问题数量。
  3. 代码分析:总行数(LOC),通过其自身依赖项拉入的总LOC;通过唯一依赖项拉入的总LOC - 仅通过此依赖项间接引入的依赖项;如果包有构建脚本;其依赖项中有多少具有构建脚本。
  4. 安全性分析:Depdive使用(cargo-geiger)https://github.com/rust-secure-code/cargo-geiger提供Rust包中不安全代码的数量,以及通过依赖项拉入的不安全代码总数。

为什么关心依赖更新的安全性审查?

每次您进行依赖更新时,本质上都会将新代码拉入您的代码库,从而为安全漏洞提供通道。在手动审查依赖更新时,可以有一些常规检查可以自动化。depdive的目标是通过执行此类自动化检查来帮助您进行依赖更新审查。请告诉我们您认为哪些其他分析可能有所帮助。

已知问题

  1. 依赖更新审查显示在更新过程中构建脚本是否发生变化。然而,我们只检查包是否包含构建脚本以及该构建脚本的路径是否存在于版本差异中。然而,构建脚本可以通过这种方式调用外部模块并执行外部代码。然而,我们没有检查构建脚本可能执行的外部代码是否已更改。

依赖项

~33–50MB
~1M SLoC