mcpField
F
find-mismatch

find-mismatch

github.com/utarnテスト・品質4973 回インストール8 週間前に更新
リポジトリ

find-mismatch について

fallow による静的解析とチェックリストを使い、リポジトリ全体の実行時バグを探すコードレビュー用スキルです。スタイル、パフォーマンス、ドキュメント、テストに関する提案は対象外です。

主な機能

  1. 01fallow による静的解析
  2. 02Git の状態に基づく検出結果の絞り込み
  3. 03対象となるステージ済み項目の自動修正
  4. 04境界をまたぐ契約の確認
  5. 05非同期処理、ロジック、言語固有のバグ確認
  6. 06指定形式での検出結果報告

活用シーン

  1. 01ステージ済み JavaScript または TypeScript 変更のレビュー
  2. 02API の引数や戻り値フィールドの不一致検出
  3. 03null アクセスや非同期処理のエラー確認
  4. 04実行時バグの構造化レポート作成

インストール

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

$npx skills add https://github.com/utarn/engineer-skills --skill find-mismatch

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

同梱ファイルagents/openai.yaml

詳細

不一致の検出

fallow を使用して静的解析を実行し、提案された問題を修正します。すべてのファイルを確認してください。実行時の失敗やバグだけに注目して修正してください。スタイル、フォーマット、パフォーマンスに関する提案、ドキュメントやテスト、「X の使用を検討してください」といった内容は報告しないでください。

1. 手順

  1. JS/TS(事前チェック):静的解析を実行します。
    • インストール済みか確認します:fallow --version。
    • インストールされていない場合は、グローバルにインストールします:npm install -g fallow。
    • 監査を実行します:fallow audit --format json --quiet。
    • Git の状態で検出結果を絞り込みます:git diff --staged --name-only。
    • ステージ済みの場合:安全な修正を自動適用し、監査を再実行して検証します。
    • ステージされていない場合:報告のみ行い、変更は加えません。
  2. レビュー用チェックリスト:すべての変更にチェックリストを適用します。
  3. 報告:指定されたテンプレートを使用して検出結果を記載します。

2. チェックリストのカテゴリ

1. 境界をまたぐコントラクト
  • 呼び出しの不一致:RPC、HTTP、IPC、イベント名/サブジェクトが受信側と一致しているか確認します。
  • パラメーター名/型:userId と user_id、文字列と数値、フラット形式とラップ形式を確認します。
  • 戻り値の型:フィールドアクセス(result.field)が戻り値のシグネチャと一致している必要があります。
2. シリアライズとデシリアライズ
  • 大文字と小文字の形式:DB/バックエンドの snake_case と JSON/フロントエンドの camelCase を確認します。
  • オプショナル項目:受信側が必須とするフィールドが、生成側ではオプショナルになっていないか確認します。
  • 列挙型/判別子:判別子フィールド(type、kind)とバリアントが一致している必要があります。
  • Base64:二重エンコードの有無を確認します。
3. ロジックのバグ
  • 二重カウント:ループ/分岐の中と外の両方でカウンターがインクリメントされていないか確認します。
  • オフバイワン:インデックスやページネーションの境界(page <= total と page < total)を確認します。
  • 条件:冗長/デッドフラグ、到達不能な文、シャドーイングされた変数を確認します。
4. プロパティとメソッドへのアクセス
  • Null 参照:Null/長さのチェックなしに、メソッド呼び出しや配列インデックスへのアクセス(items[0].name)を行っていないか確認します。
  • オプショナルチェーン:チェックの途中で止めていないか確認します(例:user?.address.street は address が null の場合もクラッシュします)。
  • this コンテキスト:クラス内のコールバックのバインディングを確認します。
5. 非同期処理と並行性
  • 競合状態:共有可変状態や、調整されていない並列ファイルシステムアクセスを確認します。
  • await の欠落:Promise が無視され、エラーが通知されない状態になっていないか確認します。
  • リーク:エラー経路でファイル/DB/ネットワーク接続が閉じられていない状態を確認します。
6. CSS とスタイリング
  • HSL 変数:Tailwind v4 では、関数形式(hsl(0 0% 100%))ではなく、生の HSL コンポーネント(0 0% 100%)を使用すると機能しません(v3 とは異なります)。
  • インラインテーマ:循環参照やセレクターの不一致(クラスと data-theme)を確認します。
7. プレースホルダーとスタブコード
  • 未使用の宣言/ファイル/依存関係、TODO コメント、空の catch ブロックを確認します。

3. 言語固有の落とし穴

  • Python:実在しないライブラリメソッド(pandas、numpy、requests)、同期処理と asyncio の混同、可変デフォルト引数(def f(x=[]))、インデントによる意図しない処理の欠落。
  • JS/TS:バックエンド(Node)とフロントエンド(Browser)の API の混同、any の多用、型のみのインポートの不一致、バレルファイルの誤検出(本番では未使用だが、テスト/ライブラリでは使用されているエクスポート)。
  • C++:生ポインターとスマートポインターの混同、標準ライブラリヘッダー #include の欠落、初期化されていない変数、バッファーオーバーフロー。
  • Rust:借用チェッカーのライフタイムに関する過度な複雑化、None/Err に対する unwrap()、.await の中断点をまたぐロック。
  • Java / .NET:実在しないアノテーション/属性、LINQ の N+1 クエリ、Entity Framework のモデルスナップショットのずれ/マイグレーションの欠落(Entities/ 配下のモデル変更と Migrations/ を照合します)。
  • Go:WaitGroup/Channel のデッドロック、JSON における非公開の構造体フィールド、ループ内の defer、マップへの並行アクセス。
  • PHP:緩い型比較(== と ===)、配列とオブジェクトへのアクセスの混同、未定義キー。

4. Fallow の検出項目のマッピングと修正

Fallow の種類チェックリストのカテゴリ自動修正アクション
unused_exportsプレースホルダーとスタブ(ローカルで使用されている場合は)export を削除するか、宣言全体を削除します。
unused_filesプレースホルダーとスタブファイルを削除します(先に動的インポートを確認してください)。
unused_dependenciesプレースホルダーとスタブpackage.json から依存関係を削除します。
circular_dependencies境界間手動レビューに委ねます(初期化時のバグの原因になります)。
complexity/duplicationロジックのバグ手動レビューに委ねます。

5. 出力形式

## Review Summary ヘッダーを含めます(JS/TS プロジェクトの場合のみ)。

## Review Summary
- **Manual review bugs found**: N
- **Fallow auto-fixed**: N findings (staged files only)
- **Fallow non-auto-fixable**: N findings
- **Fallow verdict**: pass / fail

個別の検出項目の形式(Fallow に由来するバグには [fallow] タグを追加します)。

## Bug #1
- **File**: <path>:<line>
- **Category**: <category>
- **What's wrong**: <description>
- **Runtime effect**: <effect>
- **Fix**: <code>

コメント