Skip to content

Conversation

@neotaso
Copy link
Contributor

@neotaso neotaso commented Jan 12, 2026

概要

requireのないSuperClassの読み込みに関するRubocopのカスタムcop。
bcdice-jsではSuperClassに対応するrequireが存在しない場合、エラーとなる。
また、現時点で検出されているゲームシステムでのrequireの追加も本変更で行っている。

現状

SuperClassで実装されているGameSystemで、requireが無いものは現状bcdice-jsでエラーが出る状態。
(bcdice-jsを採用しているCCFOLIAでBlackJacket_Koreanなどは読み込めなかった。)
CIでもエラーが発生している
https://github.com/bcdice/bcdice-js/actions/runs/20894099834/job/60051533024?pr=73

現状はアリアンロッド 韓国版のように適宜修正のコミットを実施している状態。
d2af4a0

対応

RubocopのカスタムCopで対応する
GameSystem以下で実装されたClassを確認し、SuperClassがBaseや組み込み以外のもののrequireを確認し、対応するrequireが存在しなければoffenseを出す。

auto correctorも実装したので、rubocop -a で自動的にrequire追加まで行われる。

Rubocopのアラートサンプル (本コミットの該当部分修正前の検知)
https://gist.github.com/neotaso/5da1e7f62c88df682b744066d096fe1b

備考

auto correctで、追加するrequireは最後のrequireの後に入れているので、内容次第では不自然な順番になるかもしれない

Class名をBCDice/GameSystemDependencyにしているが、Lint/BCDiceGameSystemDependencyでも良いかもしれない

Rubocopにはrequire_toolsのcopがすでに存在するが、requireの中を再帰的に見ることはこちらもやってないので、これを導入するとbcdice/base.rbをrequireしててもResultなどが検出してしまう。
https://github.com/milch/rubocop-require_tools

@ysakasin ysakasin self-requested a review January 13, 2026 01:12
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.

1 participant