fix-errors について
Warp の Rust 開発で、コンパイル、Lint、フォーマット、WASM、テストの失敗を診断して修正するスキルです。対象を絞った修正を重視し、明示的な依頼がない限り広範な事前チェックを避けます。
主な機能
- 01Rust のコンパイルエラーへの対処
- 02Clippy とフォーマット問題の修正
- 03WASM 固有の失敗への対処
- 04対象を絞ったテストとチェック
- 05明示的な依頼時のみ全事前チェックを実行
活用シーン
- 01失敗した Rust ビルドの修正
- 02Clippy 警告やフォーマット違反の調査
- 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 を追加したりしないでください
- フォーマットの失敗だけを修正し、動作に関わるコード変更がない場合は、フォーマッターのみを再実行します