Test::LocalFunctions というモジュールを書いてました
色々と[私仕]事が重なっていて忘れておりました。
Test::LocalFunctions をリリースしておりました。
https://metacpan.org/module/Test::LocalFunctions
https://github.com/moznion/Test--LocalFunctions
これはなに?
モジュールファイル内 (MANIFEST ファイルに記載されているpm ファイル群) に、使われていないローカル関数が存在していないかをテストします。
ここで言う「ローカル関数」というのは、関数名がアンダースコア(‘_’) から
始まる関数の事を指しています。
モチベーション
gfx さんのTest::Vars が便利で、「これのローカル関数版がほしいなー」と思って作りました。
そこそこ規模の大きいモジュールになってくると、使われてないローカル関数が
存在する場合がしばしばあるんですが、それを人力で検出・判断するのはだるいので、
そこら辺は自動的にやってしまおう! というのが動機です。
静的解析 *1 のフェーズでやっちゃえる事はやっちゃった方が良いという思想に基いています。
なかみ
本当はB 系のモジュールでゴリゴリモリモリッと書くのが正しいし、何より早いのは理解しているんですけど、ちょっと今の僕のパワーでは無理だったので、
PPI を使ってゆるふわな感じで実装しています。
PPI でバッツンバッツンぶった切って、解析に不要な部分は予めフィルタしてから
処理を行う、という感じで実装しています。
ソースを読みましょう。
読みましたね?
ゆるふわでしょう。
大丈夫かこれ。
ゆくゆくはB とかで再実装したい感じはあります。
*1:と言うのだろうか?