Cargo deny安装指路

本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你

简介

cargo deny 是一个 Rust 工具,用于检查项目依赖项的许可证、安全性和其他合规性问题。在 Rust CI(持续集成)中,cargo deny 扮演着重要角色:

  • **许可证检查:**确保项目使用的所有依赖项的许可证都符合项目的许可政策。
  • **安全漏洞扫描:**检查依赖项是否存在已知的安全漏洞。
  • **依赖项合规性:**验证依赖项是否符合项目的其他要求,如版本限制或来源限制。
  • **禁用特定依赖项:**允许明确禁止使用某些依赖项。

在 CI 流程中,cargo deny 通常作为一个检查步骤运行,以确保项目在构建和部署之前满足所有合规性要求。这有助于维护项目的质量、安全性和法律合规性。

一句话:cargo deny 让你合法合规放心使用第三方依赖

使用

shell 复制代码
cargo install --locked cargo-deny && cargo deny init && cargo deny check

常见错误

使用 cargo-deny 报错 failed to open advisory database

shell 复制代码
   Installed package `cargo-deny v0.16.1` (executable `cargo-deny.exe`)
PS E:\Rust\easy-publish> cargo deny check
2024-11-11 02:07:34 [ERROR] failed to fetch advisory database https://github.com/RustSec/advisory-db: An IO error occurred when talking to the server: error sending request for url (https://github.com/RustSec/advisory-db/info/refs?service=git-upload-pack)

方案一: 可以尝试:

  1. 删除 ~/.cargo/advisory-db/ 目录,然后使用 cargo deny fetch / cargo deny check 重新下载它。多试几次?

  2. 在 deny.toml 配置中的 git 地址修改为 gitee 上的镜像地址:https://gitee.com/tyr-rust-bootcamp-mirror/advisory-db.git

  3. 删掉 deny.toml,执行 cargo deny init 重新生成一个,然后按照你的需要修改。

  4. 检查你的网络,想办法~

方案二:可以尝试通过运行:cargo deny check advisories 解决

升级最新版本,大量 this key has been removed

解决办法:

  1. 先删除原项目下的 deny.toml 配置文件
  2. 在项目根目录下运行命令行cargo deny init 重新生成一份新版本 deny.toml 文件
  3. 在 deny.toml 中找到 allow 然后将原来 allow 中许可证,类似如下代码,拷贝到新 deny.toml 中即可
toml 复制代码
allow = [
    "MIT",
    "Apache-2.0",
    "Apache-2.0 WITH LLVM-exception",
    "Unicode-DFS-2016",
    "MPL-2.0",
    "BSD-2-Clause",
    "BSD-3-Clause",
    "ISC",
    "CC0-1.0",
    "OpenSSL",
]
  1. 运行cargo deny check重新检测一波,是否正常
相关推荐
mit6.8242 小时前
[实现Rpc] 通信类抽象层 | function | using | 解耦合设计思想
c++·网络协议·rpc
laimaxgg2 小时前
Qt常用控件之单选按钮QRadioButton
开发语言·c++·qt·ui·qt5
ox00805 小时前
C++ 设计模式-命令模式
c++·设计模式·命令模式
Blasit5 小时前
C++ Qt建立一个HTTP服务器
服务器·开发语言·c++·qt·http
..过云雨5 小时前
04.类和对象(下)(初始化列表、static静态成员、友元friend[类外函数使用类私有成员]、内部类、匿名对象等)
开发语言·c++
刃神太酷啦5 小时前
树(数据结构·)
数据结构·c++·蓝桥杯c++组
清水加冰6 小时前
【算法精练】背包问题(01背包问题)
c++·算法
Asthenia04126 小时前
如何在项目中集成GC日志输出与高效分析?一篇开发者必读的实践指南
后端
码界筑梦坊6 小时前
基于Flask的第七次人口普查数据分析系统的设计与实现
后端·python·信息可视化·flask·毕业设计
独泪了无痕7 小时前
MySQL查询优化-distinct
后端·mysql·性能优化