Skip to Content

/moai clean

デッドコードの特定と安全な削除コマンドです。静的解析と使用グラフ分析により、未使用コードを見つけて安全に削除します。

一行要約: /moai clean は「コードダイエットツール」です。使用されていない関数、変数、import、ファイルを自動で見つけて安全に削除します。

スラッシュコマンド: Claude Code で /moai:clean と入力すると、このコマンドを直接実行できます。/moai だけ入力すると、利用可能なすべてのサブコマンドの一覧が表示されます。

概要

プロジェクトが成長すると、使用されなくなったコードが蓄積されます。未使用の import、呼び出されない関数、参照されない型がコードベースを複雑にします。/moai clean は静的解析でデッドコードを検出し、テスト検証を経て安全に削除します。

使用方法

# 基本的な使用方法 > /moai clean # プレビュー (変更なしで確認のみ) > /moai clean --dry # 確実なデッドコードのみ削除 > /moai clean --safe-only # 特定のファイル/ディレクトリのみ分析 > /moai clean --file src/auth/ # 特定のコードタイプのみ分析 > /moai clean --type functions

サポートされるフラグ

フラグ説明
--dry (または --dry-run)削除せずに分析結果のみ表示/moai clean --dry
--safe-only確実なデッドコードのみ削除 (不確実な項目をスキップ)/moai clean --safe-only
--file PATH特定のファイルまたはディレクトリのみ分析/moai clean --file src/utils/
--type TYPE特定のコードタイプのみ分析/moai clean --type imports
--aggressive低使用コードも含める (1 つの呼び出し元もデッドコードの場合)/moai clean --aggressive

—type フラグオプション

タイプ説明
functions呼び出されない関数/メソッド
imports参照されない import 文
types使用されない型定義
variables宣言後に使用されない変数
filesどこからも import されないファイル

—dry フラグ

実際のコードを変更せずに、どの項目がデッドコードとして分類されるかを事前に確認します:

> /moai clean --dry

削除前に分析結果を確認したい場合に便利です。

実行プロセス

/moai clean は 6 段階で実行されます。

フェーズ 1: 静的解析スキャン

言語別のツールを使用してデッドコード候補を検出します:

言語分析ツール検出対象
Gogo vet, staticcheck, deadcode未使用変数、関数、型
Pythonvulture, autoflakeデッドコード、未使用 import
TypeScript/JavaScriptts-prune, ESLint no-unused-vars未使用 export、変数
Rustcargo clippy, cargo udepsデッドコード警告、未使用依存関係

フェーズ 2: 使用グラフ分析

静的解析結果を検証するための使用グラフを構築します:

  • 各候補についてコードベース全体で参照を検索
  • 間接的な使用を確認 (インターフェース、リフレクション、動的ディスパッチ)
  • テスト専用の使用を確認 (テストのみで使用、プロダクションコードでは未使用)

フェーズ 3: 分類

分類説明削除の安全性
確実なデッドコードコードベースのどこにも参照なし安全
テスト専用テストファイルのみで使用概ね安全
推定デッドコード低信頼度 (動的使用の可能性)注意が必要
誤検知実際に使用中 (リフレクション等)削除不可

フェーズ 4: 安全な削除

依存関係グラフの逆順で削除します (リーフノードから):

  • 関連コードをグループで削除 (関数 + プライベートヘルパー)
  • @MX:ANCHOR タグのあるコードは明示的な承認なしに削除しない

フェーズ 5: テスト検証

削除後にテストスイートを実行して回帰がないことを検証します。テストが失敗した場合、該当の削除をロールバックします。

フェーズ 6: レポート

削除結果、保持された項目、テスト結果、コードベースの削減量を表示します。

エージェント委任チェーン

エージェント役割主要タスク
expert-refactoring分析と削除静的解析、使用グラフ、安全な削除
expert-testing検証テストスイート実行、回帰確認
MoAI オーケストレーター調整ユーザー承認、@MX タグクリーンアップ

よくある質問

Q: デッドコードを誤って削除した場合は?

Git で元に戻せます。MoAI は依存関係の逆順で削除し、テストを実行するため、問題が発生した場合は自動でロールバックされます。

Q: —aggressive はいつ使用しますか?

呼び出し元が 1 つで、その呼び出し元もデッドコードの場合を含めたい時に使用します。大規模リファクタリング後のクリーンアップに有用です。

Q: リフレクションで使用されるコードも削除されますか?

--safe-only モードでは「確実なデッドコード」のみ削除されます。リフレクションや動的ディスパッチで使用されるコードは「誤検知」として保持されます。

関連ドキュメント

Last updated on