如何正确构建Rust Clippy分支并在任意Cargo项目中运行?
问题描述
我Fork了Clippy仓库到clippy-clone文件夹,修改了clippy_lints/no_panics.rs等文件调整lint提示信息。执行cargo build后生成了cargo-clippy.exe和clippy-driver.exe,在Clippy目录内运行target\debug\cargo-clippy能正常显示修改后的提示,但在同级的其他项目目录执行..\clippy-clone\target\debug\cargo-clippy时出现错误:
PS C:\Users\sibling-dir> ..\clippy-clone\target\debug\cargo-clippy error: failed to run `rustc` to learn about target-specific information Caused by: process didn't exit successfully: `C:\Users\clippy-clone\target\debug\clippy-driver.exe rustc - --crate-name ___ --print=file-names --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit code: 0xc0000135, STATUS_DLL_NOT_FOUND)
需要知道如何正确构建该Clippy分支,让它能像官方Clippy一样在任意Cargo项目目录运行。
解决方法
错误原因是Windows下clippy-driver.exe依赖的动态链接库(DLL)不在当前搜索路径里——这些DLL默认生成在clippy-clone/target/debug/deps目录,跨目录运行时无法被找到。以下是三种可行的解决方式:
方法1:全局安装自定义Clippy(推荐)
这是最接近官方Clippy使用体验的方式:
- 进入
clippy-clone目录 - 执行命令:
这个命令会把cargo install --path . --forcecargo-clippy和所有依赖的DLL安装到Cargo全局二进制目录(通常是%USERPROFILE%\.cargo\bin,该目录默认在系统PATH里) - 之后在任意Cargo项目目录直接运行
cargo clippy,就能使用你修改后的版本
方法2:手动复制依赖DLL到二进制目录
如果你不想全局安装,可手动处理依赖:
- 打开
clippy-clone/target/debug/deps目录,找到所有和Clippy、Rust编译器相关的DLL文件(比如文件名包含clippy_driver、rustc、rustc_*的文件) - 将这些DLL复制到
clippy-clone/target/debug目录下(和cargo-clippy.exe、clippy-driver.exe放在同一层级) - 此时再跨目录运行
..\clippy-clone\target\debug\cargo-clippy就能正常工作
方法3:临时通过cargo run指定目标项目(测试用)
如果只是临时测试修改效果,不需要移动文件:
- 留在
clippy-clone目录,执行命令:
把cargo run --bin cargo-clippy -- --manifest-path ../sibling-dir/Cargo.toml../sibling-dir/Cargo.toml替换成你要检查的项目的Cargo.toml路径即可
内容的提问来源于stack exchange,提问作者The Coding Wombat
相关产品推荐
相关产品推荐

