mcpField
F
fix-errors

fix-errors

github.com/warpdotdev开发63628.6k 次安装1 周前更新
代码仓库

关于 fix-errors

用于 Warp Rust 开发的技能,可诊断并修复编译、Lint、格式、WASM 和测试失败。它强调针对性修复,除非明确要求,否则不运行范围较大的完整预提交检查。

主要功能

  1. 01处理 Rust 编译错误
  2. 02修复 Clippy 和格式问题
  3. 03处理 WASM 特定故障
  4. 04运行针对性测试和检查
  5. 05仅在明确要求时运行完整预提交

适用场景

  1. 01修复失败的 Rust 构建
  2. 02排查 Clippy 警告或格式问题
  3. 03验证特定测试故障

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/warpdotdev/common-skills --skill fix-errors

安装后在 Claude Code 中输入/fix-errors确认已加载。

详细介绍

修复错误

修复 warp Rust 代码库中的编译错误、Lint 问题和测试失败。

概述

此技能可帮助解决开发过程中遇到的常见问题,包括:

  • 编译错误(未使用的导入、类型不匹配等)
  • Lint 失败(Clippy 警告)
  • 格式违规
  • WASM 特定错误
  • 测试失败

使用范围最小且有效的命令修复已报告的问题。不要将有针对性的修复变成反复进行全工作区验证。

完整预提交检查

仅当用户、任务或已批准的规范明确要求时,才运行完整预提交检查:

./script/presubmit

此命令会运行格式检查、Lint 和所有测试。与默认实现工作流相比,其检查范围有意设置得更广,开销也更大。

单项检查

调试特定问题时,分别运行各项检查:

Rust 格式检查:

cargo fmt -- --check

Clippy(整个工作区):

cargo clippy --workspace --all-targets --tests -- -D warnings

WASM Clippy:

cargo clippy --target wasm32-unknown-unknown --profile release-wasm-debug_assertions --no-deps

Objective-C/C/C++ 格式检查:

./script/run-clang-format.py -r --extensions 'c,h,cpp,m' ./crates/warpui/src/ ./app/src/

所有测试:

cargo nextest run --no-fail-fast --workspace --exclude command-signatures-v2
cargo nextest run -p warp_completer --features v2

文档测试:

cargo test --doc

运行特定测试

单个包:

cargo nextest run -p <package_name>

按测试名称筛选:

cargo nextest run -E 'test(<substring>)'

使用筛选条件指定包:

cargo nextest run -p <package_name> -E 'test(<substring>)'

显示输出(不捕获):

cargo nextest run -p <package> --nocapture

常见错误类型

未使用的导入

移除编译器指出的未使用 use 语句。

未使用的常量

移除已定义但从未使用的常量。

未知导入

为未定义的类型添加正确的 use 语句。搜索代码库以找到正确的模块路径。

类型不匹配

更新函数调用,使其传入正确类型的参数。常见修复方式:

  • 需要 &str 时,使用 .as_str() 而不是 .clone()
  • 需要引用时,使用 &value
  • 需要 String 但传入了 &str 时,使用 .to_string()
结构体字段变更

结构体新增或移除字段时,更新所有构造或解构该结构体的位置:

  • 结构体初始化
  • 模式匹配(match、if let)
  • 解构赋值
函数签名变更

函数新增参数时,更新所有调用位置,传入新参数:

  • 对于 bool 参数:根据上下文传入 true 或 false
  • 对于 Option<T> 参数:默认传入 None,或在需要时传入 Some(value)
枚举变体变更

新增枚举变体时,更新穷尽式 match 语句:

  • 添加带有适当处理逻辑的新 match 分支
  • 参照类似变体的实现方式
Trait 实现不正确

修复返回类型错误或不满足 Trait 约束的 Trait 实现。

WASM 特定错误

WASM 构建(wasm32-unknown-unknown 目标)不支持文件系统操作。使用文件系统 API 的代码必须由 local_fs 功能标志控制。

常见 WASM 错误:

  • 仅在非 WASM 构建中使用的代码出现死代码警告
  • 仅在启用 local_fs 时才相关的未使用代码
  • 需要访问文件系统的测试

修复方法:

使用 local_fs 控制测试:

#[test]
#[cfg(feature = "local_fs")]
fn test_find_git_repo_with_worktree() {
    // Test that uses filesystem operations
}

对于仅在启用 local_fs 时使用的类型,有条件地允许死代码:

#[cfg_attr(not(feature = "local_fs"), allow(dead_code))]
#[derive(Clone, EnumDiscriminants, Serialize)]
pub enum ExampleType {
    // Variants only used when local_fs is enabled
    Variant1,
    Variant2,
    Variant3,
}

运行以下命令可发现 WASM 错误:

cargo clippy --target wasm32-unknown-unknown --profile release-wasm-debug_assertions --no-deps

最佳实践

修复前:

  • 阅读完整的错误消息,了解根本原因
  • 检查多个错误是否彼此相关(修复一个错误可能会解决其他错误)
  • 对于 trait/类型错误,请确认你理解预期类型与实际类型的差异
  • 对于 WASM 错误,请检查代码是否需要置于 local_fs 后的条件编译中

修复时:

  • 如果存在多个问题,一次修复一种错误
  • 在有助于解决编译器错误时,运行最小范围的 cargo check;如果代码没有相关改动,不要重复运行大范围检查
  • 对于 WASM 错误,运行 WASM clippy 验证修复
  • 对于复杂改动,修复后运行相关测试

修复后:

  • 运行相关的 cargo nextest 测试,并持续修复代码,直到测试通过
  • 运行适用的 Clippy 命令并修复其发现的问题;只有在修复实质性地改变行为时,才重新运行受影响的测试
  • 完成所有其他代码改动后,运行一次 ./script/format
  • 格式化后不要重新运行测试或 Clippy,也不要添加完整的 presubmit 运行,除非明确要求
  • 如果只修复了格式问题且没有改动行为代码,只需重新运行格式化工具

评论

支持 Markdown