rust-analyzerVSCode 扩展,因为它似乎是 Rust 最好的扩展(截至 2022 年)。我的 VSCode 的“settings.json”中有以下两个条目:
{
"rust-analyzer.checkOnSave.command": "clippy",
"[rust]": {
"editor.formatOnSave": true,
},
}
Run Code Online (Sandbox Code Playgroud)
clippy(linter)在按 Ctrl + s 保存文件时自动运行。rustfmt(格式化程序)在按 Ctrl + s 保存文件时自动运行。除了这两件事之外,我还想cargo fix在按 Ctrl + s 保存文件时自动运行,因为这样做会自动清理未使用的导入。
我怎样才能做到这一点?
(我希望自动清理未使用的导入,就像我想要自动格式化程序一样。手动删除未使用的导入非常乏味,完全浪费我的时间,就像手动添加适当数量的制表符或空格一样。 )
Clippy 有一个--fix选项,可以自动应用建议的修复。因此,您所需要做的就是更改保存时检查命令。但是,您需要两个参数clippy和--fix,为此您不能使用rust-analyzer.check.command并且必须覆盖完整命令:
{
"rust-analyzer.check.overrideCommand": [
"cargo",
"clippy",
"--fix",
"--workspace",
"--message-format=json",
"--all-targets",
"--allow-dirty"
],
}
Run Code Online (Sandbox Code Playgroud)
但请注意,它将应用所有自动应用的建议,而不仅仅是删除未使用的导入。
所有这些标志都是 rust-analyzer 自动添加到的rust-analyzer.check.command,但是当您使用时,rust-analyzer.check.overrideCommand您必须自己指定它们。这是它们的简短描述(文档有更多详细信息):
--workspace- 将命令应用于 Cargo 工作区中的所有成员,而不仅仅是一个包。--message-format=json- 发出 JSON 作为响应而不是人类可读的输出,以便 rust-analyzer 可以分析响应并显示错误。--all-targets- 检查所有内容,即二进制文件、库、示例、测试和基准。--allow-dirty- 即使工作区发生变化也能修复。| 归档时间: |
|
| 查看次数: |
3852 次 |
| 最近记录: |