Skip to content

Conversation

@hitode909
Copy link
Contributor

@hitode909 hitode909 commented Oct 30, 2025

$ git grep ConfigLoader | wc -l
       0

おまけ:未使用ファイルの発見方法

正規表現でuse関係を抜き出して未使用ファイルを探索することで発見しました

$ time perl script/find-unused-packages-for-perldoc-jp.pl
Processing entry point: app.psgi
Processing entry file: script/update.pl
Processing entry file: script/carton.sh
Processing entry file: script/create_year_data.pl
Processing entry file: script/carton_install.sh
Processing entry file: script/scrape_cpan.pl
Processing entry file: script/find_unused_packages.pl
Processing entry file: script/create_docs.json.sh
Processing entry file: script/create_recent.pl
Processing entry file: script/scss.pl
Processing entry file: script/generate_heavy_diff.pl
Processing entry file: script/update_deployment.sh
Processing entry file: script/maintenance/pod-test.pl
Iteration 1: 9 reachable packages (+4)
Iteration 2: 12 reachable packages (+3)
Iteration 3: 12 reachable packages (+0)
lib/PJP/ConfigLoader.pm
Found 1 unused packages
perl script/find-unused-packages-for-perldoc-jp.pl  0.01s user 0.01s system 58% cpu 0.045 total

- 15年前に追加されたもの
- リポジトリ内のどこからも参照されていない
- 現在の構成ではconfigはAmon2::Config::Simpleを使って読み込んでいるようです
  - https://github.com/perldoc-jp/perldoc.jp/blob/0409e2db36892409a3ff12b8fa5158ae40835da3/lib/PJP.pm#L11-L12

```
$ git grep ConfigLoader | wc -l
       0
```
@kfly8
Copy link
Contributor

kfly8 commented Oct 30, 2025

👍️

(Ready for reviewではないですが、先行してコメント)
この正規表現で検出できなかった時、使用しているにも関わらず使用していないと判定するケースだと思いますが、
CI通っている(全エントリーポイントのステータスコードを期待するテストが通っている)ので大丈夫そう。
https://gist.github.com/hitode909/0cf076ffa60e026688d2d3efc38e33fc#file-find-unused-packages-for-perldoc-jp-pl-L48-L55

        # use Package
        if (/^\s*use\s+([\w:]+)/) {
            push @packages, $1;
        }
        # use parent qw/Package1 Package2/
        if (/^\s*use\s+parent\s+qw[\/\(]([^\/\)]+)[\)\/]/) {
            push @packages, split /\s+/, $1;
        }
        # use parent 'Package'
        if (/^\s*use\s+parent\s+['"]([^'"]+)['"]/) {
            push @packages, $1;
        }
        # Package->method
        if (/([\w:]+)->\w+/) {
            push @packages, $1 if $1 =~ /::/;
        }
    }

@hitode909 hitode909 marked this pull request as ready for review October 31, 2025 01:08
@hitode909
Copy link
Contributor Author

@kfly8 ありがとうございます!おっしゃるとおりで、動的にモジュールをロードしている場合など、正規表現だけでは誤検知の可能性もあります。
descriptionに、手元の動作確認結果、フレームワークの経緯確認など追記して、draftを外しましたのでご確認おねがいします。

@kfly8 kfly8 merged commit 9937c93 into perldoc-jp:master Oct 31, 2025
1 check passed
@kfly8
Copy link
Contributor

kfly8 commented Oct 31, 2025

LGTM!

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.

2 participants