cargo-deny est un utilitaire Rust conçu pour analyser les dépendances d'un projet en termes de licences, de vulnérabilités et d'autres problèmes de conformité. Dans les pipelines d'intégration continue (CI) Rust, cargo-deny joue un rôle crucial :
- Vérification des licences : S'assurer que toutes les licences des dépendances utilisées respectent la politique de licence du projet.
- Scan de vulnérabilités : Détecter les vulnérabilités connues dans les dépendences.
- Conformité des dépendances : Valider que les dépendances respectent d'autres exigences du projet, comme les restrictions de version ou de source.
- Exclusion de dépendances spécifiques : Permettre d'interdire explicitement l'utilisation de certaines dépendances.
Dans le flux CI, cargo-deny est généralement exécuté comme une étape de vérification pour garantir que le projet respecte toutes les exigences de conformité avant la construction et le déploiement. Cela aide à maintenir la qualité, la sécurité et la conformité légale du projet.
En résumé : cargo-deny vous permet d'utiliser en toute sécurité et conformité les dépendances tierces
Installation
Site officiel : Cargo deny
Commandes d'installation :
cargo install --locked cargo-deny && cargo deny init && cargo deny check
Erreurs courantes
Erreur "failed to open advisory database" lors de l'utilisation de cargo-deny
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)
Solution 1 : Vous pouvez essayer :
- Supprimer le répertoire ~/.cargo/advisory-db/, puis utiliser cargo deny fetch / cargo deny check pour le télécharger à nouveau. Essayez plusieurs fois ?
- Modifier l'adresse Git dans la configuration deny.toml pour utiliser le miroir sur Gitee : https://gitee.com/tyr-rust-bootcamp-mirror/advisory-db.git
- Supprimer deny.toml, exécuter cargo deny init pour en générer un nouveau, puis le modifier selon vos besoins.
- Vérifiez votre connexion réseau et trouvez une solution.
Solution 2 : Vous pouvez également essayer en exécutant : cargo deny check advisories
Après mise à jour vers la dernière version, erreur "this key has been removed"
Solution :
- Supprimer d'abord le fichier de configuration deny.toml du projet
- Exécuter la commande
cargo deny initdans le répertoire racine du projet pour générer un nouveau fichier deny.toml - Dans deny.toml, trouver la section
allowpuis copier les licences de l'ancien fichier allow dans le nouveau deny.toml, comme ceci :
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",
]
- Exécuter
cargo deny checkpour vérifier si tout fonctionne correctement