SuperAPI AI 工具集

risingwave-rust-analyzer

编程与开发

查看项目

更新于 10-16 09:50

技能介绍

用途:在 RisingWave 工作区中借助 rust-analyzer 获得比全量构建更快的语义反馈,用于检查、诊断与重构 Rust 代码。

使用方式:先确认分析根。默认用仓库根,以便读取 rust-toolchain(pins nightly-2025-10-10)和 .cargo/config.toml 中的 rustflags(含 +avx2、tokio_unstable 及链接器参数);仅在有意图缩小范围时可改用 crate 目录或其 Cargo.toml。然后解析目标 crate 与特性:运行 scripts/list-crate-features.sh 不带参数列出包名,带 <package> 打印 manifest 路径与特性表,使用准确包名如 risingwave_meta、risingwave_stream、risingwave_connector。

主要能力:可用 rust-analyzer diagnostics . 查看工作区诊断,unresolved-references . 查缺失符号/导入,analysis-stats . --parallel 做批量语义分析(加 -o path/to/file.rs 缩小到单文件),prime-caches . 预热缓存,search '$a.foo($b)' 结构搜索,ssr '$a.foo($b) ==>> bar($a, $b)' 结构替换,以及管道方式 parse、symbols 做语法级检查。需要悬停、跳转定义、重命名、递归宏展开或交互诊断时改用编辑器。

限制:rust-analyzer 不支持在同一个 linked project 内按 crate 配置特性矩阵;相关设置(cargo.features、cargo.noDefaultFeatures、check.features、check.noDefaultFeatures、check.overrideCommand、linkedProjects)按 linked project 或工作区生效。不同 crate 需要不同特性时,应使用更窄的根(如 src/meta)或为每个变体开独立编辑器工作区,或用 check.overrideCommand 强制 cargo check -p <package> ... --message-format=json。RisingWave 宏较多,除非有实测理由,应保持 cargo.buildScripts.enable 与 procMacro.enable 开启,否则会出现误导性的未解析引用或不完整类型;lints/Cargo.toml 设置了 package.metadata.rust-analyzer.rustc_private = true。诊断异常时,用相同特性对比 cargo check -p <package>;涉及生成代码时配合 cargo expand。未显式匹配目标 crate 与特性时,不应断言特性相关正确性。