递归检查不需要的通配符依赖项

Check for unwanted wildcard dependencies recursively

我有一个库,想确保我的依赖树中的 none 个依赖项使用通配符依赖项。通配符依赖是邪恶的:(

我可以在命令行中使用 cargo 递归检查吗?或者我可以在 Cargo.lock?

中手动检查吗?

编辑:虽然 crates.io 拒绝自 Rust 1.6 发布以来具有通配符依赖项的板条箱(approximately,感谢 Steve Klabnik),但仍然有旧板条箱在 crates.iodo 具有通配符依赖性。我可以上传我自己的箱子,它依赖于这样一个旧箱子。因此,我的板条箱也间接依赖于通配符依赖项。这是我要避免和检查的。

从几个月前开始,Cargo 不再允许通配符依赖项。所以你不需要自己做这个。

这是一个 crates.io 功能,不是 Rust 或 Cargo 功能,因此它与这些工具的任何特定版本无关。更新发生在 around the time we released Rust 1.6

我写了一个小脚本,它接受 crates.io-index 并读取所有包的当前信息。如果一个包对另一个包具有直接的通配符依赖性,则会以 crate-name -> wildcard-dependency, another-one.

格式打印一行

995 current packages with wildcard dependencies个。该列表是详尽无遗的,只会在包更新时减少长度。

您可以手动检查 Cargo.lock 中的所有依赖项,并检查列表中是否提到了它们。请注意,您必须使用最新版本的依赖项以确保您不依赖于具有通配符依赖项的过时包。