Skip to content

improvement: 未実装のイベント定数を削除 (#6529)#6894

Open
ttokoro20240902 wants to merge 4 commits into
4.4from
feature/6529-remove-unused-events
Open

improvement: 未実装のイベント定数を削除 (#6529)#6894
ttokoro20240902 wants to merge 4 commits into
4.4from
feature/6529-remove-unused-events

Conversation

@ttokoro20240902

@ttokoro20240902 ttokoro20240902 commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

概要(Overview・Refs Issue)

Closes #6529

EccubeEvents に定義されている未使用イベント定数を削除します。dispatch されておらず、購読側からも参照されない完全な dead 定数が対象です。

本 PR は 2 段階で構成されます。

1. Issue 本文記載の ProductClassController 向け 6 定数

ADMIN_PRODUCT_PRODUCT_CLASS_INDEX_INITIALIZE / _INDEX_CLASSES
ADMIN_PRODUCT_PRODUCT_CLASS_EDIT_INITIALIZE / _EDIT_COMPLETE / _EDIT_UPDATE / _EDIT_DELETE

2. 追加調査で洗い出した 46 定数(#6529 コメント参照)

EccubeEvents.php の全定数について、コードベース全体(src/ / app/(Plugin・Customize 含む)/ tests/ / html/)で「定数名参照」「イベント文字列値参照」の両方を検索し、参照 0 件・dispatch 実績 0 件を確認したもの。

分類 件数 主な背景
ADMIN 系 16 ADMIM タイポ定数、Ajax 化・画面統合で使われなくなった残骸
FRONT_CART 系 13 3.x→4.x のカート処理書き換えで dispatch が消えた残骸
FRONT_SHOPPING 系 11 旧購入フロー(confirm / delivery / payment / index)系
FRONT_PRODUCT 系 5 商品一覧・詳細系の残骸
FRONT_MYPAGE 系 1 FRONT_MYPAGE_MYPAGE_DELETE_INITIALIZE

合計 6 + 46 = 52 定数を削除します。

方針(Policy)

  • これらの定数はいずれも dispatch() 実績がなく、イベントとして発火されていません。定数名 / イベント文字列値の両面でリポジトリ全体を検索しても定義箇所以外の参照は 0 件でした。
  • セクションのコメントヘッダ(/** Admin/Xxx/YyyController */)および各アクションのインラインコメント(// index 等)は、同ファイルの既存記法(FileController セクションが定数ゼロでもコメントを残している)に合わせて残置しました。
  • ADMIN_ORDER_CSV_EXPORT_SHIPPING について補足: OrderController::exportCsv() は受注 CSV・出荷 CSV のどちらのエクスポートでも ADMIN_ORDER_CSV_EXPORT_ORDER の 1 イベントのみを dispatch しており、_SHIPPING は配線されていない dead 定数でした。削除に合わせて、列追加を購読で行う際の案内(CSV 関連の開発者向けドキュメント)が誤ったイベント名を指していた箇所も修正しています。

実装に関する補足(Appendix)

  • 定数を参照している箇所が無いため、機能・挙動への影響はありません。
  • QA(Docker 上で実行): php-cs-fixer / phpstan(level 6) / rector … いずれも指摘なし。
  • 影響確認テスト(各ファイル単独実行):
    • CartControllerTest … OK (5 tests)
    • Admin/Order/OrderControllerTest … OK (18 tests)
    • Admin/Product/ProductClassControllerTest … OK (15 tests, 38 assertions)

⚠️ スコープ変更のお知らせ: approve 後に、Issue コメントで洗い出した追加 46 定数の削除をこの PR に取り込みました(6 → 52 定数)。再レビューをお願いします。

マイナーバージョン互換性保持のための制限事項チェックリスト

  • 既存機能の仕様変更はありません
  • フックポイントの呼び出しタイミングの変更はありません
    • ※ 未発火(dead)のフックポイント定数の削除です。dispatch されていないためこれらを購読していたプラグインは元々コールされておらず、実挙動の互換性影響はありません。ただし定数を名前で参照しているコードがあれば undefined constant になります(未実装のイベントハンドラの削除 #6529 の受入方針に基づく削除)。
  • フックポイントのパラメータの削除・データ型の変更はありません
  • twigファイルに渡しているパラメータの削除・データ型の変更はありません
  • Serviceクラスの公開関数の、引数の削除・データ型の変更はありません
  • 入出力ファイル(CSVなど)のフォーマット変更はありません

Summary by CodeRabbit

  • Chores
    • 管理画面・フロント画面で利用されるイベント定数の一部を整理し、公開されているイベント一覧を簡潔にしました。
  • Documentation
    • 「CSV 項目を増やす(プラグイン / カスタマイズ)」のイベント説明を更新し、受注・出荷 CSV で共通して扱われるイベントを明確化。出荷別の個別言及は整理しました。

ProductClassController 向けに定義されている以下のイベント定数を削除する。
これらは dispatch されておらず、定数名・イベント文字列値ともにコア/テスト/
プラグインのいずれからも参照されていない完全な未使用コード。

- ADMIN_PRODUCT_PRODUCT_CLASS_INDEX_INITIALIZE
- ADMIN_PRODUCT_PRODUCT_CLASS_INDEX_CLASSES
- ADMIN_PRODUCT_PRODUCT_CLASS_EDIT_INITIALIZE
- ADMIN_PRODUCT_PRODUCT_CLASS_EDIT_COMPLETE
- ADMIN_PRODUCT_PRODUCT_CLASS_EDIT_UPDATE
- ADMIN_PRODUCT_PRODUCT_CLASS_EDIT_DELETE

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d7b5baa1-cb10-470b-8562-00101fad0180

📥 Commits

Reviewing files that changed from the base of the PR and between 4cbce4c and 42806b1.

📒 Files selected for processing (1)
  • src/Eccube/Event/EccubeEvents.php
💤 Files with no reviewable changes (1)
  • src/Eccube/Event/EccubeEvents.php

📝 Walkthrough

Walkthrough

`EccubeEvents.php``から未実装または整理対象の管理画面・フロント画面イベント定数が削除され、CSVエクスポートのイベント説明が共通イベント利用に更新されました。

Changes

イベント定数とCSV説明の整理

Layer / File(s) Summary
管理画面イベント定数の削除
src/Eccube/Event/EccubeEvents.php
管理、レイアウト、注文、出荷、商品、税ルール、メンバー関連のイベント定数が削除されました。
フロント画面イベント定数の削除
src/Eccube/Event/EccubeEvents.php
マイページ、カート、商品、ショッピング関連のイベント定数が削除されました。
CSVイベント説明の更新
.claude/skills/csv/SKILL.md
受注・出荷CSVエクスポートで ADMIN_ORDER_CSV_EXPORT_ORDER を共通利用する説明に更新されました。

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: nanasess

Poem

定数が消えて月明かり
見出しだけが風に揺れ
CSVうさぎは旗を持ち
共通イベントぴょんと跳ぶ
静かな整理、おつかれさま 🐇

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning Issue #6529の範囲を超えて、他コントローラの多数の定数削除とCSVドキュメント修正も含まれています。 変更を#6529対象の6定数削除に限定するか、追加削除と文書修正は別Issueへ分離してください。
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed タイトルは主要変更である未実装イベント定数の削除を簡潔に示しており、Issue番号も付いていて分かりやすい。
Linked Issues check ✅ Passed Issue #6529で指定されたProductClassControllerの6つの未使用イベント定数が削除されており、要件を満たしています。
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/6529-remove-unused-events

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Jul 6, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 75.76%. Comparing base (c29e601) to head (42806b1).
⚠️ Report is 1 commits behind head on 4.4.

Additional details and impacted files
@@            Coverage Diff             @@
##              4.4    #6894      +/-   ##
==========================================
- Coverage   75.79%   75.76%   -0.04%     
==========================================
  Files         546      546              
  Lines       27136    27136              
==========================================
- Hits        20569    20559      -10     
- Misses       6567     6577      +10     
Flag Coverage Δ
Unit 75.76% <ø> (-0.04%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@nanasess

nanasess commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

@ttokoro20240902 @dotani1111
他にも未使用イベント定数が大量にありそうです。今回削除するかどうかは要検討
#6529 (comment)

ttokoro20240902 and others added 3 commits July 15, 2026 17:40
#6529 の追加調査で洗い出した、dispatch されておらず購読側からも
参照されない完全な dead 定数 46 件を削除する。

- ADMIN 系 16 件(ADMIM タイポ定数・旧管理画面の残骸を含む)
- FRONT_CART 系 13 件(3.x→4.x のカート処理書き換えで dispatch が消えた残骸)
- FRONT_SHOPPING 系 11 件(旧購入フローの confirm/delivery/payment 系)
- FRONT_PRODUCT 系 5 件 / FRONT_MYPAGE 系 1 件

リポジトリ全体(src/app(Plugin・Customize)/tests/html)で定数名参照・
イベント文字列値参照の両方を検索し、いずれも 0 件であることを確認済み。
dispatch されていないため実挙動の互換性影響はない。
セクション見出しコメントは既存記法(CsvImportController 等)に合わせ残置。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ADMIN_ORDER_CSV_EXPORT_SHIPPING の削除に追従。
OrderController::exportCsv() は受注 CSV・出荷 CSV のどちらのエクスポート
でも ADMIN_ORDER_CSV_EXPORT_ORDER の 1 イベントのみを dispatch しており、
_SHIPPING は配線されていない dead 定数だった。列追加を購読で行う際の
案内が誤ったイベント名を指していたため修正する。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@nanasess nanasess left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍 追加コミット分もあわせて検証しました。

検証内容

1. 削除された46定数の残存参照 → 0件

PR head(42806b1052)の git 管理下全ファイルに対し、削除された46定数の「定数名参照」「イベント文字列値参照」の両方を検索し、いずれも 0 件であることを確認しました。4.4 からのマージで取り込まれた新規コードが削除済み定数を参照してしまう事故も発生していません。

2. 網羅性・過剰削除 → 問題なし

PR head に残る 165 定数はすべて EccubeEvents:: で参照されており、未使用定数の残りはゼロです。使用中の定数が誤って削除された形跡もありません。

3. 構文チェック → php -l パス

CSV Skill の記述修正について

ADMIN_ORDER_CSV_EXPORT_SHIPPING の削除に追従した Skill 修正は的確です。実コードでも裏取りしました。

  • OrderController::exportCsv() は受注CSV(L278 CsvType::CSV_TYPE_ORDER)・出荷CSV(L291 CsvType::CSV_TYPE_SHIPPING)の両方から呼ばれる
  • しかし内部で dispatch しているのは ADMIN_ORDER_CSV_EXPORT_ORDER のみ(L347)

つまり _SHIPPING は配線されていない dead 定数であり、Skill が存在しないイベント名を案内していた状態でした。ドキュメントを実態に合わせる修正として妥当です。

補足

4.4 マージにより FRONT_PRODUCT_DETAIL_JSON_LD(商品詳細の JSON-LD 構造化データ用フック)が 1 件増えています。本 PR の削除対象とは無関係で dispatch も配線済みのため、影響はありません。定数数は 210 → 165(46 削除 + 1 追加)となります。

BC 影響については、削除対象がいずれも dispatch されていない dead 定数のため、購読していたプラグインが存在したとしても元々コールされておらず、実挙動の互換性影響はないという整理に同意します。

ご対応ありがとうございました。

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

未実装のイベントハンドラの削除

3 participants