Skip to content

Instantly share code, notes, and snippets.

@smeghead
Created March 25, 2025 11:51
Show Gist options
  • Save smeghead/55564477e88f746fa9a31253f808442d to your computer and use it in GitHub Desktop.
Save smeghead/55564477e88f746fa9a31253f808442d to your computer and use it in GitHub Desktop.
CIでローカル変数酷使度をチェック可能にする

修正方針: CheckCommand の追加

ご提供いただいた情報に基づき、CheckCommand を新たに追加する方針を具体化します。

修正が必要な主な箇所

  1. CheckCommand クラスの作成
  • CommandInterface を実装する新しい CheckCommand クラスを作成
  • --threshold=<値> オプションを処理する機能を実装
  • 指定した閾値を超えるローカル変数酷使度が見つかった場合、エラーコード 2 で終了
  1. CommandFactory クラスの修正
  • check コマンドを認識して適切に CheckCommand インスタンスを生成するよう拡張
  • --threshold パラメータをパースする処理を追加
  1. 実装の詳細
  • CheckCommand は内部的に ScopesCommand と同様のロジックを使用してファイル解析
  • レポート出力として、使用した閾値、結果(成功/失敗)、閾値を超えたスコープの一覧を表示
  • 既存のコードベースを最大限に再利用

具体的な実装プラン

  1. 新しい CheckCommand クラス
  • 基本的な構造は ScopesCommand に類似
  • 閾値を保持するプロパティと、閾値チェックロジックを追加
  • 結果に応じた終了コードを返す機能を実装
  1. CommandFactory の修正
  • 以下のような使用方法をサポート:
php bin/php-variable-hard-usage check --threshold=1000 <path1> [<path2> ...]
  • check コマンドの引数解析と --threshold パラメータの抽出
  1. レポート出力フォーマット
  • チェックに使用した閾値の表示
  • 全体の結果(成功/失敗)の表示
  • 閾値を超えたスコープの一覧表示(ファイルパス、関数名、行番号、変数酷使度など)

この実装により、CI環境で閾値チェックを自動化し、指定した閾値を超える変数酷使度が検出された場合にビルドを失敗させることができるようになります。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment