Fix Errors

作者 warpdotdev2a03b403b4f8无许可证收录于 2026年10月8日更新于 2026年10月8日

Fix compilation errors, linting issues, and test failures in the warp Rust codebase. Covers presubmit checks, WASM-specific errors, and running specific tests. Use when the user hits build errors, clippy or fmt failures, test failures, or needs to run or interpret presubmit before a PR.

AI 生成的概览

指导修复 warp Rust 代码库中的编译、lint、格式化、WASM 与测试失败。

功能
该技能提供在 warp Rust 代码库中诊断并修复构建与测试失败的说明,涵盖编译错误、clippy 警告、格式违规、WASM 特有错误以及测试失败。它列出相关的 cargo、clippy、nextest、clang-format 和 presubmit 命令,并说明常见错误模式,如未使用的导入、类型不匹配、结构体字段变更、函数签名变更、枚举变体变更和 trait 实现问题。它还说明如何为 WASM 构建将依赖文件系统的代码和测试置于 local_fs 特性之后,并建议运行最小可用的命令,而不是反复进行全工作区验证。
适用场景
当开发者在 warp Rust 代码库中遇到构建错误、clippy 或 fmt 失败、测试失败或 WASM 目标错误时使用。它也用于在提交 PR 之前运行或解读 presubmit 检查。
运行要求
需要 warp Rust 代码库及其工具链:cargo、rustfmt、clippy、cargo nextest、wasm32-unknown-unknown 目标,以及仓库脚本如 ./script/presubmit、./script/format 和 ./script/run-clang-format.py。该技能本身不附带脚本,仅为说明文档。

fix-errors

Fix compilation errors, linting issues, and test failures in the warp Rust codebase.

Overview

This skill helps resolve common issues encountered during development, including:

  • Compilation errors (unused imports, type mismatches, etc.)
  • Linting failures (clippy warnings)
  • Formatting violations
  • WASM-specific errors
  • Test failures

Fix the reported failure with the narrowest useful command. Do not turn a targeted repair into repeated full-workspace validation.

Full Presubmit

Run the full presubmit only when the user, task, or approved spec explicitly requires it:

bash
./script/presubmit

This runs formatting checks, linting, and all tests. It is intentionally broader and more expensive than the default implementation workflow.

Individual Checks

Run checks separately when debugging specific issues:

Rust formatting:

bash
cargo fmt -- --check

Clippy (full workspace):

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

WASM Clippy:

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

Objective-C/C/C++ formatting:

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

All tests:

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

Doc tests:

bash
cargo test --doc

Running Specific Tests

Single package:

bash
cargo nextest run -p <package_name>

Filter by test name:

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

Specific package with filter:

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

With output (no capture):

bash
cargo nextest run -p <package> --nocapture

Common Error Types

Unused Imports

Remove unused use statements identified by the compiler.

Unused Constants

Remove constants that are defined but never used.

Unknown Imports

Add the correct use statement for undefined types. Search the codebase to find the correct module path.

Type Mismatches

Update function calls to pass arguments of the correct type. Common fixes:

  • Use .as_str() instead of .clone() when a &str is expected
  • Use &value when a reference is needed
  • Use .to_string() when String is expected but &str is provided

Struct Field Changes

When a struct adds/removes fields, update all places where it's constructed or destructured:

  • Struct initialization
  • Pattern matching (match, if let)
  • Destructuring assignments

Function Signature Changes

When a function adds a new parameter, update all call sites to provide the new argument:

  • For bool params: pass true or false based on context
  • For Option<T> params: pass None as default or Some(value) if needed

Enum Variant Changes

When adding a new enum variant, update exhaustive match statements:

  • Add a new match arm with appropriate handling
  • Mirror the implementation pattern of similar variants

Incorrect Trait Implementation

Fix trait implementations that return the wrong type or don't satisfy trait bounds.

WASM-Specific Errors

WASM builds (wasm32-unknown-unknown target) don't support filesystem operations. Code that uses filesystem APIs must be gated behind the local_fs feature flag.

Common WASM errors:

  • Dead code warnings for code only used in non-WASM builds
  • Unused code that's only relevant when local_fs is available
  • Tests that require filesystem access

Fixes:

Gate tests behind local_fs:

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

Conditionally allow dead code for types only used when local_fs is enabled:

rust
#[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 errors are discovered by running:

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

Best Practices

Before fixing:

  • Read the full error message to understand the root cause
  • Check if multiple errors are related (fixing one may resolve others)
  • For trait/type errors, verify you understand the expected vs actual types
  • For WASM errors, check if code needs to be gated behind local_fs

When fixing:

  • Fix one error type at a time when there are multiple issues
  • Run the smallest applicable cargo check when it helps resolve compiler errors; do not repeat broad checks without a relevant code change
  • For WASM errors, run WASM clippy to verify the fix
  • For complex changes, run relevant tests after fixing

After fixing:

  • Run the relevant cargo nextest tests and fix the code until they pass
  • Run the applicable Clippy invocation and fix its findings; return to affected tests only when a fix materially changes behavior
  • Run ./script/format once after all other code changes are complete
  • Do not rerun tests or Clippy after formatting, and do not add a full presubmit run, unless explicitly required
  • If you only fixed a formatting failure and made no behavioral code change, rerun only the formatter

来源与署名

来源:warpdotdev/common-skills位于.agents/skills/fix-errors提交2a03b40

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架