mcpField
F
fix-errors

fix-errors

github.com/warpdotdev開発63628.6k 回インストール1 週間前に更新
リポジトリ

fix-errors について

Warp の Rust 開発で、コンパイル、Lint、フォーマット、WASM、テストの失敗を診断して修正するスキルです。対象を絞った修正を重視し、明示的な依頼がない限り広範な事前チェックを避けます。

主な機能

  1. 01Rust のコンパイルエラーへの対処
  2. 02Clippy とフォーマット問題の修正
  3. 03WASM 固有の失敗への対処
  4. 04対象を絞ったテストとチェック
  5. 05明示的な依頼時のみ全事前チェックを実行

活用シーン

  1. 01失敗した Rust ビルドの修正
  2. 02Clippy 警告やフォーマット違反の調査
  3. 03特定テストの失敗を検証

インストール

コマンドをコピーしてターミナルで実行します。

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

インストール後、Claude Code で/fix-errorsを入力して読み込まれたか確認します。

詳細

fix-errors

warp の Rust コードベースにおけるコンパイルエラー、リントの問題、テストの失敗を修正します。

概要

このスキルは、開発中によく発生する次のような問題の解決に役立ちます。

  • コンパイルエラー(未使用のインポート、型の不一致など)
  • リントの失敗(clippy の警告)
  • フォーマット違反
  • WASM 固有のエラー
  • テストの失敗

報告された失敗は、目的に合った最小限のコマンドで修正してください。対象を絞った修正を、ワークスペース全体の検証の繰り返しに広げないでください。

フル Presubmit

ユーザー、タスク、または承認済みの仕様で明示的に要求されている場合に限り、フル presubmit を実行してください。

./script/presubmit

このコマンドはフォーマットチェック、リント、すべてのテストを実行します。デフォルトの実装ワークフローよりも意図的に対象範囲が広く、コストも高くなっています。

個別のチェック

特定の問題をデバッグする場合は、チェックを個別に実行してください。

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 が必要な場合は、.clone() の代わりに .as_str() を使用する
  • 参照が必要な場合は、&value を使用する
  • &str が渡されていて String が必要な場合は、.to_string() を使用する
構造体フィールドの変更

構造体のフィールドが追加または削除された場合は、その構造体を構築または分解しているすべての箇所を更新します。

  • 構造体の初期化
  • パターンマッチ(match、if let)
  • 分解代入
関数シグネチャの変更

関数に新しいパラメーターが追加された場合は、すべての呼び出し箇所を更新して新しい引数を渡します。

  • bool パラメーターの場合:状況に応じて true または false を渡す
  • Option<T> パラメーターの場合:デフォルトとして None、必要に応じて Some(value) を渡す
列挙型バリアントの変更

新しい列挙型バリアントを追加した場合は、網羅的な match 文を更新します。

  • 適切な処理を行う新しい match アームを追加する
  • 類似するバリアントの実装パターンを踏襲する
不正なトレイト実装

誤った型を返す、またはトレイト境界を満たさないトレイト実装を修正します。

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

ベストプラクティス

修正する前に:

  • エラーメッセージ全体を読み、根本原因を把握します
  • 複数のエラーが関連しているか確認します(1つ修正することで、ほかのエラーも解消される場合があります)
  • トレイト/型のエラーでは、期待される型と実際の型を理解しているか確認します
  • WASM のエラーでは、コードを local_fs の背後でゲートする必要があるか確認します

修正時:

  • 複数の問題がある場合は、一度に1種類のエラーを修正します
  • コンパイラーエラーの解決に役立つ場合は、適用可能な最小範囲で cargo check を実行します。関連するコード変更がないのに、広範囲なチェックを繰り返さないでください
  • WASM のエラーでは、修正を確認するために WASM clippy を実行します
  • 複雑な変更の場合は、修正後に関連するテストを実行します

修正後:

  • 関連する cargo nextest テストを実行し、合格するまでコードを修正します
  • 該当する Clippy の実行コマンドを実行して指摘事項を修正します。修正によって動作が大きく変わる場合に限り、影響を受けるテストを再実行します
  • ほかのコード変更がすべて完了した後に、./script/format を1回実行します
  • 明示的に求められていない限り、フォーマット後にテストや Clippy を再実行したり、フルの presubmit を追加したりしないでください
  • フォーマットの失敗だけを修正し、動作に関わるコード変更がない場合は、フォーマッターのみを再実行します

コメント