2个不稳定版本
使用旧的Rust 2015
0.2.0 | 2021年5月20日 |
---|---|
0.1.0 | 2019年6月7日 |
#1086 in 开发工具
21KB
453 行
Warnalyzer
从多crate Rust项目中移除未使用代码。
rustc的dead_code
代码检查家族仅限于一个crate,因此无法判断某些公共API是否在多crate项目中使用。
该工具,warnalyzer,为这样的多crate项目提供了未使用代码检测功能。
用法
- 导航到您要分析的项目,并运行
RUSTFLAGS="-Z save-analysis" cargo +nightly check
。 - 此命令将保存分析数据到类似
target/debug/deps/save-analysis/cratename-longhash.json
的路径。 - 然后,从warnalyzer仓库中,运行
cargo run <path-to-json>
- 它将列出任何它认为未使用的项目。
- 请确保您选择了leaf crate的json文件。使用任何其他json文件都不会给出未使用代码的全列表。
要求
需要nightly rust,因为 save-analysis 是不稳定的。尽管名字叫warnalyzer,但它 尚未使用rust-analyzer。
已知问题
还处于早期阶段。该工具存在一些问题。
误报
以下是我已知的误报
其他错误
- 枚举变体不被识别(已在代码中规避,但希望修复 rustc 的错误)
- 在枚举结构变体中的使用不被视为此类(上游错误)
- for 循环:循环的
expr
部分for pat in expr {}
被视为没有使用其包含的表达式。 - 没有像 rustc 的
dead_code
检查这样的递归,所以如果某些东西只被未使用代码使用,它不会在应该报告时被报告。 - 不支持多叶crate树(尚不支持)。某些项目可能生成多个二进制文件。几乎每个项目都有测试。一些函数可能只被某些根使用。
成就案例
许可证
本crate在MIT许可证和Apache许可证(版本2.0)的条款下分发,由您选择。
有关详细信息,请参阅LICENSE。
您贡献的许可证
除非您明确说明,否则根据Apache-2.0许可证定义,任何有意提交以包含在您的工作中的贡献,都将以上述方式双重许可,不附加任何其他条款或条件。
依赖项
~5–14MB
~176K SLoC