#unused #projects #show #detect #analysis #multi-crate #dead-code

app warnalyzer

显示多crate Rust项目的未使用代码

2个不稳定版本

使用旧的Rust 2015

0.2.0 2021年5月20日
0.1.0 2019年6月7日

#1086 in 开发工具

MIT/Apache

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